[Issue 21614] compiled imports: core.exception.AssertError at src/dmd/semantic3.d(812): Assertion failure

d-bugmail at puremagic.com d-bugmail at puremagic.com
Sat Feb 6 10:15:56 UTC 2021


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

Iain Buclaw <ibuclaw at gdcproject.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ibuclaw at gdcproject.org

--- Comment #1 from Iain Buclaw <ibuclaw at gdcproject.org> ---
Created attachment 1816
  --> https://issues.dlang.org/attachment.cgi?id=1816&action=edit
reduced testcase

issue21614.d
---
module issue21614;

real logmdigammaInverse(real y)
{
    import imports.issue21614a;
    findRoot(1 , y,  2);
}
---

imports/issue21414a.d
---
module imports.issue21614a;

template AliasSeq(TList...)
{
    alias AliasSeq = TList;
}

uint formattedWrite(Writer, Char)(Writer , Char)
{
    alias spec = FormatSpec!Char();
    return 0;
}

struct FormatSpec(Char)
{
    import imports.issue21614a;
}

template ElementEncodingType(R)
{
    static if (is(R : E[], E))
        alias ElementEncodingType = E;
}

struct Appender(A)
{
    inout(ElementEncodingType!A)[] data() {
        return [];
    }
}

Appender!A appender(A)()
{
    return Appender!A();
}

immutable(Char)[] format(Char, Args)(Char[] fmt, Args)
{
    auto w = appender!(Char[]);
    formattedWrite(w, fmt);
    return w.data;
}

template Tuple(Specs)
{
    template parseSpecs(Specs)
    {
        alias parseSpecs = AliasSeq!FieldSpec;
    }

    template FieldSpec {
    }

    alias fieldSpecs = parseSpecs!Specs;

    string injectNamedFields()
    {
        foreach (i, name; fieldSpecs)
            format("%s", i);
        return "";
    }

    struct Tuple
    {
        mixin(injectNamedFields);

        this()
        {
        }
    }
}

T findRoot(T, DF, DT)(DF f, T a, T b, DT tolerance) 
{
    findRoot(f, a, b, 0, 1, tolerance);
}

T findRoot(T, DF)(DF f, T a, T b)
{
    findRoot(f, a, b, false);
}

Tuple!(T) findRoot(T, R, DF, DT)(DF , T , T , R , R , DT ) 
---

--


More information about the Digitalmars-d-bugs mailing list