www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 22114] New: Fatal Token Parser Error at Line 914 for Version

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

          Issue ID: 22114
           Summary: Fatal Token Parser Error at Line 914 for Version
                    2.097.0
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Linux
            Status: NEW
          Severity: critical
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: Tyler linuxdev.app

When attempting to build a complex software with various data structures, I
came across a parser error on all DLang compilers: DMD, LDC2, and RDMD. All of
them have the same problem coming from DMD implementation for Token parsing
particularly on line 914. I've narrowed down the code to the following
reproducible code here:

```d
module testproblem;

public class Test1(T)
{
    private Test2!T val;

    this()
    {
        val = new Test2!T(this);
    }

    private class Test2(T)
    {
        private Test1!(T) m_source;

        this(Test1!T source)
        {
            m_source = source;
        }
    }
}

public class Demo
{
    auto val = new Test1!int();
}
```

The error shown is as followed after running the command: dmd -c -wi -Isource/
-oftest.o source/testproblem.d -v

////////////////////////////////////////////////////////

predefs   DigitalMars LittleEndian D_Version2 all D_SIMD Posix ELFv1 linux
CRuntime_Glibc CppRuntime_Gcc D_InlineAsm_X86_64 X86_64 D_LP64 D_PIC assert
D_ModuleInfo D_Exceptions D_TypeInfo D_HardFloat
binary    dmd
version   v2.097.0

config    /etc/dmd.conf
DFLAGS    -I/usr/include/dlang/dmd -L-L/usr/lib -L--export-dynamic -fPIC
parse     testproblem
importall testproblem
import    object        (/usr/include/dlang/dmd/object.d)
import    core.attribute        (/usr/include/dlang/dmd/core/attribute.d)
import    core.internal.hash    (/usr/include/dlang/dmd/core/internal/hash.d)
import    core.internal.traits  (/usr/include/dlang/dmd/core/internal/traits.d)
import    core.internal.entrypoint     
(/usr/include/dlang/dmd/core/internal/entrypoint.d)
import    core.internal.array.appending
(/usr/include/dlang/dmd/core/internal/array/appending.d)
import    core.internal.array.comparison       
(/usr/include/dlang/dmd/core/internal/array/comparison.d)
import    core.internal.array.equality 
(/usr/include/dlang/dmd/core/internal/array/equality.d)
import    core.internal.array.casting  
(/usr/include/dlang/dmd/core/internal/array/casting.d)
import    core.internal.array.concatenation    
(/usr/include/dlang/dmd/core/internal/array/concatenation.d)
import    core.internal.array.construction     
(/usr/include/dlang/dmd/core/internal/array/construction.d)
import    core.internal.array.capacity 
(/usr/include/dlang/dmd/core/internal/array/capacity.d)
import    core.internal.dassert
(/usr/include/dlang/dmd/core/internal/dassert.d)
import    core.atomic   (/usr/include/dlang/dmd/core/atomic.d)
import    core.internal.attributes     
(/usr/include/dlang/dmd/core/internal/attributes.d)
import    core.internal.atomic  (/usr/include/dlang/dmd/core/internal/atomic.d)
import    core.internal.destruction    
(/usr/include/dlang/dmd/core/internal/destruction.d)
import    core.internal.moving  (/usr/include/dlang/dmd/core/internal/moving.d)
import    core.internal.postblit       
(/usr/include/dlang/dmd/core/internal/postblit.d)
import    core.internal.switch_
(/usr/include/dlang/dmd/core/internal/switch_.d)
import    core.builtins (/usr/include/dlang/dmd/core/builtins.d)
semantic  testproblem
semantic2 testproblem
semantic3 testproblem
code      testproblem
Segmentation fault (core dumped)

--
Jul 09