Mercurial > projects > dang
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 |
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 } |