D-Programming-Language/dmd — pull request #1585 by 9rnsr (2013-01-31 04:17:00+00:00)
Title: Issue 9258 & 9404 & 9416 - fix regressions around opAssign

[Issue 9258](http://d.puremagic.com/issues/show_bug.cgi?id=9258) - opAssign with base class triggers "identity assignment operator overload" error

This is just my mistake. "Identity opAssign" must receive just same type except type qualifiers.

[Issue 9416](http://d.puremagic.com/issues/show_bug.cgi?id=9416) - [REG][2.060 -> 02.061] DMD eagerly instantiates template parameter-less opAssign

For the detection of identity `opAssign`, the occured errors in semantic should be gagged. But it had been incomplete. This is just a compiler implementation issue.

[Issue 9404](http://d.puremagic.com/issues/show_bug.cgi?id=9404) - Nullable is unusable with 2.061

By merging #166, compiler started to recognize template `opAssign`. A critical feature for generating built-in opAssign is: "If **identity opAssign** is detected in a struct, it is used. If it not found, but the fields require member-wise assignment, builit-in opAssign is generated."
In here, essentially "user defined but not identity `opAssign`s" are unrelated. In the assignment operation, identity or not should be distinguished. I had completely misunderstand about this point.
Now, all test results from the combinations at `test/runnable/assignable.d` `test6216a()` changed to `true`.

---
Requires phobos change at the same time.