hg: lambda/lambda/langtools: Bug fixes:

maurizio.cimadamore at oracle.com maurizio.cimadamore at oracle.com
Wed Sep 12 08:17:26 PDT 2012


Changeset: 0ea8d35cbe12
Author:    mcimadamore
Date:      2012-09-12 16:16 +0100
URL:       http://hg.openjdk.java.net/lambda/lambda/langtools/rev/0ea8d35cbe12

Bug fixes:
*) most specific resolution crashes on stuck lambdas
*) deferred types are redundantly type-checked several times against same target
*) code for checking constructor type doesn't go through Attr.checkId
*) speculative cache mismatches between Resolve.access and Attr.checkId leads to compiler crashes
*) effects of speculative attribution are undone on a per-argument basis rather than on a per-resolution basis
*) speculative cache contents are overwritten by deferred type-checking of nested stuck expressions
*) certain cases of erroneous member reference lookup are not handled by Attr.visitReference
*) special cases of method references (getClass()/Array.clone()) not handled properly
*) spurious crashes when running in 'diamond finder' mode
*) postAttr analyzer erroneously scans skipped trees during lambda attribution
*) flow analysis of lambda expression erroneously scans skipped trees

Enhancements/cleanups:
*) Added recovery attribution step for unchecked arguments - this allows for more diagnostics to be emitted by javac
*) Simplified code for member reference resolution
*) Member reference resolution now reuses standard method resolution diagnostics
*) The case in which no member reference is found is now treated as a normal error (not dependent on target-type)
*) Move deferredAttrContext from ResultInfo to CheckContext (where it belongs)
*) Replaced AttrContext.useVarargs with a more general 'pendingResolutionPhase' parameter
*) Removed redundant flags from AttrContext

! src/share/classes/com/sun/tools/javac/code/Kinds.java
! src/share/classes/com/sun/tools/javac/code/Symbol.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/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/Flow.java
! src/share/classes/com/sun/tools/javac/comp/Infer.java
! src/share/classes/com/sun/tools/javac/comp/Lower.java
! src/share/classes/com/sun/tools/javac/comp/MemberEnter.java
! src/share/classes/com/sun/tools/javac/comp/Resolve.java
! src/share/classes/com/sun/tools/javac/resources/compiler.properties
! test/tools/javac/6840059/T6840059.out
! test/tools/javac/6857948/T6857948.out
! test/tools/javac/diags/CheckResourceKeys.java
! test/tools/javac/diags/examples.not-yet.txt
! test/tools/javac/diags/examples/KindnameConstructor.java
+ test/tools/javac/lambda/ErroneousArg.java
+ test/tools/javac/lambda/ErroneousArg.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/MethodReference39.out
! test/tools/javac/lambda/MethodReference50.out
+ test/tools/javac/lambda/MethodReference51.java
+ test/tools/javac/lambda/MethodReference51.out
+ test/tools/javac/lambda/MethodReference52.java
+ test/tools/javac/lambda/MethodReference52.out
+ test/tools/javac/lambda/MethodReference53.java
+ test/tools/javac/lambda/MethodReference53.out
+ test/tools/javac/lambda/MostSpecific06.java
+ test/tools/javac/lambda/MostSpecific06.out
+ test/tools/javac/lambda/MostSpecific07.java
+ test/tools/javac/lambda/MostSpecific07.out
! test/tools/javac/lambda/TargetType20.out
! test/tools/javac/lambda/TargetType33.out
+ test/tools/javac/lambda/TargetType42.java
+ test/tools/javac/lambda/TargetType43.java
+ test/tools/javac/lambda/TargetType43.out
+ test/tools/javac/lambda/speculative/DiamondFinder.java
! test/tools/javac/lambda/sqe/methodReference/MethodRef_neg.out
! test/tools/javac/positions/T6264029.out



More information about the lambda-dev mailing list