Mercurial > projects > dang
annotate src/basic/Message.d @ 209:42e663451371
Renamed some of the actions. Declarations now have it's own action.
author | Anders Johnsen <skabet@gmail.com> |
---|---|
date | Tue, 12 Aug 2008 19:05:17 +0200 |
parents | e0551773a005 |
children | 9e9f3e7e342b |
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, |
209
42e663451371
Renamed some of the actions. Declarations now have it's own action.
Anders Johnsen <skabet@gmail.com>
parents:
207
diff
changeset
|
13 lexer.Lexer; |
206
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
14 |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
15 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
|
16 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
|
17 |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
18 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
|
19 |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
20 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
|
21 { |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
22 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
|
23 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
|
24 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
|
25 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
|
26 } |
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 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
|
29 { |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
30 public: |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
31 |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
32 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
|
33 { |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
34 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
|
35 } |
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 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
|
38 { |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
39 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
|
40 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
|
41 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
|
42 } |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
43 |
207
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
44 Message report(uint opcode, SourceRange[] ranges, SourceLocation[] locs) |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
45 { |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
46 Message m = new Message(opcode, ranges, locs, src_mgr, this); |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
47 messages ~= m; |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
48 return m; |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
49 } |
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 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
|
52 { |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
53 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
|
54 messages ~= m; |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
55 return m; |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
56 } |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
57 |
206
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
58 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
|
59 { |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
60 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
|
61 return; |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
62 |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
63 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
|
64 checkWarnings; |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
65 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
|
66 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
|
67 { |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
68 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
|
69 } |
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 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
|
72 } |
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 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
|
75 { |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
76 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
|
77 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
|
78 { |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
79 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
|
80 } |
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 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
|
84 { |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
85 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
|
86 } |
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 private: |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
89 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
|
90 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
|
91 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
|
92 } |
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 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
|
95 { |
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 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
|
98 { |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
99 this.src_mgr = src_mgr; |
207
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
100 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
|
101 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
|
102 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
|
103 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
|
104 } |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
105 |
207
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
106 this(int opcode, SourceRange[] locs, SLoc[] interests, |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
107 SourceManager src_mgr, MessageHandler msg_handler) |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
108 in |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
109 { |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
110 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
|
111 } |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
112 body |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
113 { |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
114 this.src_mgr = src_mgr; |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
115 this.locs = locs; |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
116 this.interests = interests; |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
117 args ~= Messages[opcode].message; |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
118 this.type = Messages[opcode].type; |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
119 this.msg_handler = msg_handler; |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
120 haveEnd = true; |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
121 } |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
122 |
206
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
123 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
|
124 { |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
125 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
|
126 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
|
127 |
207
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
128 SLoc location; |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
129 if (interests.length) |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
130 location = interests[0]; |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
131 else |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
132 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
|
133 |
207
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
134 int len = 0; |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
135 if(!haveEnd) |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
136 { |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
137 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
|
138 |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
139 Token t = l.next; |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
140 len = t.length; |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
141 } |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
142 // else |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
143 // 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
|
144 |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
145 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
|
146 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
|
147 else |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
148 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
|
149 |
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 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
|
152 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
|
153 marks[] = ' '; |
207
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
154 |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
155 foreach (s ; locs) |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
156 { |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
157 size_t p = src_mgr.getColumn(s.begin); |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
158 marks[p .. p + (s.end-s.begin)] = interests.length ? '~' : '^'; |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
159 } |
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 foreach (interest ; interests) |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
162 { |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
163 size_t i = src_mgr.getColumn(interest); |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
164 marks[i] = '^'; |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
165 } |
206
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
166 |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
167 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
|
168 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
|
169 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
|
170 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
|
171 |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
172 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
|
173 } |
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 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
|
176 { |
207
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
177 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
|
178 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
|
179 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
|
180 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
|
181 } |
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 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
|
184 { |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
185 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
|
186 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
|
187 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
|
188 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
|
189 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
|
190 } |
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 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
|
193 { |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
194 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
|
195 } |
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 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
|
198 { |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
199 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
|
200 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
|
201 } |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
202 |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
203 /* |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
204 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
|
205 { |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
206 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
|
207 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
|
208 } |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
209 */ |
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 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
|
212 private: |
d3c148ca429b
Major moving of files. all src now goes into src, all docs in docs.
Anders Johnsen <skabet@gmail.com>
parents:
diff
changeset
|
213 char[][] args; |
207
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
214 SourceRange[] locs; |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
215 SLoc[] interests; |
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
216 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
|
217 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
|
218 MessageHandler msg_handler; |
207
e0551773a005
Added the correct version.
Anders Johnsen <skabet@gmail.com>
parents:
206
diff
changeset
|
219 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
|
220 } |