digitalmars.D.bugs - [Issue 4137] New: Undefined identifier error in is(typeof())
- d-bugmail puremagic.com (31/31) May 01 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4137
- d-bugmail puremagic.com (16/16) May 01 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4137
http://d.puremagic.com/issues/show_bug.cgi?id=4137 Summary: Undefined identifier error in is(typeof()) Product: D Version: unspecified Platform: x86 OS/Version: Windows Status: NEW Keywords: diagnostic Severity: normal Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: bearophile_hugs eml.cc I don't know if there are ways to solve this problem, I hope this isn't another situation like bug 3950. This is wrong D2 code. The template Foo has the type parameter T while inside it uses the parameter R: template Foo(T) { enum bool Foo = is(typeof(R.length)); } void main() { assert(Foo!(int[])); } The program compiles with no errors with dmd 2.043 and at run time produces: core.exception.AssertError test2(5): Assertion failure But to help debugging, I'd like the compiler to point R as a undefined identifier (even with the 'did you mean...') at compile-time. Is this possible? -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
May 01 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4137 Walter Bright <bugzilla digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |bugzilla digitalmars.com Resolution| |INVALID 09:45:29 PDT --- This is expected & documented behavior. Compilation failures inside "is" expressions cause the is expression result to be false. A lot of template code relies on this. If you want an error on R being undefined, use it somewhere else in addition to inside the "is" expression. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
May 01 2010