You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is a function allowed to return an `enum string`? Shouldn't you use one of these:
string b(alias d)() {
return `writeln("a");`;
}
enum string b(alias d) = `writeln("a");`;
I think this should be marked `accepts-invalid`.
I think mixing in an eponymous template should be an error as it is confusing. Reduced:
void main() {
template b(alias d) {
enum b = ``;
}
int a;{ pragma(msg, is(typeof(b) == string)); // false mixin b!a; pragma(msg, is(typeof(b) == string)); // true mixin b!a; // error}
}
As before, if the {} scope block braces are removed, there's no error.
tetyys reported this on 2018-02-06T22:30:31Z
Transferred from https://issues.dlang.org/show_bug.cgi?id=18386
CC List
Description
Compilation of this code: import std.stdio; void main() { } class c { this() { enum string b(alias d)() { return `writeln("a");`; } int a; { mixin b!a; mixin b!a; } } } fails with dmd v2.078.1 and error test.d(11): Error: mixin b!a b isn't a template However, code: import std.stdio; void main() { } class c { this() { enum string b(alias d)() { return `writeln("a");`; } int a; //{ mixin b!a; mixin b!a; //} } } compiles successfullyThe text was updated successfully, but these errors were encountered: