www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 18974] New: ICE with mixin templates, inheritance and

https://issues.dlang.org/show_bug.cgi?id=18974

          Issue ID: 18974
           Summary: ICE with mixin templates, inheritance and overloading
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: pro.mathias.lang gmail.com

This kills DMD:
```
class Expression {}
class Statement : Expression {}

private template AssertFalse (T, Ret)
{
    Ret visit (const T node)
    {
        assert(0, T.stringof);
    }
}

class AssertSemanticVisitor (Node)
{
    mixin AssertFalse!(Statement, void) A;
    mixin AssertFalse!(Expression, void) B;
}

class ExpressionVisitor : AssertSemanticVisitor!(void)
{
    public override void visit (Expression) { assert(0); }
}
```

A debug build shows:
```
---
ERROR: This is a compiler bug.
Please report it via https://issues.dlang.org/enter_bug.cgi
with, preferably, a reduced, reproducible example and the information below.
DustMite (https://github.com/CyberShadow/DustMite/wiki) can help with the
reduction.
---
DMD v2.080.1-317-gda13edb77
predefs   DigitalMars Posix linux ELFv1 LittleEndian D_Version2 all D_SIMD
D_InlineAsm_X86_64 X86_64 CRuntime_Glibc D_LP64 D_PIC assert D_HardFloatbinary 
  ../dmd/generated/linux/release/64/dmd
version   v2.080.1-317-gda13edb77
config    ../dmd/generated/linux/release/64/dmd.conf
DFLAGS    -I../dmd/generated/linux/release/64/../../../../../druntime/import
-I../dmd/generated/linux/release/64/../../../../../phobos
-L-L../dmd/generated/linux/release/64/../../../../../phobos/generated/linux/release/64
-L--export-dynamic -fPIC
---
core.exception.AssertError dmd/dsymbolsem.d(3453): Assertion failure
----------------
??:? _d_assertp [0xe754a7c9]
??:? _ZN22DsymbolSemanticVisitor23funcDeclarationSemanticEP15FuncDeclaration
[0xe7371bde]
??:? _ZN22DsymbolSemanticVisitor5visitEP15FuncDeclaration [0xe73722e0]
??:? _ZN15FuncDeclaration6acceptEP7Visitor [0xe73c513d]
??:? _Z15dsymbolSemanticP7DsymbolP5Scope [0xe736868c]
??:? _ZN22DsymbolSemanticVisitor14attribSemanticEP17AttribDeclaration
[0xe736c3e6]
??:? _ZN22DsymbolSemanticVisitor5visitEP17AttribDeclaration [0xe736c448]
??:? _ZN16ParseTimeVisitorI10ASTCodegenE5visitEP15ProtDeclaration [0xe7448d82]
??:? _ZN15ProtDeclaration6acceptEP7Visitor [0xe730b095]
??:? _Z15dsymbolSemanticP7DsymbolP5Scope [0xe736868c]
??:? _ZN22DsymbolSemanticVisitor5visitEP16ClassDeclaration [0xe7375e4c]
??:? _ZN16ClassDeclaration6acceptEP7Visitor [0xe7335e95]
??:? _Z15dsymbolSemanticP7DsymbolP5Scope [0xe736868c]
??:? _ZN22DsymbolSemanticVisitor5visitEP6Module [0xe736d779]
??:? _ZN6Module6acceptEP7Visitor [0xe7357e09]
??:? _Z15dsymbolSemanticP7DsymbolP5Scope [0xe736868c]
??:? int dmd.mars.tryMain(ulong, const(char)**) [0xe73fc19b]
??:? _Dmain [0xe73fd582]
```

--
Jun 12 2018