The code for attributing an instance creation expression with diamond relies on mutable state. The code changes the scope of a class with a 'synthetic' scope, so that a slightly different overload step could be applied. Mutable state is problematic, as in the future, we might have the compiler doing something more during overload resolution (i.e. type-checking expressions) - in which case the change in the class scope might become visible and cause spurious errors.
|