diff --git a/src/ddmd/denum.d b/src/ddmd/denum.d index bf976bd9d012..007d6a97d662 100644 --- a/src/ddmd/denum.d +++ b/src/ddmd/denum.d @@ -118,7 +118,7 @@ extern (C++) final class EnumDeclaration : ScopeDsymbol if (semanticRun == PASSsemantic) { assert(memtype); - .error(loc, "circular reference to enum base type %s", memtype.toChars()); + .error(loc, "circular reference to enum base type `%s`", memtype.toChars()); errors = true; semanticRun = PASSsemanticdone; return; @@ -213,7 +213,7 @@ extern (C++) final class EnumDeclaration : ScopeDsymbol if (members.dim == 0) { - error("enum %s must have at least one member", toChars()); + error("enum `%s` must have at least one member", toChars()); errors = true; return; } @@ -320,7 +320,7 @@ extern (C++) final class EnumDeclaration : ScopeDsymbol if (!members || !symtab || _scope) { - error("is forward referenced when looking for '%s'", ident.toChars()); + error("is forward referenced when looking for `%s`", ident.toChars()); //*(char*)0=0; return null; } @@ -365,7 +365,7 @@ extern (C++) final class EnumDeclaration : ScopeDsymbol if (inuse) { - error(loc, "recursive definition of .%s property", id.toChars()); + error(loc, "recursive definition of `.%s` property", id.toChars()); return errorReturn(); } if (*pval) @@ -377,12 +377,12 @@ extern (C++) final class EnumDeclaration : ScopeDsymbol return errorReturn(); if (semanticRun == PASSinit || !members) { - error("is forward referenced looking for .%s", id.toChars()); + error("is forward referenced looking for `.%s`", id.toChars()); return errorReturn(); } if (!(memtype && memtype.isintegral())) { - error(loc, "has no .%s property because base type %s is not an integral type", id.toChars(), memtype ? memtype.toChars() : ""); + error(loc, "has no `.%s` property because base type `%s` is not an integral type", id.toChars(), memtype ? memtype.toChars() : ""); return errorReturn(); } @@ -443,7 +443,7 @@ extern (C++) final class EnumDeclaration : ScopeDsymbol goto Lerrors; if (semanticRun == PASSinit || !members) { - error(loc, "forward reference of %s.init", toChars()); + error(loc, "forward reference of `%s.init`", toChars()); goto Lerrors; } @@ -723,7 +723,7 @@ extern (C++) final class EnumMember : VarDeclaration e = e.ctfeInterpret(); if (e.toInteger()) { - error("initialization with (%s.%s + 1) causes overflow for type '%s'", + error("initialization with `%s.%s+1` causes overflow for type `%s`", emprev.ed.toChars(), emprev.toChars(), ed.memtype.toChars()); return errorReturn(); } @@ -753,7 +753,7 @@ extern (C++) final class EnumMember : VarDeclaration etest = etest.ctfeInterpret(); if (etest.toInteger()) { - error("has inexact value, due to loss of precision"); + error("has inexact value due to loss of precision"); return errorReturn(); } } diff --git a/test/fail_compilation/diag11088.d b/test/fail_compilation/diag11088.d deleted file mode 100644 index 720a2f82fb3b..000000000000 --- a/test/fail_compilation/diag11088.d +++ /dev/null @@ -1,18 +0,0 @@ -/* -TEST_OUTPUT: ---- -fail_compilation/diag11088.d(11): Error: enum member diag11088.E.B initialization with (E.A + 1) causes overflow for type 'int' -fail_compilation/diag11088.d(17): Error: enum member diag11088.E1.B initialization with (E1.A + 1) causes overflow for type 'short' ---- -*/ -enum E -{ - A = int.max, - B -} - -enum E1 : short -{ - A = short.max, - B -} diff --git a/test/fail_compilation/diag14950.d b/test/fail_compilation/diag14950.d deleted file mode 100644 index d4d3380df5d8..000000000000 --- a/test/fail_compilation/diag14950.d +++ /dev/null @@ -1,19 +0,0 @@ -/* -TEST_OUTPUT: ---- -fail_compilation/diag14950.d(18): Deprecation: Comparison between different enumeration types `B` and `A`; If this behavior is intended consider using `std.conv.asOriginalType` -fail_compilation/diag14950.d(18): Error: enum member diag14950.B.end initialization with (B.start + 1) causes overflow for type 'A' ---- -*/ - -enum A -{ - start, - end -} - -enum B -{ - start = A.end, - end -} diff --git a/test/fail_compilation/fail109.d b/test/fail_compilation/fail109.d index 129062df84df..4fd532133859 100644 --- a/test/fail_compilation/fail109.d +++ b/test/fail_compilation/fail109.d @@ -1,7 +1,7 @@ /* TEST_OUTPUT: --- -fail_compilation/fail109.d(12): Error: enum member fail109.Bool.Unknown initialization with (Bool.True + 1) causes overflow for type 'bool' +fail_compilation/fail109.d(12): Error: enum member fail109.Bool.Unknown initialization with `Bool.True+1` causes overflow for type `bool` --- */ @@ -11,3 +11,82 @@ enum Bool : bool True, Unknown } + +/* Bugzilla 11088 +TEST_OUTPUT: +--- +fail_compilation/fail109.d(25): Error: enum member fail109.E.B initialization with `E.A+1` causes overflow for type `int` +fail_compilation/fail109.d(31): Error: enum member fail109.E1.B initialization with `E1.A+1` causes overflow for type `short` +--- +*/ +enum E +{ + A = int.max, + B +} + +enum E1 : short +{ + A = short.max, + B +} + +/* Bugzilla 14950 +TEST_OUTPUT: +--- +fail_compilation/fail109.d(50): Deprecation: Comparison between different enumeration types `B` and `C`; If this behavior is intended consider using `std.conv.asOriginalType` +fail_compilation/fail109.d(50): Error: enum member fail109.B.end initialization with `B.start+1` causes overflow for type `C` +--- +*/ +enum C +{ + start, + end +} + +enum B +{ + start = C.end, + end +} + +/* Bugzilla 11849 +TEST_OUTPUT: +--- +fail_compilation/fail109.d(72): Error: enum fail109.RegValueType1a recursive definition of `.max` property +fail_compilation/fail109.d(79): Error: enum fail109.RegValueType1b recursive definition of `.max` property +fail_compilation/fail109.d(84): Error: enum fail109.RegValueType2a recursive definition of `.min` property +fail_compilation/fail109.d(91): Error: enum fail109.RegValueType2b recursive definition of `.min` property +--- +*/ + +alias DWORD = uint; + +enum : DWORD +{ + REG_DWORD = 4 +} + +enum RegValueType1a : DWORD +{ + Unknown = DWORD.max, + DWORD = REG_DWORD, +} + +enum RegValueType1b : DWORD +{ + DWORD = REG_DWORD, + Unknown = DWORD.max, +} + +enum RegValueType2a : DWORD +{ + Unknown = DWORD.min, + DWORD = REG_DWORD, +} + +enum RegValueType2b : DWORD +{ + DWORD = REG_DWORD, + Unknown = DWORD.min, +} diff --git a/test/fail_compilation/ice11849a.d b/test/fail_compilation/ice11849a.d deleted file mode 100644 index 51260a115fd5..000000000000 --- a/test/fail_compilation/ice11849a.d +++ /dev/null @@ -1,40 +0,0 @@ -/* -TEST_OUTPUT: ---- -fail_compilation/ice11849a.d(20): Error: enum ice11849a.RegValueType1a recursive definition of .max property -fail_compilation/ice11849a.d(27): Error: enum ice11849a.RegValueType1b recursive definition of .max property -fail_compilation/ice11849a.d(32): Error: enum ice11849a.RegValueType2a recursive definition of .min property -fail_compilation/ice11849a.d(39): Error: enum ice11849a.RegValueType2b recursive definition of .min property ---- -*/ - -alias DWORD = uint; - -enum : DWORD -{ - REG_DWORD = 4 -} - -enum RegValueType1a : DWORD -{ - Unknown = DWORD.max, - DWORD = REG_DWORD, -} - -enum RegValueType1b : DWORD -{ - DWORD = REG_DWORD, - Unknown = DWORD.max, -} - -enum RegValueType2a : DWORD -{ - Unknown = DWORD.min, - DWORD = REG_DWORD, -} - -enum RegValueType2b : DWORD -{ - DWORD = REG_DWORD, - Unknown = DWORD.min, -} diff --git a/test/fail_compilation/ice11849b.d b/test/fail_compilation/ice11849b.d index 395c34867a70..ef9380f76892 100644 --- a/test/fail_compilation/ice11849b.d +++ b/test/fail_compilation/ice11849b.d @@ -1,9 +1,9 @@ /* TEST_OUTPUT: --- -fail_compilation/ice11849b.d(11): Error: circular reference to enum base type DWORD1 +fail_compilation/ice11849b.d(11): Error: circular reference to enum base type `DWORD1` fail_compilation/ice11849b.d(11): Error: DWORD1 is used as a type -fail_compilation/ice11849b.d(16): Error: circular reference to enum base type typeof(DWORD2) +fail_compilation/ice11849b.d(16): Error: circular reference to enum base type `typeof(DWORD2)` --- */ enum REG_DWORD = 1;