hg: lambda/lambda/langtools: Disallow SAM conversion where target-type is an abstract class.

maurizio cimadamore maurizio.cimadamore at oracle.com
Fri Feb 25 11:15:36 PST 2011


On 25/02/2011 19:01, Neal Gafter wrote:
> I don't understand this code in Types.java:
>
> + if (t.tsym.isInterface() && !allowAbstractClassInSamConversion) {
> +     //t must be an abstract class or an interface
> +      return new SAMResult(site, t, 
> "target.for.lambda.conv.must.be.interface");
> + }
Should be

!t.tsym.isInterface()

Thanks
Maurizio
>
> It appears to disallow interfaces rather than disallowing classes.
>
> On Fri, Feb 25, 2011 at 10:08 AM, <maurizio.cimadamore at oracle.com 
> <mailto:maurizio.cimadamore at oracle.com>> wrote:
>
>     Changeset: 1b56e8c66272
>     Author:    mcimadamore
>     Date:      2011-02-25 18:07 +0000
>     URL:
>     http://hg.openjdk.java.net/lambda/lambda/langtools/rev/1b56e8c66272
>
>     Disallow SAM conversion where target-type is an abstract class.
>     This patch brings the compiler in line with what has been
>     discussed by the lambda EG.
>     Old semantics is still allowed (mostly for the purposes of running
>     existing regression tests) using the hidden flag -XDabstractSAM.
>
>     ! src/share/classes/com/sun/tools/javac/code/Types.java
>     ! src/share/classes/com/sun/tools/javac/resources/compiler.properties
>     ! test/tools/javac/defender/Pos01.java
>     ! test/tools/javac/lambda/BadAccess.java
>     ! test/tools/javac/lambda/BadAccess02.java
>     ! test/tools/javac/lambda/BadBreakContinue.java
>     ! test/tools/javac/lambda/BadReturn.java
>     ! test/tools/javac/lambda/Defender01.java
>     ! test/tools/javac/lambda/ExceptionTransparency01.java
>     ! test/tools/javac/lambda/ExceptionTransparency02.java
>     ! test/tools/javac/lambda/ExceptionTransparency03.java
>     ! test/tools/javac/lambda/LambdaCapture01.java
>     ! test/tools/javac/lambda/LambdaCapture02.java
>     ! test/tools/javac/lambda/LambdaCapture03.java
>     ! test/tools/javac/lambda/LambdaCapture04.java
>     ! test/tools/javac/lambda/LambdaCapture05.java
>     ! test/tools/javac/lambda/LambdaConv01.java
>     ! test/tools/javac/lambda/LambdaConv03.java
>     ! test/tools/javac/lambda/LambdaConv05.java
>     ! test/tools/javac/lambda/LambdaConv06.java
>     ! test/tools/javac/lambda/LambdaConv08.java
>     ! test/tools/javac/lambda/LambdaConv09.java
>     ! test/tools/javac/lambda/LambdaConv10.java
>     ! test/tools/javac/lambda/LambdaConv13.java
>     ! test/tools/javac/lambda/LambdaConversionTest.java
>     ! test/tools/javac/lambda/LambdaExpr01.java
>     ! test/tools/javac/lambda/LambdaExpr02.java
>     ! test/tools/javac/lambda/LambdaExpr04.java
>     ! test/tools/javac/lambda/LambdaExpr05.java
>     ! test/tools/javac/lambda/LambdaExprNotVoid.java
>     ! test/tools/javac/lambda/LambdaScope01.java
>     ! test/tools/javac/lambda/LambdaScope03.java
>     ! test/tools/javac/lambda/LocalBreakAndContinue.java
>     ! test/tools/javac/lambda/MethodReference01.java
>     ! test/tools/javac/lambda/MethodReference02.java
>     ! test/tools/javac/lambda/MethodReference03.java
>     ! test/tools/javac/lambda/MethodReference05.java
>     ! test/tools/javac/lambda/MethodReference07.java
>     ! test/tools/javac/lambda/MethodReference08.java
>     ! test/tools/javac/lambda/MethodReference09.java
>     ! test/tools/javac/lambda/MethodReference10.java
>     ! test/tools/javac/lambda/MethodReference11.java
>     ! test/tools/javac/lambda/MethodReference12.java
>     ! test/tools/javac/lambda/MethodReference13.java
>     ! test/tools/javac/lambda/MethodReference14.java
>     ! test/tools/javac/lambda/MethodReference15.java
>     ! test/tools/javac/lambda/MethodReference16.java
>     ! test/tools/javac/lambda/MethodReference17.java
>     ! test/tools/javac/lambda/MethodReference18.java
>     ! test/tools/javac/lambda/MethodReference19.java
>     ! test/tools/javac/lambda/MethodReference20.java
>     ! test/tools/javac/lambda/NakedThis.java
>     ! test/tools/javac/lambda/TargetType01.java
>     ! test/tools/javac/lambda/TargetType03.java
>     ! test/tools/javac/lambda/TargetType04.java
>     ! test/tools/javac/lambda/TargetType05.java
>     ! test/tools/javac/lambda/TargetType06.java
>     ! test/tools/javac/lambda/TargetType07.java
>     ! test/tools/javac/lambda/TargetType08.java
>     ! test/tools/javac/lambda/TargetType10.java
>     ! test/tools/javac/lambda/TargetType11.java
>     ! test/tools/javac/lambda/TargetType12.java
>     ! test/tools/javac/lambda/TargetType13.java
>     ! test/tools/javac/lambda/TargetType14.java
>     ! test/tools/javac/lambda/TargetType15.java
>     ! test/tools/javac/lambda/TargetType16.java
>     !
>     test/tools/javac/lambda/badMemberRefBytecode/TestBadMemberRefBytecode.java
>     ! test/tools/javac/meth/InvokeDynTrans.java
>
>
>



More information about the lambda-dev mailing list