https://issues.dlang.org/show_bug.cgi?id=16014
--- Comment #1 from Kenji Hara <[email protected]> --- Although the OP code is legitimate from the D grammar spec, there's not yet proper definition/implementation for the semantic analysis. I'm not sure how compiler should behave with: deprecated(a.foo() ~ a.bar()) module a; string foo() { /* some CTFEable code 1 */ } string bar() { /* some CTFEable code 2 */ } ---- Note that if we replace module with struct: deprecated(S.foo) struct S // line 1 { static foo() { return "hello"; } } alias P = S*; // line 5 Current compiler prints: test.d(1): Deprecation: struct test.S is deprecated test.d(5): Deprecation: struct test.S is deprecated - hello The use of S in custom message expression exposes incompletion of semantic analysis process. It's bad behavior. --
