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

Neal Gafter neal at gafter.com
Fri Jul 23 06:48:03 PDT 2010


Maurizio-

The test cases do not illustrate what happens in the presence of overloading.  Does the language treat overloaded method resolution and non-overloaded method resolution differently?

-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