www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 14632] New: Diagnostic improvement for invalid cast with

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

          Issue ID: 14632
           Summary: Diagnostic improvement for invalid cast with alias
                    this
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Keywords: diagnostic
          Severity: minor
          Priority: P1
         Component: DMD
          Assignee: nobody puremagic.com
          Reporter: k.hara.pg gmail.com

Spin-off from issue 14093.

From dmd test suite test/fail_compilation/fail_casting.d:
/* TEST_OUTPUT: --- fail_compilation/fail_casting.d(179): Error: cannot cast expression __tup$n$.__expand_field_0 of type int to object.Object fail_compilation/fail_casting.d(179): Error: cannot cast expression __tup$n$.__expand_field_1 of type int to object.Object --- */ alias TypeTuple14093(T...) = T; struct Tuple14093(T...) { static if (T.length == 4) { alias Types = TypeTuple14093!(T[0], T[2]); Types expand; property ref inout(Tuple14093!Types) _Tuple_super() inout trusted { return *cast(typeof(return)*) &(expand[0]); } alias _Tuple_super this; } else { alias Types = T; Types expand; alias expand this; } } void test14093() { Tuple14093!(int, "x", int, "y") point; auto newPoint = cast(Object)(point); // line 179 } The message can be better as follows: Error: cannot cast expression point of type Tuple14093!(int, "x", int, "y") to object.Object --
May 30 2015