- 
    Type:
Bug
 - 
    Resolution: Fixed
 - 
    Priority:
  P5                     
     - 
    Affects Version/s: 8
 - 
    Component/s: tools
 
- 
        b123
 - 
        Not verified
 
                    The final 8 specification of most-specific testing includes the following rules for when two functional interface types may be compared structurally.
When there are no inference variables (15.12.2.5):
"T is not a subtype of S"
When there are inference variables (18.5.4):
---
Si is a functional interface type and Ti is a parameterization of functional interface, I, and none of the following is true:
- Si is a superinterface of I, or a parameterization of a superinterface of I.
- Si is subinterface of I, or a parameterization of a subinterface of I.
- Si is an intersection type and each element of the intersection is a superinterface of I, or a parameterization of a superinterface of I.
- Si is an intersection type and some element of the intersection is a subinterface of I, or a parameterization of a subinterface of I.
---
javac should be updated to conform to these rules. (Current behavior is to test whether either type has a supertype that is a parameterization of the other type's symbol.)
When there are no inference variables (15.12.2.5):
"T is not a subtype of S"
When there are inference variables (18.5.4):
---
Si is a functional interface type and Ti is a parameterization of functional interface, I, and none of the following is true:
- Si is a superinterface of I, or a parameterization of a superinterface of I.
- Si is subinterface of I, or a parameterization of a subinterface of I.
- Si is an intersection type and each element of the intersection is a superinterface of I, or a parameterization of a superinterface of I.
- Si is an intersection type and some element of the intersection is a subinterface of I, or a parameterization of a subinterface of I.
---
javac should be updated to conform to these rules. (Current behavior is to test whether either type has a supertype that is a parameterization of the other type's symbol.)
- relates to
 - 
                    
JDK-8148098 Intersection functional interface types not supported by overload check
-         
     - Open
 
 -         
 - 
                    
JDK-8147496 15.12.2.5: Align check for unrelated functional interfaces with javac
-         
     - Closed
 
 -