hg: lambda/lambda/langtools: Next round of implementation reflecting the latest 'State of the Lambda' draft; implemented features are:

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Fri Jul 23 08:02:20 PDT 2010


On 23/07/10 14:48, Neal Gafter wrote:
> Maurizio-
>
> The test cases do not illustrate what happens in the presence of overloading.
These two tests:

+ test/tools/javac/lambda/TargetType01.java (negative test)
+ test/tools/javac/lambda/TargetType02.java (positive test)


Show an example of target typing with overloading.
>    
> Does the language treat overloaded method resolution and non-overloaded method resolution differently?
>    
What do you mean?

Maurizio
> -Neal
>
> On Jul 23, 2010, at 1:54 AM, maurizio.cimadamore at oracle.com wrote:
>
>    
>> Changeset: 352641ddfafa
>> Author:    mcimadamore
>> Date:      2010-07-23 09:52 +0100
>> URL:       http://hg.openjdk.java.net/lambda/lambda/langtools/rev/352641ddfafa
>>
>> Next round of implementation reflecting the latest 'State of the Lambda' draft; implemented features are:
>>
>> *) Lambda expressions
>> New syntax. The non-terminal symbol '#' is still used to introduce both lambda expressions and function types, but a bunch of improvements have been made.
>> Now, the lambda body is always denoted by braces '{' '}', as in #(int x) {}. Moreover, if the argument list is empty, it can be omitted, as in #{...}.
>>
>> *) SAM conversion&  Target typing
>> Updated to latest specification. Lambda expression are now only allowed where a target type is expected (return/assignment/method call - and, for compatibility with old prototype). The target type can be either a function type or a SAM type. The target type is used for inferring partially specified lambda types, as in #(x) { ... }.
>>
>> TODO:
>>
>> *) break/continue/return
>> *) implementation of effectively final analysis
>> *) method references
>>
>> ! src/share/classes/com/sun/runtime/ProxyHelper.java
>> ! src/share/classes/com/sun/source/tree/LambdaExpressionTree.java
>> ! src/share/classes/com/sun/tools/javac/code/Flags.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/AttrContext.java
>> ! src/share/classes/com/sun/tools/javac/comp/Check.java
>> ! src/share/classes/com/sun/tools/javac/comp/Enter.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/Resolve.java
>> + src/share/classes/com/sun/tools/javac/comp/Unlambda.java
>> ! src/share/classes/com/sun/tools/javac/main/JavaCompiler.java
>> ! src/share/classes/com/sun/tools/javac/model/JavacTypes.java
>> ! src/share/classes/com/sun/tools/javac/parser/JavacParser.java
>> ! src/share/classes/com/sun/tools/javac/parser/Lexer.java
>> ! src/share/classes/com/sun/tools/javac/parser/Scanner.java
>> ! src/share/classes/com/sun/tools/javac/resources/compiler.properties
>> ! src/share/classes/com/sun/tools/javac/tree/JCTree.java
>> ! src/share/classes/com/sun/tools/javac/tree/TreeCopier.java
>> ! src/share/classes/com/sun/tools/javac/tree/TreeInfo.java
>> ! src/share/classes/com/sun/tools/javac/tree/TreeMaker.java
>> ! src/share/classes/com/sun/tools/javac/tree/TreeScanner.java
>> ! src/share/classes/com/sun/tools/javac/util/Log.java
>> ! src/share/classes/com/sun/tools/javac/util/RichDiagnosticFormatter.java
>> ! src/share/classes/javax/lang/model/util/Types.java
>> ! test/tools/javac/defender/Pos01.java
>> ! test/tools/javac/lambda/BadAccess.java
>> ! test/tools/javac/lambda/BadAccess.out
>> ! test/tools/javac/lambda/BadConv01.java
>> ! test/tools/javac/lambda/BadConv02.java
>> - test/tools/javac/lambda/BadLambdaCall.java
>> - test/tools/javac/lambda/BadLambdaCall.out
>> + test/tools/javac/lambda/BadLambdaPos.java
>> + test/tools/javac/lambda/BadLambdaPos.out
>> ! test/tools/javac/lambda/BadReturn.java
>> ! test/tools/javac/lambda/BadReturn.out
>> + test/tools/javac/lambda/BadTargetType.java
>> + test/tools/javac/lambda/BadTargetType.out
>> ! test/tools/javac/lambda/FuncType01.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/LambdaConv02.java
>> + test/tools/javac/lambda/LambdaConv02.out
>> ! test/tools/javac/lambda/LambdaConv03.java
>> ! test/tools/javac/lambda/LambdaConv04.java
>> ! test/tools/javac/lambda/LambdaConv07.java
>> ! test/tools/javac/lambda/LambdaExpr01.java
>> ! test/tools/javac/lambda/LambdaExpr02.java
>> - test/tools/javac/lambda/LambdaExpr03.java
>> ! test/tools/javac/lambda/LambdaExpr04.java
>> ! test/tools/javac/lambda/LambdaScope01.java
>> ! test/tools/javac/lambda/LambdaScope02.java
>> ! test/tools/javac/lambda/NakedThis.java
>> - test/tools/javac/lambda/NakedThis.out
>> + test/tools/javac/lambda/TargetType01.java
>> + test/tools/javac/lambda/TargetType01.out
>> + test/tools/javac/lambda/TargetType02.java
>> + test/tools/javac/lambda/TargetType03.java
>> + test/tools/javac/lambda/TargetType04.java
>> + test/tools/javac/lambda/TargetType04.out
>> + test/tools/javac/lambda/TargetType05.java
>> + test/tools/javac/lambda/TargetType06.java
>> + test/tools/javac/transparency/Neg09.java
>> + test/tools/javac/transparency/Neg09.out
>>
>>
>>      



More information about the lambda-dev mailing list