RFR: 8260566: Pattern type X is a subtype of expression type Y message is incorrect

Guoxiong Li github.com+13688759+lgxbslgx at openjdk.java.net
Fri Jan 29 12:26:48 UTC 2021


On Fri, 29 Jan 2021 11:59:30 GMT, Tagir F. Valeev <tvaleev at openjdk.org> wrote:

>> Hi all,
>> 
>> The order of the arguments is wrong when using method `Errors.InstanceofPatternNoSubtype`.
>> 
>> This patch fixes it and revises the corresponding tests.
>> Thank you for taking the time to review.
>> And it may be good to fix JDK16 as well.
>> 
>> Best Regards.
>> -- xiong
>
> The fix doesn't seem correct to me. Consider the code in the ticket:
> 
> public class Test {
>   void test(String s) {
>     if(s instanceof Object obj) {}
>   }
> }
> 
> The previous message was:
> Test.java:3: error: pattern type Object is a subtype of expression type String
>     if(s instanceof Object obj) {}
> It was incorrect because Object is not a subtype of String
> 
> After applying this fix, the message will be
> Test.java:3: error: pattern type String is a subtype of expression type Object
>     if(s instanceof Object obj) {}
> It's also incorrect because String is not a pattern type, and Object is not an expression type. A correct message would be
> Test.java:3: error: expression type String is a subtype of pattern type Object
> or
> Test.java:3: error: pattern type Object is a supertype of expression type String

@amaembo You are right. I will fix it later.

-------------

PR: https://git.openjdk.java.net/jdk/pull/2311


More information about the compiler-dev mailing list