Public Review bug fixes

Dan Smith daniel.smith at
Mon Dec 16 18:47:10 PST 2013

The Public Review period for JSR 335 completed Dec 4.  This included the 0.7.0 version of the language/VM spec document.

I've had a lot of great feedback from the Expert Group, internally at Oracle, and from other contributors.  I've also been working on integrating the documents with the rest of JLS 8 and JVMS 8.  During this period I've addressed a number of bugs in the specification.  As we approach the final draft, I've been tracking these changes more carefully.  A list of all spec bugs (defined as semantically-meaningful changes) appears below.

See to find the full bug report and discussion (e.g., updated specification text).  The complete list can be found here:

Some, marked with an asterisk (*), have not yet been resolved.  They will be addressed this week prior to the final draft.  I believe all known issues have been filed.

Watch for two related emails shortly:
- The 0.8.0 specification and diff
- A summary of feedback from lambda-spec-comments

Lambdas & method references
JDK-8030352  Lambda Spec: Mention lambdas and method refs in 15.7.5
JDK-8029640  Lambda Spec: Require unchecked warnings for parameter/return types of method ref
JDK-8029632  Lambda Spec: Raw inner class constructor ref should not attempt diamond inference
JDK-8029573  Lambda Spec: Target function type of a lambda expression cannot be generic
JDK-8029571  Lambda Spec: Array types cannot be used for static method references
JDK-8029568  Lambda Spec: Clarify the return type of a reference to method getClass
JDK-8029306  Lambda Spec: Capture for method references like Optional<?>::get
JDK-8027798  Lambda Spec: RawType::new is an inexact method reference
JDK-8027738  Lambda Spec: Disallow arrays in intersection cast targets
JDK-8030355* Lambda Spec: Grammar for lambda expressions is ambiguous
JDK-8030356* Lambda Spec: Prohibit RawClass::<Foo>new
JDK-8030351* Lambda Spec: Add method references to 13.1
JDK-8029660* Lambda Spec: Define lambda class behavior for generics/bridges
JDK-8028690* Lambda Spec: Clarify how parameter/return types are derived for MethodHandle::invoke
JDK-8030358* Lambda Spec: Most-specific for an exact method reference targeting different parameter types

Type inference
JDK-8030148  Lambda Spec: Reduction for Foo<?> = Foo<? extends alpha>
JDK-8030018  Lambda Spec: Inference should generate an eq bound from an unboxing constraint
JDK-8030012  Lambda Spec: Allow assignment conversion of lambda results during inference
JDK-8028805  Lambda Spec: Clarify where unchecked conversions occur during inference
JDK-8027859  Lambda Spec: S <= T should lead to = constraints, not <: constraints
JDK-8030478* Lambda Spec: Perform appropriate substitutions on constraint target types in 18.5.2
JDK-8030349* Lambda Spec: Move 'lub' from
JDK-8029866* Lambda Spec: Despite unchecked invocation, parameter types should be inferred
JDK-8029704* Lambda Spec: Fix subtype inference for a non-parameterized inner class of a generic type
JDK-8028813* Lambda Spec: Take multiple upper bounds into account in incorporation
JDK-8028800* Lambda Spec: Support capture when a nested invocation returns an inference variable

Default methods (JLS)
JDK-8030220  Lambda Spec: Define runtime behavior for default methods in
JDK-8030137  Lambda Spec: Error if inherited static method hides an interface method
JDK-8030015  Lambda Spec: Error for TypeVariable.super.m()
JDK-8030150* Lambda Spec: Error for static interface method invocation via an expression

Default methods (JVMS)
JDK-8030281  Lambda Spec: Allow static/special MethodHandles to reference InterfaceMethodrefs
JDK-8027740  Lambda Spec: JVMS "maximally-specific superinterface method" should be defined for interfaces
JDK-8027581  Lambda Spec: method accessibility checking on invokeinterface of j.l.Object methods

More information about the lambda-spec-experts mailing list