FIR2IR: drop redundant visibility check in fake override generator
This commit is contained in:
committed by
Space Team
parent
cb39221f85
commit
7205a90d9d
+2
-9
@@ -30,7 +30,6 @@ import org.jetbrains.kotlin.ir.types.*
|
||||
import org.jetbrains.kotlin.ir.util.IdSignature
|
||||
import org.jetbrains.kotlin.ir.util.isComposite
|
||||
import org.jetbrains.kotlin.ir.util.parentAsClass
|
||||
import org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
class FakeOverrideGenerator(
|
||||
@@ -49,12 +48,6 @@ class FakeOverrideGenerator(
|
||||
return conversionScope.withProperty(this, firProperty = null, f)
|
||||
}
|
||||
|
||||
private fun FirCallableDeclaration.allowsToHaveFakeOverrideIn(klass: FirClass): Boolean {
|
||||
if (!allowsToHaveFakeOverride) return false
|
||||
if (this.visibility != JavaDescriptorVisibilities.PACKAGE_VISIBILITY) return true
|
||||
return this.symbol.callableId.packageName == klass.symbol.classId.packageFqName
|
||||
}
|
||||
|
||||
private fun IrType.containsErrorType(): Boolean {
|
||||
return when (this) {
|
||||
is IrErrorType -> true
|
||||
@@ -218,7 +211,7 @@ class FakeOverrideGenerator(
|
||||
// We have already a FIR declaration for such fake override
|
||||
originalDeclaration to computeBaseSymbols(originalSymbol, computeDirectOverridden, scope, classLookupTag)
|
||||
}
|
||||
originalDeclaration.allowsToHaveFakeOverrideIn(klass) -> {
|
||||
originalDeclaration.allowsToHaveFakeOverride -> {
|
||||
// Trivial fake override case
|
||||
// We've got no relevant declaration in FIR world for such a fake override in current class, thus we're creating it here
|
||||
val fakeOverrideSymbol = createFakeOverrideSymbol(originalDeclaration, baseSymbol)
|
||||
@@ -272,7 +265,7 @@ class FakeOverrideGenerator(
|
||||
scope, classLookupTag
|
||||
)
|
||||
}
|
||||
originalDeclaration.allowsToHaveFakeOverrideIn(klass) -> {
|
||||
originalDeclaration.allowsToHaveFakeOverride -> {
|
||||
// Trivial fake override case
|
||||
// We've got no relevant declaration in FIR world for such a fake override in current class, thus we're creating it here
|
||||
val fakeOverrideSymbol = createFakeOverrideSymbol(originalDeclaration, baseSymbol)
|
||||
|
||||
Generated
+6
@@ -154,6 +154,12 @@ public class Fir2IrTextTestGenerated extends AbstractFir2IrTextTest {
|
||||
runTest("compiler/testData/ir/irText/classes/enumWithSecondaryCtor.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("fakeOverridesForJavaNonStaticMembers.kt")
|
||||
public void testFakeOverridesForJavaNonStaticMembers() throws Exception {
|
||||
runTest("compiler/testData/ir/irText/classes/fakeOverridesForJavaNonStaticMembers.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("fakeOverridesForJavaStaticMembers.kt")
|
||||
public void testFakeOverridesForJavaStaticMembers() throws Exception {
|
||||
|
||||
+6
@@ -154,6 +154,12 @@ public class LightTreeFir2IrTextTestGenerated extends AbstractLightTreeFir2IrTex
|
||||
runTest("compiler/testData/ir/irText/classes/enumWithSecondaryCtor.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("fakeOverridesForJavaNonStaticMembers.kt")
|
||||
public void testFakeOverridesForJavaNonStaticMembers() throws Exception {
|
||||
runTest("compiler/testData/ir/irText/classes/fakeOverridesForJavaNonStaticMembers.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("fakeOverridesForJavaStaticMembers.kt")
|
||||
public void testFakeOverridesForJavaStaticMembers() throws Exception {
|
||||
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
FILE fqName:a fileName:/fakeOverridesForJavaNonStaticMembers.kt
|
||||
CLASS CLASS name:Test modality:FINAL visibility:public superTypes:[a.Base]
|
||||
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:a.Test
|
||||
CONSTRUCTOR visibility:public <> () returnType:a.Test [primary]
|
||||
BLOCK_BODY
|
||||
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in a.Base'
|
||||
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Test modality:FINAL visibility:public superTypes:[a.Base]'
|
||||
FUN FAKE_OVERRIDE name:publicMethod visibility:public modality:OPEN <> ($this:a.Base) returnType:kotlin.Unit [fake_override]
|
||||
overridden:
|
||||
public open fun publicMethod (): kotlin.Unit declared in a.Base
|
||||
$this: VALUE_PARAMETER name:<this> type:a.Base
|
||||
FUN FAKE_OVERRIDE name:protectedMethod visibility:protected/*protected and package*/ modality:OPEN <> ($this:a.Base) returnType:kotlin.Unit [fake_override]
|
||||
overridden:
|
||||
protected/*protected and package*/ open fun protectedMethod (): kotlin.Unit declared in a.Base
|
||||
$this: VALUE_PARAMETER name:<this> type:a.Base
|
||||
FUN FAKE_OVERRIDE name:packagePrivateMethod visibility:public/*package*/ modality:OPEN <> ($this:a.Base) returnType:kotlin.Unit [fake_override]
|
||||
overridden:
|
||||
public/*package*/ open fun packagePrivateMethod (): kotlin.Unit declared in a.Base
|
||||
$this: VALUE_PARAMETER name:<this> type:a.Base
|
||||
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
|
||||
overridden:
|
||||
public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in a.Base
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
||||
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
|
||||
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
|
||||
overridden:
|
||||
public open fun hashCode (): kotlin.Int [fake_override] declared in a.Base
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
||||
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
|
||||
overridden:
|
||||
public open fun toString (): kotlin.String [fake_override] declared in a.Base
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
||||
FILE fqName:<root> fileName:/fakeOverridesForJavaNonStaticMembers2.kt
|
||||
CLASS CLASS name:Test2 modality:FINAL visibility:public superTypes:[a.Base]
|
||||
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Test2
|
||||
CONSTRUCTOR visibility:public <> () returnType:<root>.Test2 [primary]
|
||||
BLOCK_BODY
|
||||
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in a.Base'
|
||||
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Test2 modality:FINAL visibility:public superTypes:[a.Base]'
|
||||
FUN FAKE_OVERRIDE name:publicMethod visibility:public modality:OPEN <> ($this:a.Base) returnType:kotlin.Unit [fake_override]
|
||||
overridden:
|
||||
public open fun publicMethod (): kotlin.Unit declared in a.Base
|
||||
$this: VALUE_PARAMETER name:<this> type:a.Base
|
||||
FUN FAKE_OVERRIDE name:protectedMethod visibility:protected/*protected and package*/ modality:OPEN <> ($this:a.Base) returnType:kotlin.Unit [fake_override]
|
||||
overridden:
|
||||
protected/*protected and package*/ open fun protectedMethod (): kotlin.Unit declared in a.Base
|
||||
$this: VALUE_PARAMETER name:<this> type:a.Base
|
||||
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
|
||||
overridden:
|
||||
public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in a.Base
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
||||
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
|
||||
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
|
||||
overridden:
|
||||
public open fun hashCode (): kotlin.Int [fake_override] declared in a.Base
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
||||
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
|
||||
overridden:
|
||||
public open fun toString (): kotlin.String [fake_override] declared in a.Base
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
FILE fqName:a fileName:/fakeOverridesForJavaNonStaticMembers.kt
|
||||
CLASS CLASS name:Test modality:FINAL visibility:public superTypes:[a.Base]
|
||||
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:a.Test
|
||||
CONSTRUCTOR visibility:public <> () returnType:a.Test [primary]
|
||||
BLOCK_BODY
|
||||
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in a.Base'
|
||||
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Test modality:FINAL visibility:public superTypes:[a.Base]'
|
||||
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
|
||||
overridden:
|
||||
public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in a.Base
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
||||
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
|
||||
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
|
||||
overridden:
|
||||
public open fun hashCode (): kotlin.Int [fake_override] declared in a.Base
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
||||
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
|
||||
overridden:
|
||||
public open fun toString (): kotlin.String [fake_override] declared in a.Base
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
||||
FUN FAKE_OVERRIDE name:publicMethod visibility:public modality:OPEN <> ($this:a.Base) returnType:kotlin.Unit [fake_override]
|
||||
overridden:
|
||||
public open fun publicMethod (): kotlin.Unit declared in a.Base
|
||||
$this: VALUE_PARAMETER name:<this> type:a.Base
|
||||
FUN FAKE_OVERRIDE name:protectedMethod visibility:protected/*protected and package*/ modality:OPEN <> ($this:a.Base) returnType:kotlin.Unit [fake_override]
|
||||
overridden:
|
||||
protected/*protected and package*/ open fun protectedMethod (): kotlin.Unit declared in a.Base
|
||||
$this: VALUE_PARAMETER name:<this> type:a.Base
|
||||
FUN FAKE_OVERRIDE name:packagePrivateMethod visibility:public/*package*/ modality:OPEN <> ($this:a.Base) returnType:kotlin.Unit [fake_override]
|
||||
overridden:
|
||||
public/*package*/ open fun packagePrivateMethod (): kotlin.Unit declared in a.Base
|
||||
$this: VALUE_PARAMETER name:<this> type:a.Base
|
||||
FILE fqName:<root> fileName:/fakeOverridesForJavaNonStaticMembers2.kt
|
||||
CLASS CLASS name:Test2 modality:FINAL visibility:public superTypes:[a.Base]
|
||||
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Test2
|
||||
CONSTRUCTOR visibility:public <> () returnType:<root>.Test2 [primary]
|
||||
BLOCK_BODY
|
||||
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in a.Base'
|
||||
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Test2 modality:FINAL visibility:public superTypes:[a.Base]'
|
||||
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
|
||||
overridden:
|
||||
public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in a.Base
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
||||
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
|
||||
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
|
||||
overridden:
|
||||
public open fun hashCode (): kotlin.Int [fake_override] declared in a.Base
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
||||
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
|
||||
overridden:
|
||||
public open fun toString (): kotlin.String [fake_override] declared in a.Base
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
|
||||
FUN FAKE_OVERRIDE name:publicMethod visibility:public modality:OPEN <> ($this:a.Base) returnType:kotlin.Unit [fake_override]
|
||||
overridden:
|
||||
public open fun publicMethod (): kotlin.Unit declared in a.Base
|
||||
$this: VALUE_PARAMETER name:<this> type:a.Base
|
||||
FUN FAKE_OVERRIDE name:protectedMethod visibility:protected/*protected and package*/ modality:OPEN <> ($this:a.Base) returnType:kotlin.Unit [fake_override]
|
||||
overridden:
|
||||
protected/*protected and package*/ open fun protectedMethod (): kotlin.Unit declared in a.Base
|
||||
$this: VALUE_PARAMETER name:<this> type:a.Base
|
||||
@@ -0,0 +1,22 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// SKIP_KT_DUMP
|
||||
// FILE: fakeOverridesForJavaNonStaticMembers.kt
|
||||
package a
|
||||
|
||||
class Test : Base()
|
||||
|
||||
// FILE: fakeOverridesForJavaNonStaticMembers2.kt
|
||||
|
||||
import a.Base
|
||||
|
||||
class Test2 : Base()
|
||||
|
||||
// FILE: a/Base.java
|
||||
package a
|
||||
|
||||
public class Base {
|
||||
public void publicMethod() {}
|
||||
protected void protectedMethod() {}
|
||||
void packagePrivateMethod() {}
|
||||
private void privateMethod() {}
|
||||
}
|
||||
Generated
+6
@@ -154,6 +154,12 @@ public class IrTextTestGenerated extends AbstractIrTextTest {
|
||||
runTest("compiler/testData/ir/irText/classes/enumWithSecondaryCtor.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("fakeOverridesForJavaNonStaticMembers.kt")
|
||||
public void testFakeOverridesForJavaNonStaticMembers() throws Exception {
|
||||
runTest("compiler/testData/ir/irText/classes/fakeOverridesForJavaNonStaticMembers.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("fakeOverridesForJavaStaticMembers.kt")
|
||||
public void testFakeOverridesForJavaStaticMembers() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user