KTIJ-26785 [AA] Filter JavaClassMembersEnhancementScope when shortening types

The same way as `FirClassUseSiteMemberScope` is present
when there is an implicit receiver with a pure Kotlin type,
`JavaClassMembersEnhancementScope` is present when
the receiver's type comes from Java sources

^KTIJ-26785 Fixed
This commit is contained in:
Roman Golyshev
2023-08-25 14:19:17 +02:00
committed by teamcity
parent 5aae053785
commit c8ae22eb66
15 changed files with 203 additions and 9 deletions
@@ -0,0 +1,15 @@
// FILE: main.kt
package test
import dependency.JavaInterface
class Foo : JavaInterface {
<expr>val prop: JavaInterface.Nested = JavaInterface.Nested()</expr>
}
// FILE: dependency/JavaInterface.java
package dependency;
public interface JavaInterface {
public class Nested {}
}
@@ -0,0 +1,9 @@
Before shortening: val prop: JavaInterface.Nested = JavaInterface.Nested()
with DO_NOT_SHORTEN:
with SHORTEN_IF_ALREADY_IMPORTED:
with SHORTEN_AND_IMPORT:
[type] JavaInterface.Nested
[qualifier] JavaInterface.Nested()
with SHORTEN_AND_STAR_IMPORT:
[type] JavaInterface.Nested
[qualifier] JavaInterface.Nested()
@@ -0,0 +1,16 @@
// FILE: main.kt
package test
import dependency.JavaInterface
import dependency.JavaInterface.Nested
class Foo : JavaInterface {
<expr>val prop: JavaInterface.Nested = JavaInterface.Nested()</expr>
}
// FILE: dependency/JavaInterface.java
package dependency;
public interface JavaInterface {
public class Nested {}
}
@@ -0,0 +1,11 @@
Before shortening: val prop: JavaInterface.Nested = JavaInterface.Nested()
with DO_NOT_SHORTEN:
with SHORTEN_IF_ALREADY_IMPORTED:
[type] JavaInterface.Nested
[qualifier] JavaInterface.Nested()
with SHORTEN_AND_IMPORT:
[type] JavaInterface.Nested
[qualifier] JavaInterface.Nested()
with SHORTEN_AND_STAR_IMPORT:
[type] JavaInterface.Nested
[qualifier] JavaInterface.Nested()
@@ -0,0 +1,15 @@
// FILE: main.kt
package test
import dependency.JavaBaseClass
class Foo : JavaBaseClass() {
<expr>val prop: JavaBaseClass.Nested = JavaBaseClass.Nested()</expr>
}
// FILE: dependency/JavaBaseClass.java
package dependency;
public class JavaBaseClass {
public static class Nested {}
}
@@ -0,0 +1,11 @@
Before shortening: val prop: JavaBaseClass.Nested = JavaBaseClass.Nested()
with DO_NOT_SHORTEN:
with SHORTEN_IF_ALREADY_IMPORTED:
[type] JavaBaseClass.Nested
[qualifier] JavaBaseClass.Nested()
with SHORTEN_AND_IMPORT:
[type] JavaBaseClass.Nested
[qualifier] JavaBaseClass.Nested()
with SHORTEN_AND_STAR_IMPORT:
[type] JavaBaseClass.Nested
[qualifier] JavaBaseClass.Nested()
@@ -0,0 +1,15 @@
// FILE: main.kt
package test
import dependency.JavaInterface
fun JavaInterface.foo() {
<expr>val prop: JavaInterface.Nested = JavaInterface.Nested()</expr>
}
// FILE: dependency/JavaInterface.java
package dependency;
public interface JavaInterface {
public class Nested {}
}
@@ -0,0 +1,9 @@
Before shortening: val prop: JavaInterface.Nested = JavaInterface.Nested()
with DO_NOT_SHORTEN:
with SHORTEN_IF_ALREADY_IMPORTED:
with SHORTEN_AND_IMPORT:
[type] JavaInterface.Nested
[qualifier] JavaInterface.Nested()
with SHORTEN_AND_STAR_IMPORT:
[type] JavaInterface.Nested
[qualifier] JavaInterface.Nested()
@@ -0,0 +1,15 @@
// FILE: main.kt
package test
import dependency.JavaBaseClass
fun JavaBaseClass.foo() {
<expr>val prop: JavaBaseClass.Nested = JavaBaseClass.Nested()</expr>
}
// FILE: dependency/JavaBaseClass.java
package dependency;
public class JavaBaseClass {
public static class Nested {}
}
@@ -0,0 +1,9 @@
Before shortening: val prop: JavaBaseClass.Nested = JavaBaseClass.Nested()
with DO_NOT_SHORTEN:
with SHORTEN_IF_ALREADY_IMPORTED:
with SHORTEN_AND_IMPORT:
[type] JavaBaseClass.Nested
[qualifier] JavaBaseClass.Nested()
with SHORTEN_AND_STAR_IMPORT:
[type] JavaBaseClass.Nested
[qualifier] JavaBaseClass.Nested()