http://d.puremagic.com/issues/show_bug.cgi?id=5105
Summary: Member function template cannot be synchronized Product: D Version: D2 Platform: All OS/Version: All Status: NEW Keywords: patch, rejects-valid Severity: normal Priority: P2 Component: DMD AssignedTo: nob...@puremagic.com ReportedBy: rsi...@gmail.com --- Comment #0 from Shin Fujishiro <rsi...@gmail.com> 2010-10-23 00:53:54 PDT --- DMD doesn't allow member function templates in synchronized class: -------------------- void main() { auto c = new C; c.foo(10); // (4) } synchronized shared class C { void foo(T)(T a) {} // (8) } -------------------- test.d(8): Error: function test.C.foo!(int).foo synchronized function foo must be a member of a class test.d(4): Error: template instance test.C.foo!(int) error instantiating -------------------- Patch against dmd r727: -------------------- --- src/func.c +++ src/func.c @@ -1551,7 +1551,8 @@ void FuncDeclaration::semantic3(Scope *sc) if (isSynchronized()) { /* Wrap the entire function body in a synchronized statement */ - ClassDeclaration *cd = parent->isClassDeclaration(); + AggregateDeclaration *ad = isThis(); + ClassDeclaration *cd = ad ? ad->isClassDeclaration() : NULL; if (cd) { #if TARGET_WINDOS -------------------- -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------