http://d.puremagic.com/issues/show_bug.cgi?id=2702
Don <clugd...@yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch --- Comment #7 from Don <clugd...@yahoo.com.au> 2009-09-25 01:06:47 PDT --- Here's a revised patch, same place (VarDeclaration::semantic in declaration.c, around line 1083). Replace the existing code with this version, which explicitly allows opCall and NOTHING ELSE: --- // Dynamic initialization uses static opCall. if (!ei->exp->implicitConvTo(type)) { // Look for opCall if (search_function(sd, Id::call)) { // Rewrite as e1.call(arguments) Expression * eCall = new DotIdExp(loc, e1, Id::call); ei->exp = new CallExp(loc, eCall, ei->exp); } } --- This passes everything in the DMD test suite, except for one line in one test (xtest46.d, test30) which I believe to be broken. I don't think that all of the opDot() and 'alias this' possibilities are tested in the test suite, however. Here's a tiny test which concisely tests the main features: struct A { char [] a; } struct B { long x; } struct C { int a; static C opCall(int b) { C q; q.a=b; return q; } } static assert(!is(typeof( (){ A s; B q = s; }))); static assert(!is(typeof( (){ B x =1L; }))); static assert(is(typeof( (){ C g = 7; }))); static assert(is(typeof( (){ C g = 7; C h = g;}))); -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------