Mercurial > projects > dil
annotate trunk/src/dil/Messages.d @ 341:3ac651ea83fb
- Fix: created TemplateAliasParameter instead of TemplateTypeParameter.
- Added error message TemplateTupleParameter.
author | aziz |
---|---|
date | Wed, 22 Aug 2007 20:13:00 +0000 |
parents | 17f43b0d6106 |
children | f13d551d7c4f |
rev | line source |
---|---|
54 | 1 /++ |
2 Author: Aziz Köksal | |
249 | 3 License: GPL3 |
54 | 4 +/ |
326 | 5 module dil.Messages; |
327 | 6 import dil.Settings; |
309 | 7 import std.stdarg; |
54 | 8 |
309 | 9 /// Index into table of compiler messages. |
54 | 10 enum MID |
11 { | |
309 | 12 // Lexer messages: |
54 | 13 InvalidUnicodeCharacter, |
14 InvalidUTF8Sequence, | |
15 // '' | |
16 UnterminatedCharacterLiteral, | |
17 EmptyCharacterLiteral, | |
18 // #line | |
19 ExpectedIdentifierSTLine, | |
20 ExpectedNumberAfterSTLine, | |
323 | 21 ExpectedFilespec, |
22 UnterminatedFilespec, | |
54 | 23 UnterminatedSpecialToken, |
24 // "" | |
25 UnterminatedString, | |
26 // x"" | |
27 NonHexCharInHexString, | |
28 OddNumberOfDigitsInHexString, | |
29 UnterminatedHexString, | |
30 // /* */ /+ +/ | |
31 UnterminatedBlockComment, | |
32 UnterminatedNestedComment, | |
33 // `` r"" | |
34 UnterminatedRawString, | |
35 UnterminatedBackQuoteString, | |
36 // \x \u \U | |
37 UndefinedEscapeSequence, | |
38 InsufficientHexDigits, | |
39 // \&[a-zA-Z][a-zA-Z0-9]+; | |
272
0bde32503976
- Added module HtmlEntities. It contains a table for converting HTML entities to Unicode characters.
aziz
parents:
249
diff
changeset
|
40 UndefinedHTMLEntity, |
54 | 41 UnterminatedHTMLEntity, |
42 InvalidBeginHTMLEntity, | |
56
63af7ddf52e1
- Started properly implementing number scanner. Added stub for real numbers.
aziz
parents:
54
diff
changeset
|
43 // integer overflows |
58 | 44 OverflowDecimalSign, |
56
63af7ddf52e1
- Started properly implementing number scanner. Added stub for real numbers.
aziz
parents:
54
diff
changeset
|
45 OverflowDecimalNumber, |
63af7ddf52e1
- Started properly implementing number scanner. Added stub for real numbers.
aziz
parents:
54
diff
changeset
|
46 OverflowHexNumber, |
63af7ddf52e1
- Started properly implementing number scanner. Added stub for real numbers.
aziz
parents:
54
diff
changeset
|
47 OverflowBinaryNumber, |
63af7ddf52e1
- Started properly implementing number scanner. Added stub for real numbers.
aziz
parents:
54
diff
changeset
|
48 OverflowOctalNumber, |
63 | 49 OverflowFloatNumber, |
50 OctalNumberHasDecimals, | |
59
3e594725899a
- Issuing error when no digits were found in hex and binary numbers.
aziz
parents:
58
diff
changeset
|
51 NoDigitsInHexNumber, |
3e594725899a
- Issuing error when no digits were found in hex and binary numbers.
aziz
parents:
58
diff
changeset
|
52 NoDigitsInBinNumber, |
62
96af5653acef
- Fixed loop of hex number scanner. Moved checks under the switch block.
aziz
parents:
59
diff
changeset
|
53 HexFloatExponentRequired, |
96af5653acef
- Fixed loop of hex number scanner. Moved checks under the switch block.
aziz
parents:
59
diff
changeset
|
54 HexFloatMissingExpDigits, |
63 | 55 FloatExponentDigitExpected, |
86
0459c902a370
- Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents:
81
diff
changeset
|
56 |
309 | 57 // Parser messages: |
86
0459c902a370
- Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents:
81
diff
changeset
|
58 ExpectedButFound, |
238
f3c6c15961bb
- Added method peekNext(). Replaced code that used lx.peek() with peekNext().
aziz
parents:
86
diff
changeset
|
59 RedundantStorageClass, |
341
3ac651ea83fb
- Fix: created TemplateAliasParameter instead of TemplateTypeParameter.
aziz
parents:
329
diff
changeset
|
60 TemplateTupleParameter, |
309 | 61 |
62 // Help messages: | |
63 HelpMain, | |
329 | 64 HelpGenerate, |
309 | 65 } |
66 | |
67 string GetMsg(MID mid) | |
68 { | |
69 assert(mid < GlobalSettings.messages.length); | |
70 return GlobalSettings.messages[mid]; | |
71 } | |
72 | |
73 char[] format(MID mid, ...) | |
74 { | |
75 auto args = arguments(_arguments, _argptr); | |
76 return format_args(GetMsg(mid), args); | |
77 } | |
78 | |
79 char[] format(char[] format_str, ...) | |
80 { | |
81 auto args = arguments(_arguments, _argptr); | |
82 return format_args(format_str, args); | |
54 | 83 } |
84 | |
309 | 85 char[] format_args(char[] format_str, char[][] args) |
86 { | |
87 char[] result = format_str; | |
88 | |
89 foreach (i, arg; args) | |
90 result = std.string.replace(result, std.string.format("{%s}", i+1), arg); | |
91 | |
92 return result; | |
93 } | |
86
0459c902a370
- Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents:
81
diff
changeset
|
94 |
309 | 95 char[][] arguments(TypeInfo[] tinfos, void* argptr) |
96 { | |
97 char[][] args; | |
98 foreach (ti; tinfos) | |
99 { | |
100 if (ti == typeid(char[])) | |
101 args ~= va_arg!(char[])(argptr); | |
102 else if (ti == typeid(int)) | |
103 args ~= std.string.format(va_arg!(int)(argptr)); | |
104 else if (ti == typeid(dchar)) | |
105 args ~= std.string.format(va_arg!(dchar)(argptr)); | |
106 else | |
107 assert(0, "argument type not supported yet."); | |
108 } | |
109 return args; | |
110 } |