hg: lambda/lambda/langtools: Lambda attribution overhaul.

maurizio.cimadamore at oracle.com maurizio.cimadamore at oracle.com
Thu May 24 06:37:38 PDT 2012


Changeset: 314e550e28af
Author:    mcimadamore
Date:      2012-05-24 14:35 +0100
URL:       http://hg.openjdk.java.net/lambda/lambda/langtools/rev/314e550e28af

Lambda attribution overhaul.
*) consistent use of target-typing
*) nested generic method call support
*) diamond in method context support
*) conditional in method context support
*) better diagnostic generation for erroneous poly expressions
*) entirely rewritten logic for supporting speculative attribution (see DeferredAttr)
*) out-of-order method checking support
*) improvements in inference infrastructure
*) dropped PolyType class
*) dropped usage of ForAll for partially instantiated method types
*) dropped extra method check to verify correctness of inference result (this is now handled by a deferred soundness checks)

! src/share/classes/com/sun/tools/javac/code/Printer.java
! src/share/classes/com/sun/tools/javac/code/Source.java
! src/share/classes/com/sun/tools/javac/code/Type.java
! src/share/classes/com/sun/tools/javac/code/TypeTags.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/AttrContext.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/Infer.java
! src/share/classes/com/sun/tools/javac/comp/Resolve.java
! src/share/classes/com/sun/tools/javac/comp/TransTypes.java
! src/share/classes/com/sun/tools/javac/resources/compiler.properties
! src/share/classes/com/sun/tools/javac/tree/Pretty.java
! src/share/classes/com/sun/tools/javac/tree/TreeInfo.java
! src/share/classes/com/sun/tools/javac/util/AbstractDiagnosticFormatter.java
! src/share/classes/com/sun/tools/javac/util/RichDiagnosticFormatter.java
! test/tools/javac/6758789/T6758789b.out
! test/tools/javac/6840059/T6840059.out
! test/tools/javac/6979683/TestCast6979683_BAD34.java.errlog
! test/tools/javac/6979683/TestCast6979683_BAD35.java.errlog
! test/tools/javac/6979683/TestCast6979683_BAD36.java.errlog
! test/tools/javac/6979683/TestCast6979683_BAD37.java.errlog
! test/tools/javac/6979683/TestCast6979683_BAD38.java.errlog
! test/tools/javac/6979683/TestCast6979683_BAD39.java.errlog
! test/tools/javac/7132880/T7132880.out
! test/tools/javac/Diagnostics/6722234/T6722234a_1.out
! test/tools/javac/Diagnostics/6722234/T6722234a_2.out
! test/tools/javac/Diagnostics/6722234/T6722234b_1.out
! test/tools/javac/Diagnostics/6722234/T6722234b_2.out
! test/tools/javac/Diagnostics/6722234/T6722234c.out
! test/tools/javac/Diagnostics/6722234/T6722234d_1.out
! test/tools/javac/Diagnostics/6722234/T6722234d_2.out
! test/tools/javac/Diagnostics/6799605/T6799605.out
! test/tools/javac/Diagnostics/6862608/T6862608a.out
! test/tools/javac/Diagnostics/6862608/T6862608b.out
! test/tools/javac/OverrideChecks/6400189/T6400189a.out
! test/tools/javac/OverrideChecks/6400189/T6400189b.out
! test/tools/javac/StringsInSwitch/BadlyTypedLabel1.out
! test/tools/javac/StringsInSwitch/BadlyTypedLabel2.out
! test/tools/javac/T6326754.out
! test/tools/javac/TryWithResources/TwrOnNonResource.out
! test/tools/javac/cast/6270087/T6270087neg.out
! test/tools/javac/cast/6557182/T6557182.out
! test/tools/javac/cast/6665356/T6665356.out
! test/tools/javac/cast/6795580/T6795580.out
! test/tools/javac/cast/6932571/T6932571neg.out
! test/tools/javac/cast/7005095/T7005095neg.out
! test/tools/javac/cast/7005671/T7005671.out
! test/tools/javac/diags/examples.not-yet.txt
! test/tools/javac/diags/examples/ApplicableMethodFound1.java
! test/tools/javac/diags/examples/CantApplyDiamond1.java
- test/tools/javac/diags/examples/FullInstSig.java
! test/tools/javac/diags/examples/IncompatibleTypes1.java
! test/tools/javac/diags/examples/InconvertibleTypes.java
! test/tools/javac/diags/examples/InferVarargsArgumentMismatch.java
! test/tools/javac/diags/examples/InferredDoNotConformToBounds.java
- test/tools/javac/diags/examples/InvalidInferredTypes.java
! test/tools/javac/diags/examples/KindnameConstructor.java
! test/tools/javac/diags/examples/NotApplicableMethodFound.java
! test/tools/javac/diags/examples/PossibleLossPrecision.java
! test/tools/javac/diags/examples/ResourceNotApplicableToType.java
! test/tools/javac/diags/examples/UndeterminedType1.java
! test/tools/javac/diags/examples/VarargsArgumentMismatch.java
! test/tools/javac/diags/examples/VerboseResolveMulti1.java
! test/tools/javac/diags/examples/WhereCaptured.java
! test/tools/javac/diags/examples/WhereCaptured1.java
! test/tools/javac/diags/examples/WhereIntersection.java
! test/tools/javac/diags/examples/WhereTypeVar.java
! test/tools/javac/failover/CheckAttributedTree.java
! test/tools/javac/generics/6207386/T6207386.out
! test/tools/javac/generics/7015430/T7015430.out
! test/tools/javac/generics/7151802/T7151802.out
! test/tools/javac/generics/diamond/neg/Neg05.out
! test/tools/javac/generics/diamond/neg/Neg06.out
! test/tools/javac/generics/diamond/neg/Neg07.out
! 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/T6638712a.out
! test/tools/javac/generics/inference/6638712/T6638712b.out
! test/tools/javac/generics/inference/6638712/T6638712c.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/6838943/T6838943.out
! test/tools/javac/generics/inference/7086586/T7086586.out
! test/tools/javac/generics/rawOverride/7062745/GenericOverrideTest.java
! test/tools/javac/generics/rawOverride/7062745/T7062745neg.out
! test/tools/javac/generics/wildcards/6886247/T6886247_2.out
! test/tools/javac/lambda/BadConv03.out
! test/tools/javac/lambda/BadConv04.out
! test/tools/javac/lambda/BadExpressionLambda.out
! test/tools/javac/lambda/BadLambdaPos.out
! test/tools/javac/lambda/BadReturn.out
! test/tools/javac/lambda/BadTargetType.out
! test/tools/javac/lambda/LambdaConv09.out
! test/tools/javac/lambda/LambdaConv10.out
! test/tools/javac/lambda/LambdaConv21.out
! test/tools/javac/lambda/LambdaExpr10.out
! test/tools/javac/lambda/LambdaExprNotVoid.out
! test/tools/javac/lambda/MethodReference04.out
! test/tools/javac/lambda/MethodReference09.out
! test/tools/javac/lambda/MethodReference20.out
! test/tools/javac/lambda/MethodReference22.out
! test/tools/javac/lambda/MethodReference23.out
! test/tools/javac/lambda/MethodReference28.out
! test/tools/javac/lambda/TargetType04.out
! test/tools/javac/lambda/TargetType14.out
! test/tools/javac/lambda/TargetType17.out
! test/tools/javac/lambda/TargetType20.java
+ test/tools/javac/lambda/TargetType20.out
! test/tools/javac/lambda/TargetType21.out
! test/tools/javac/lambda/TargetType24.out
! test/tools/javac/lambda/TargetType27.java
! test/tools/javac/lambda/TargetType27.out
! test/tools/javac/lambda/TargetType28.out
! test/tools/javac/lambda/TargetType32.java
- test/tools/javac/lambda/TargetType32.out
! test/tools/javac/lambda/TargetType33.out
! test/tools/javac/lambda/VoidCompatibility.out
! test/tools/javac/lambda/sqe/SAM_types/LambdaTest2_neg1.out
! test/tools/javac/lambda/sqe/SAM_types/NonSAM1.out
! test/tools/javac/lambda/sqe/SAM_types/NonSAM3.out
! test/tools/javac/lambda/sqe/lambdaExpression/AbstractClass_neg.out
! test/tools/javac/lambda/sqe/lambdaExpression/InvalidExpression3.out
! test/tools/javac/lambda/sqe/lambdaExpression/InvalidExpression4.out
! test/tools/javac/lambda/sqe/lambdaExpression/InvalidExpression5.out
! test/tools/javac/lambda/sqe/methodReference/MethodRef_neg.out
! test/tools/javac/multicatch/Neg06.out
! test/tools/javac/multicatch/Neg07.out
! test/tools/javac/nativeHeaders/NativeHeaderTest.java
! test/tools/javac/types/CastObjectToPrimitiveTest.out
! test/tools/javac/varargs/6313164/T6313164.out
! test/tools/javac/varargs/7097436/T7097436.out



More information about the lambda-dev mailing list