https://issues.dlang.org/show_bug.cgi?id=14352
Issue ID: 14352
Summary: SDC test0075.d fails under against DMD
Product: D
Version: unspecified
Hardware: x86
OS: Mac OS X
Status: NEW
Severity: normal
Priority: P1
Component: DMD
Assignee: [email protected]
Reporter: [email protected]
This compiles and works properly under SDC. However, when ran against DMD the
assertions fail. It appears as if "goto case" is not working correctly in DMD
based on what I can see.
```test0075.d
//T compiles:yes
//T has-passed:yes
//T retval:0
//? desc:Test goto case multiple cases in case list.
int transmogrify(int input) {
int output = 0;
switch (input) {
case 0, 1:
if (input == 0)
goto case;
else
output++;
goto case;
case 2:
output += 5;
goto case;
case 3:
output += 5;
break;
case 4, 5, 6:
goto default;
case 7:
case 8:
output += 20;
break;
default:
return -1;
}
return output;
}
int main() {
bool defaultRan = false;
switch(0) {
default:
defaultRan = true;
break;
case 0:
goto default;
}
assert(defaultRan);
assert(transmogrify(0) == 10);
assert(transmogrify(1) == 11);
assert(transmogrify(2) == 10);
assert(transmogrify(3) == 5);
assert(transmogrify(7) == 20);
assert(transmogrify(8) == 20);
assert(transmogrify(4) == -1);
assert(transmogrify(5) == -1);
assert(transmogrify(6) == -1);
assert(transmogrify(128) == -1);
return 0;
}
```
--