aboutsummaryrefslogtreecommitdiffstats
path: root/tests/bugs1810/ambig
Commit message (Collapse)AuthorAgeFilesLines
* Fix ambiguous binding problem on anonymous typesAndy Clement2016-07-292-0/+21
If an anonymous class calls a method ITD'd onto one of its own supertypes (e.g. new A() { xx(null); }) then it can be reported as an ambiguous method invocation on Java8. There is different handling for Java8 that is revealing an issue. The intertype method declarations are recorded in a member finder attached to the target type (A in this case). When the local type binding is built it gets all the methods from supertypes added to it - this unfortunately includes the ITD method. Then later when something asks for all 'xx' methods on A, it finds the ITD method from when A was constructed and an additional copy from the member finder. The quick fix is for the member finder to use a set rather than list when answering 'what are the xx methods'. If this proves a problem down the line the deeper fix would be to avoid including ITDs when the local type binding is built.