[Issue 12606] Mismatch of known array length during dynamic => static array assignment should emit better diagnostics

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Mon Apr 21 19:09:38 PDT 2014


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

--- Comment #6 from Kenji Hara <k.hara.pg at gmail.com> ---
(In reply to Andrej Mitrovic from comment #2)
> For example, in 'implicitConvTo' in the visitor functions 'result' is simply
> initialized to MATCHnomatch if the dimensions of the two slices don't match.
> But this isn't propagate back to the caller side.

If e->implicitConvTo(t) returns MATCHnomatch, e->implicitCastTo(sc, t) should
cause error which represents why e does not match to t.
So, the following compiler code form would be sufficient.

e = e->implicitCastTo(sc, t);

or:

if (e->implicitConvTo(t))
{
    e = e->implicitCastTo(sc, t);
    assert(e->op != TOKerror);       // always succeeds
}
else
{
    // extra handling for the unmatch, if e and t have known forms.
    if (...)
    {
        error("more better diagnostic for particular case");
        e = new ErrorExp();
    }

    // error report for generic case
    // (if e is already an ErrorExp, no redundant error generated)
    e = e->implicitCastTo(sc, t);
}

--


More information about the Digitalmars-d-bugs mailing list