[Issue 8262] ICE(mtype.c) alias this to alias of an expression tuple
https://issues.dlang.org/show_bug.cgi?id=8262 --- Comment #10 from github-bugzi...@puremagic.com --- Commits pushed to stable at https://github.com/dlang/dmd https://github.com/dlang/dmd/commit/2f27c59732481880545ca65a4641806087cc23e7 fix issue 8262 - ICE(mtype.c) alias this to alias of an expression tuple https://github.com/dlang/dmd/commit/4616d4485102fc4650d14d185e224a621c25d965 Merge pull request #4195 from rainers/aliasthisof --
[Issue 8262] ICE(mtype.c) alias this to alias of an expression tuple
https://issues.dlang.org/show_bug.cgi?id=8262 --- Comment #9 from github-bugzi...@puremagic.com --- Commits pushed to master at https://github.com/dlang/dmd https://github.com/dlang/dmd/commit/2f27c59732481880545ca65a4641806087cc23e7 fix issue 8262 - ICE(mtype.c) alias this to alias of an expression tuple check return of aliasthisOf https://github.com/dlang/dmd/commit/4616d4485102fc4650d14d185e224a621c25d965 Merge pull request #4195 from rainers/aliasthisof Issue 8262 - ICE(mtype.c) alias this to alias of an expression tuple merged-on-behalf-of: Andrei Alexandrescu--
[Issue 8262] ICE(mtype.c) alias this to alias of an expression tuple
https://issues.dlang.org/show_bug.cgi?id=8262 github-bugzi...@puremagic.com changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --
[Issue 8262] ICE(mtype.c) alias this to alias of an expression tuple
https://issues.dlang.org/show_bug.cgi?id=8262 --- Comment #8 from Rainer Schuetze r.sagita...@gmx.de --- https://github.com/D-Programming-Language/dmd/pull/4195 avoids the crash, but doesn't add implicite conversion for tuples. --
[Issue 8262] ICE(mtype.c) alias this to alias of an expression tuple
https://issues.dlang.org/show_bug.cgi?id=8262 Rainer Schuetze r.sagita...@gmx.de changed: What|Removed |Added CC||r.sagita...@gmx.de --- Comment #7 from Rainer Schuetze r.sagita...@gmx.de --- Here's another example of a crash at the same location reduced by dustmite: struct Tuple9709(T...) { alias T expand; alias expand this; } auto data = RTInfoImpl2!(Tuple9709!1); template RTInfoImpl2(T) { static if (is(T D == U)) immutable(RTInfoData) RTInfoImpl2 ; } [this is also triggered by some RTInfo compiled with the dmd test suite.] There are some code locations that check the pointer returned by aliasthisOf(), some do not. Should these be added in the places where the checks are missing? --
[Issue 8262] ICE(mtype.c) alias this to alias of an expression tuple
https://issues.dlang.org/show_bug.cgi?id=8262 hst...@quickfur.ath.cx changed: What|Removed |Added Keywords||pull --- Comment #6 from hst...@quickfur.ath.cx --- https://github.com/D-Programming-Language/dmd/pull/4025 --
[Issue 8262] ICE(mtype.c) alias this to alias of an expression tuple
https://issues.dlang.org/show_bug.cgi?id=8262 hst...@quickfur.ath.cx changed: What|Removed |Added CC||hst...@quickfur.ath.cx Severity|normal |critical --- Comment #2 from hst...@quickfur.ath.cx --- Wow. This *still* doesn't work on git HEAD: dmd now segfaults. --
[Issue 8262] ICE(mtype.c) alias this to alias of an expression tuple
https://issues.dlang.org/show_bug.cgi?id=8262 --- Comment #3 from hst...@quickfur.ath.cx --- Stack trace: #0 0x00410199 in TypeStruct::implicitConvTo(Type*) () #1 0x004c8213 in IsExp::semantic(Scope*) () #2 0x004de990 in AndAndExp::semantic(Scope*) () #3 0x004de924 in AndAndExp::semantic(Scope*) () #4 0x004de924 in AndAndExp::semantic(Scope*) () #5 0x004de924 in AndAndExp::semantic(Scope*) () #6 0x004b4769 in StaticIfCondition::include(Scope*, ScopeDsymbol*) () #7 0x0043d637 in ConditionalStatement::flatten(Scope*) () #8 0x004437d1 in CompoundStatement::semantic(Scope*) () #9 0x004ede13 in FuncDeclaration::semantic3(Scope*) () #10 0x004504c4 in TemplateInstance::semantic3(Scope*) () #11 0x00454d83 in TemplateInstance::trySemantic3(Scope*) () #12 0x0045c2e3 in TemplateInstance::semantic(Scope*, ArrayExpression**) [clone .part.63] () #13 0x0045c87f in functionResolve(Match*, Dsymbol*, Loc, Scope*, ArrayRootObject**, Type*, ArrayExpression**) () #14 0x004ec05e in resolveFuncCall(Loc, Scope*, Dsymbol*, ArrayRootObject**, Type*, ArrayExpression**, int) () #15 0x004d3c33 in CallExp::semantic(Scope*) [clone .part.134] () #16 0x0043fd9b in ExpStatement::semantic(Scope*) () #17 0x00443b6a in CompoundStatement::semantic(Scope*) () #18 0x004ede13 in FuncDeclaration::semantic3(Scope*) () #19 0x00407a50 in Module::semantic3() () #20 0x0040526c in tryMain(unsigned long, char const**) () #21 0x77015b45 in __libc_start_main (main=0x402490 main, argc=2, argv=0x7fffeb68, init=optimized out, fini=optimized out, rtld_fini=optimized out, stack_end=0x7fffeb58) at libc-start.c:287 #22 0x004029c5 in _start () --
[Issue 8262] ICE(mtype.c) alias this to alias of an expression tuple
https://issues.dlang.org/show_bug.cgi?id=8262 --- Comment #4 from hst...@quickfur.ath.cx --- Cause of segfault: aliasthisOf() returned NULL to implicitConvTo(). --
[Issue 8262] ICE(mtype.c) alias this to alias of an expression tuple
https://issues.dlang.org/show_bug.cgi?id=8262 --- Comment #5 from hst...@quickfur.ath.cx --- And the reason is because aliasthisOf() does not expect a TypeTuple; it expects a variable declaration, a function, an enum, or a template. Normally, TypeTuples cannot appear in an alias this due to the current grammar, but there is a loophole where they can be masked by another layer of alias, as in the code given here, so it leads into this unhandled case. --