Georgii Ustinov created GROOVY-11698:
----------------------------------------
Summary: Instanceof pattern variable doesn't respect scope
Key: GROOVY-11698
URL: https://issues.apache.org/jira/browse/GROOVY-11698
Project: Groovy
Issue Type: Bug
Components: class generator
Reporter: Georgii Ustinov
Hi, I am main supporter of Groovy plugin inside IntelliJ IDEA IDE and currently
processing
[instanceof variable
support.|https://youtrack.jetbrains.com/issue/IDEA-371239/Groovy-Support-instanceof-variable]
I have identified several cases in which pattern matching inside instanceof
doesn't respect the scope and behaviour differs from Java.
See the examples:
1. Instanceof in else branch
Java:
{code:java}
package org.java;
public class MainJava {
static class A {}
static class B extends A{}
public static void main(String[] args) {
A a = new B();
if (!(a instanceof B b)) {
} else {
System.out.println(b);
}
}
}
{code}
Groovy (doesn't compile):
{code:java}
package org.groovy
class Main {
static class A {}
static class B extends A {}
static void main(String[] args) {
A a = new B();
if (!(a instanceof B b)) {
} else {
System.out.println(b)
}
}
}
{code}
2. Instanceof in return statements:
Java
{code:java}
package org.java;
public class MainJava {
static class A {}
static class B extends A{}
public static void main(String[] args) {
A a = new B();
if (!(a instanceof B b)) {
return;
}
System.out.println(b);
}
}{code}
Groovy
{code:java}
package org.groovy
class Main {
static class A {}
static class B extends A {}
static void main(String[] args) {
A a = new B();
if (!(a instanceof B b)) {
return
}
println b
}
}
{code}
Could you, please, fix these issues?
--
This message was sent by Atlassian Jira
(v8.20.10#820010)