annotate src/basic/Message.d @ 207:e0551773a005

Added the correct version.
author Anders Johnsen <skabet@gmail.com>
date Tue, 12 Aug 2008 18:19:34 +0200
parents d3c148ca429b
children 42e663451371
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
206
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
1 module basic.Message;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
2
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
3 import tango.core.Exception,
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
4 Array = tango.core.Array,
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
5 tango.io.Stdout,
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
6 tango.text.Util;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
7
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
8 import tango.stdc.stdlib;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
9
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
10 import llvm.type;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
11
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
12 import lexer.Token,
207
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
13 lexer.Lexer,
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
14 sema.DType;
206
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
15
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
16 import basic.SourceLocation,
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
17 basic.SourceManager;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
18
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
19 public import basic.Messages;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
20
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
21 enum ExitLevel
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
22 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
23 Normal = 1,
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
24 Lexer = 2,
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
25 Parser = 3,
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
26 Semantic = 3,
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
27 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
28
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
29 class MessageHandler
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
30 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
31 public:
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
32
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
33 this(SourceManager src_mgr)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
34 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
35 this.src_mgr = src_mgr;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
36 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
37
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
38 Message report(uint opcode, SLoc location)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
39 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
40 Message m = new Message(opcode, location, src_mgr, this);
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
41 messages ~= m;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
42 return m;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
43 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
44
207
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
45 Message report(uint opcode, SourceRange[] ranges, SourceLocation[] locs)
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
46 {
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
47 Message m = new Message(opcode, ranges, locs, src_mgr, this);
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
48 messages ~= m;
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
49 return m;
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
50 }
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
51
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
52 Message report(uint opcode, SLoc location1, SLoc location2, SLoc location3 = SLoc.Invalid)
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
53 {
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
54 Message m = new Message(opcode, [SourceRange(location1, location2)][], [location3][], src_mgr, this);
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
55 messages ~= m;
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
56 return m;
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
57 }
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
58
206
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
59 void checkErrors(ExitLevel exitlevel = ExitLevel.Normal)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
60 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
61 if(messages.length == 0)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
62 return;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
63
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
64 if(warnings)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
65 checkWarnings;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
66 foreach(m ; messages)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
67 if(m.type == MessageType.Error)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
68 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
69 Stdout(m).newline;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
70 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
71
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
72 exit(exitlevel);
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
73 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
74
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
75 void checkWarnings()
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
76 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
77 foreach(m ; messages)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
78 if(m.type == MessageType.Warning)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
79 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
80 Stdout(m).newline;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
81 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
82 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
83
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
84 void showWarnings(bool value)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
85 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
86 warnings = value;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
87 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
88
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
89 private:
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
90 Message[] messages;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
91 SourceManager src_mgr;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
92 bool warnings;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
93 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
94
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
95 class Message
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
96 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
97
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
98 this(int opcode, SLoc location, SourceManager src_mgr, MessageHandler msg_handler)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
99 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
100 this.src_mgr = src_mgr;
207
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
101 this.interests ~= location;
206
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
102 args ~= Messages[opcode].message;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
103 this.type = Messages[opcode].type;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
104 this.msg_handler = msg_handler;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
105 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
106
207
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
107 this(int opcode, SourceRange[] locs, SLoc[] interests,
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
108 SourceManager src_mgr, MessageHandler msg_handler)
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
109 in
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
110 {
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
111 assert(locs.length + interests.length, "Atleast one location is requiret for a mark");
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
112 }
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
113 body
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
114 {
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
115 this.src_mgr = src_mgr;
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
116 this.locs = locs;
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
117 this.interests = interests;
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
118 args ~= Messages[opcode].message;
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
119 this.type = Messages[opcode].type;
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
120 this.msg_handler = msg_handler;
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
121 haveEnd = true;
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
122 }
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
123
206
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
124 char[] toString()
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
125 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
126 char[256] tmp = void;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
127 char[] msg = layout(tmp, args);
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
128
207
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
129 SLoc location;
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
130 if (interests.length)
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
131 location = interests[0];
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
132 else
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
133 location = locs[0].begin;
206
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
134
207
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
135 int len = 0;
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
136 if(!haveEnd)
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
137 {
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
138 Lexer l = new Lexer(interests[0], src_mgr, new MessageHandler(src_mgr));
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
139
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
140 Token t = l.next;
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
141 len = t.length;
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
142 }
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
143 // else
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
144 // len = end - location;
206
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
145
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
146 if (src_mgr.getRawData(location).length > 0)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
147 msg = src_mgr.getLocationAsString(location) ~ ": " ~ msg;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
148 else
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
149 msg = msg.dup;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
150
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
151
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
152 char[] line = src_mgr.getLine(location);
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
153 char[] marks = line.dup;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
154 marks[] = ' ';
207
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
155
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
156 foreach (s ; locs)
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
157 {
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
158 size_t p = src_mgr.getColumn(s.begin);
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
159 marks[p .. p + (s.end-s.begin)] = interests.length ? '~' : '^';
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
160 }
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
161
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
162 foreach (interest ; interests)
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
163 {
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
164 size_t i = src_mgr.getColumn(interest);
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
165 marks[i] = '^';
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
166 }
206
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
167
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
168 msg ~= "\n ";
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
169 msg ~= line;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
170 msg ~= "\n ";
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
171 msg ~= marks;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
172
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
173 return msg;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
174 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
175
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
176 Message arg(char[] s)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
177 {
207
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
178 if (args.length > 10)
206
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
179 throw new Exception("Sorry, errors only support up to 10 args");
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
180 args ~= s;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
181 return this;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
182 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
183
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
184 Message arg(char[][] s)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
185 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
186 char[] res = s[0 .. $ - 1].join(", ");
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
187 if (s.length > 1)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
188 res ~= " and ";
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
189 res ~= s[$ - 1];
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
190 return arg(res);
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
191 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
192
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
193 Message arg(char c)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
194 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
195 return arg([c]);
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
196 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
197
207
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
198 Message arg(DType[] types)
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
199 {
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
200 char[][] res;
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
201 foreach (type; types)
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
202 res ~= type.name();
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
203 return arg(res);
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
204 }
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
205
206
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
206 Message fatal(ExitLevel exitlevel = ExitLevel.Normal)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
207 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
208 msg_handler.checkErrors(exitlevel);
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
209 return this;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
210 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
211
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
212 /*
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
213 Message loc(SLoc loc)
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
214 {
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
215 location = loc;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
216 return this;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
217 }
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
218 */
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
219
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
220 MessageType type;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
221 private:
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
222 char[][] args;
207
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
223 SourceRange[] locs;
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
224 SLoc[] interests;
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
225 bool haveEnd;
206
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
226 SourceManager src_mgr;
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
227 MessageHandler msg_handler;
207
e0551773a005 Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents: 206
diff changeset
228 Token t;
206
d3c148ca429b Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff changeset
229 }