---
cat > test.d <<CODE
struct S() { // needs to be a template to trigger the bug
void impl()(int) {} // template for purity inference
// unused, needed to trigger the bug:
int i;
alias i this;
alias impl opAssign;
}
pure void p() {
S!() s;
s.impl(42);
}
alias S!() Dummy; // unused, needed to trigger the bug
CODE
dmd -c -o- test.d
---
test.d(12): Error: pure function 'p' cannot call impure function 'impl'
---
Looks like alias this and opAssign clash somehow.
Works with 2.060. Fails since this commit: https://github.com/D-Programming-Language/dmd/commit/9ee798f73a2f7765a68bbe8f40ff292f551dab72