Per TDPL (p. 414 - 419), synchronized is supposed to be on classes, not functions. It specifically talks about how D makes all of a class' function synchronized or none of them, as well as how that affects member variables. However, dmd seems to currently only apply synchronized to functions. This should be illegal:
class C
{
synchronized int foo() {return 42;}
bool bar() {return false;}
}
But it compiles. As opposed to what it should be
synchronized class C
{
int foo() {return 42;}
bool bar() {return false;}
}
Comment #1 by andrej.mitrovich — 2014-01-06T12:47:19Z