hg: lambda/lambda/langtools: Enhancement: Add support for more aggressive type-inference

maurizio.cimadamore at oracle.com maurizio.cimadamore at oracle.com
Fri Aug 3 04:49:37 PDT 2012


Changeset: 56419f06ad92
Author:    mcimadamore
Date:      2012-08-03 12:48 +0100
URL:       http://hg.openjdk.java.net/lambda/lambda/langtools/rev/56419f06ad92

Enhancement: Add support for more aggressive type-inference

Experimental aggressive inference support can be enabled using the flag -XDuseGraphInference.
The new inferencer (disabled by default) solves a number of outstanding problems in the legacy JDK 5/6/7 type-inferencer (which means it is also slightly backwards incompatible).

Examples:

*) Foo<Number> fn = new Foo<>(1);

*) Set<String> ss = listInt.map(x->x.toString()).into(new HashSet<>);

*) <Z> void call(SAM<Z> x, SAM<Z> y) { ... }
   call(() -> Collections.emptyList(), () -> new ArrayList<String>());

Misc fixes:
*) remove unused class in com/sun/runtime
*) fix build.properties to generate right amount of stubs
*) fix regression tests failures triggered when running against lambda binary snapshot

! make/build.properties
- src/share/classes/com/sun/runtime/DefenderMethod.java
! src/share/classes/com/sun/tools/javac/code/Source.java
! src/share/classes/com/sun/tools/javac/code/Symtab.java
! src/share/classes/com/sun/tools/javac/code/Type.java
! src/share/classes/com/sun/tools/javac/code/Types.java
! src/share/classes/com/sun/tools/javac/comp/Attr.java
! src/share/classes/com/sun/tools/javac/comp/Check.java
! src/share/classes/com/sun/tools/javac/comp/DeferredAttr.java
+ src/share/classes/com/sun/tools/javac/comp/GraphInfer.java
! src/share/classes/com/sun/tools/javac/comp/Infer.java
+ src/share/classes/com/sun/tools/javac/comp/InferFactory.java
+ src/share/classes/com/sun/tools/javac/comp/LegacyInfer.java
! src/share/classes/com/sun/tools/javac/comp/Resolve.java
! src/share/classes/com/sun/tools/javac/resources/compiler.properties
! src/share/classes/com/sun/tools/javac/util/List.java
! test/tools/javac/6758789/T6758789b.out
! test/tools/javac/Diagnostics/6722234/T6722234b_1.out
! test/tools/javac/Diagnostics/6722234/T6722234b_2.out
! test/tools/javac/Diagnostics/6799605/T6799605.out
! test/tools/javac/api/TestJavacTaskScanner.java
! test/tools/javac/cast/7123100/T7123100a.out
! test/tools/javac/defender/Pos01.java
! test/tools/javac/diags/examples.not-yet.txt
! test/tools/javac/diags/examples/CantApplyDiamond1.java
+ test/tools/javac/diags/examples/IncompatibleEqUpperBounds.java
! test/tools/javac/diags/examples/IncompatibleTypes1.java
+ test/tools/javac/diags/examples/InferNoConformingAssignment.java
- test/tools/javac/diags/examples/InferredDoNotConformToBounds.java
+ test/tools/javac/diags/examples/InferredDoNotConformToEq.java
+ test/tools/javac/diags/examples/InferredDoNotConformToLower.java
+ test/tools/javac/diags/examples/InferredDoNotConformToUpper.java
! test/tools/javac/diags/examples/WhereCaptured.java
! test/tools/javac/diags/examples/WhereCaptured1.java
! test/tools/javac/generics/7015430/T7015430.out
! test/tools/javac/generics/7151802/T7151802.out
! test/tools/javac/generics/diamond/neg/Neg06.out
! test/tools/javac/generics/diamond/neg/Neg07.out
! test/tools/javac/generics/diamond/neg/Neg10.java
! test/tools/javac/generics/diamond/neg/Neg10.out
! test/tools/javac/generics/inference/6315770/T6315770.out
! test/tools/javac/generics/inference/6611449/T6611449.out
! test/tools/javac/generics/inference/6638712/T6638712b.out
! test/tools/javac/generics/inference/6638712/T6638712d.out
! test/tools/javac/generics/inference/6638712/T6638712e.out
! test/tools/javac/generics/inference/6650759/T6650759m.out
! test/tools/javac/generics/inference/7086601/T7086601a.out
! test/tools/javac/lambda/TargetType10.java
! test/tools/javac/lambda/TargetType10.out
! test/tools/javac/lambda/TargetType20.java
! test/tools/javac/lambda/TargetType20.out
! test/tools/javac/multicatch/Neg07.out



More information about the lambda-dev mailing list