The PrimaryExpression rule allows module scope identifiers and types but not template instances. Dmd 2.040 allows them, though. So: struct ss(S) { static S s; } void foo() { int x = .ss!(int).s; } compiles, though the grammar doesn't permit the '.' in front of ss.
Commit pushed to https://github.com/D-Programming-Language/d-programming-language.org https://github.com/D-Programming-Language/d-programming-language.org/commit/79ecd142488e0a26b47ce47fede6c5aacfcbc226 fix Issue 3838 - PrimaryExpression rule doesn't permit module scope template instances