https://issues.dlang.org/show_bug.cgi?id=19091
--- Comment #6 from FeepingCreature <default_357-l...@yahoo.de> --- Update: version that makes it clearer what happens: ``` struct Template { void opEquals(U, this TA)(U) { pragma(msg, "Template.opEquals!(" ~ U.stringof ~ ", " ~ TA.stringof ~ ")"); foo(); } } void foo()() { static assert(false); // foo() fails xeq semantic3 while gagged bar!(); } // this is the symbol that sticks around and references foo(). // Despite foo() erroring, bar() is not errored and emits normally. void bar()() { pragma(msg, "bar()"); foo(); } void main() { } ``` --