Issue 9258 & 9404 & 9416 - fix regressions around opAssign #1585
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issue 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 - [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 - 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 totrue
.Requires phobos change at the same time.