Skip to content

[2.113.0-beta] ICE with ForwardRef*[$] array: AssertError@src/dmd/expressionsem.d(19130): Assertion failure #22887

@ibuclaw

Description

@ibuclaw

Current beta compiler ICE's on invalid code.

Reproducer

struct ForwardRef
{
    ForwardRef*[$] arr = [new ForwardRef()];
}

Backtrace

ice.d(3): Error: struct `ice.ForwardRef` no size because of forward reference
    ForwardRef*[$] arr = [new ForwardRef()];
                          ^
ice.d(3): Error: cannot infer static array length from `$`, provide an initializer
    ForwardRef*[$] arr = [new ForwardRef()];
                   ^
---
core.exception.AssertError@src/dmd/expressionsem.d(19130): Assertion failure
----------------
??:? _d_assertp [0x6417db1c6a1c]
src/dmd/expressionsem.d:19130 bool dmd.expressionsem.fill(dmd.dstruct.StructDeclaration, dmd.location.Loc, ref dmd.root.array.Array!(dmd.expression.Expression).Array, bool) [0x6417daf08101]
src/dmd/dinterpret.d:2849 _ZN11Interpreter5visitEP6NewExp [0x6417dae642df]
src/dmd/expression.d:1664 _ZN6NewExp6acceptEP7Visitor [0x6417daec72bd]
src/dmd/dinterpret.d:6264 dmd.expression.Expression dmd.dinterpret.interpret(dmd.ctfeexpr.UnionExp*, dmd.expression.Expression, dmd.dinterpret.InterState*, dmd.dinterpret.CTFEGoal) [0x6417dae6ed0c]
src/dmd/dinterpret.d:6275 dmd.expression.Expression dmd.dinterpret.interpret(dmd.expression.Expression, dmd.dinterpret.InterState*, dmd.dinterpret.CTFEGoal) [0x6417dae6ed62]
src/dmd/dinterpret.d:108 dmd.expression.Expression dmd.dinterpret.ctfeInterpret(dmd.expression.Expression) [0x6417dae5bbe8]
src/dmd/initsem.d:400 dmd.init.Initializer dmd.initsem.initializerSemantic(dmd.init.Initializer, dmd.dscope.Scope*, ref dmd.mtype.Type, dmd.init.NeedInterpret).visitExp(dmd.init.ExpInitializer) [0x6417daf37197]
src/dmd/init.d:379 dmd.init.Initializer dmd.initsem.initializerSemantic(dmd.init.Initializer, dmd.dscope.Scope*, ref dmd.mtype.Type, dmd.init.NeedInterpret).visit.VisitInitializer(dmd.init.Initializer) [0x6417daf39ba2]
src/dmd/initsem.d:1208 dmd.init.Initializer dmd.initsem.initializerSemantic(dmd.init.Initializer, dmd.dscope.Scope*, ref dmd.mtype.Type, dmd.init.NeedInterpret) [0x6417daf36125]
src/dmd/initsem.d:279 dmd.init.Initializer dmd.initsem.initializerSemantic(dmd.init.Initializer, dmd.dscope.Scope*, ref dmd.mtype.Type, dmd.init.NeedInterpret).visitArray(dmd.init.ArrayInitializer) [0x6417daf36bf5]
src/dmd/init.d:378 dmd.init.Initializer dmd.initsem.initializerSemantic(dmd.init.Initializer, dmd.dscope.Scope*, ref dmd.mtype.Type, dmd.init.NeedInterpret).visit.VisitInitializer(dmd.init.Initializer) [0x6417daf39b6e]
src/dmd/initsem.d:1208 dmd.init.Initializer dmd.initsem.initializerSemantic(dmd.init.Initializer, dmd.dscope.Scope*, ref dmd.mtype.Type, dmd.init.NeedInterpret) [0x6417daf36125]
src/dmd/semantic2.d:249 _ZN16Semantic2Visitor5visitEP14VarDeclaration [0x6417daf7ff61]
src/dmd/declaration.d:654 _ZN14VarDeclaration6acceptEP7Visitor [0x6417dae58c11]
src/dmd/semantic2.d:82 void dmd.semantic2.semantic2(dmd.dsymbol.Dsymbol, dmd.dscope.Scope*) [0x6417daf7f844]
src/dmd/semantic2.d:675 _ZN16Semantic2Visitor5visitEP20AggregateDeclaration [0x6417daf8132c]
src/dmd/visitor/parsetime.d:89 _ZN16ParseTimeVisitorI10ASTCodegenE5visitEP17StructDeclaration [0x6417daff10e5]
src/dmd/dstruct.d:127 _ZN17StructDeclaration6acceptEP7Visitor [0x6417dae8d639]
src/dmd/semantic2.d:82 void dmd.semantic2.semantic2(dmd.dsymbol.Dsymbol, dmd.dscope.Scope*) [0x6417daf7f844]
src/dmd/semantic2.d:382 _ZN16Semantic2Visitor5visitEP6Module [0x6417daf8074a]
src/dmd/dmodule.d:1003 _ZN6Module6acceptEP7Visitor [0x6417dae77669]
src/dmd/semantic2.d:82 void dmd.semantic2.semantic2(dmd.dsymbol.Dsymbol, dmd.dscope.Scope*) [0x6417daf7f844]
src/dmd/main.d:637 int dmd.main.tryMain(const(char)[][], out dmd.globals.Param) [0x6417dae19fe4]
src/dmd/main.d:148 _Dmain [0x6417dae18b61]

@gulugulubing - this affects current beta release.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions