diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightConstructor.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightConstructor.kt index a82cd222f1e..4dbffc17c45 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightConstructor.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightConstructor.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -37,6 +37,7 @@ internal class SymbolLightConstructor( override fun getName(): String = _name ?: "" override fun isConstructor(): Boolean = true + override fun isOverride(): Boolean = false override fun hasTypeParameters(): Boolean = false override fun getTypeParameterList(): PsiTypeParameterList? = null diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightMethod.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightMethod.kt index 11b2025f0f1..ef6ede425fa 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightMethod.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightMethod.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -135,8 +135,6 @@ internal abstract class SymbolLightMethod private override fun isValid(): Boolean = super.isValid() && functionDeclaration?.isValid ?: functionSymbolPointer.isValid(ktModule) - override fun isOverride(): Boolean = withFunctionSymbol { it.getDirectlyOverriddenSymbols().isNotEmpty() } - override fun equals(other: Any?): Boolean { if (this === other) return true if (other !is SymbolLightMethod<*> || diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightSimpleMethod.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightSimpleMethod.kt index 09a7ed41d7d..563c0b4a835 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightSimpleMethod.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightSimpleMethod.kt @@ -167,6 +167,12 @@ internal class SymbolLightSimpleMethod( override fun isConstructor(): Boolean = false + override fun isOverride(): Boolean = _isOverride + + private val _isOverride: Boolean by lazyPub { + withFunctionSymbol { it.isOverride } + } + private val KtType.isVoidType: Boolean get() = isUnit && nullabilityType != NullabilityType.Nullable private val _returnedType: PsiType by lazyPub { diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/ideRegression/ImplementingCharSequenceAndNumber.fir.java b/compiler/testData/asJava/lightClasses/lightClassByFqName/ideRegression/ImplementingCharSequenceAndNumber.fir.java index f37ef0bd768..949a7056a95 100644 --- a/compiler/testData/asJava/lightClasses/lightClassByFqName/ideRegression/ImplementingCharSequenceAndNumber.fir.java +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/ideRegression/ImplementingCharSequenceAndNumber.fir.java @@ -34,12 +34,14 @@ public final class Container /* p1.Container*/ { @java.lang.Override() public char get(int);// get(int) - public MyString();// .ctor() - + @java.lang.Override() public error.NonExistentClass chars();// chars() + @java.lang.Override() public error.NonExistentClass codePoints();// codePoints() + public MyString();// .ctor() + public int getLength();// getLength() } } diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/ideRegression/OverridingFinalInternal.fir.java b/compiler/testData/asJava/lightClasses/lightClassByFqName/ideRegression/OverridingFinalInternal.fir.java index 43cd93eb88c..55c5a23ed02 100644 --- a/compiler/testData/asJava/lightClasses/lightClassByFqName/ideRegression/OverridingFinalInternal.fir.java +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/ideRegression/OverridingFinalInternal.fir.java @@ -1,7 +1,8 @@ public final class C /* p.C*/ { - public C();// .ctor() - + @java.lang.Override() public int af();// af() + public C();// .ctor() + public int getAp();// getAp() } diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/ideRegression/OverridingInternal.fir.java b/compiler/testData/asJava/lightClasses/lightClassByFqName/ideRegression/OverridingInternal.fir.java index fac57c15b37..768d9143d55 100644 --- a/compiler/testData/asJava/lightClasses/lightClassByFqName/ideRegression/OverridingInternal.fir.java +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/ideRegression/OverridingInternal.fir.java @@ -1,10 +1,11 @@ public final class C /* p.C*/ { private final int ip = 5 /* initializer type: int */; - public C();// .ctor() - + @java.lang.Override() public int af();// af() + public C();// .ctor() + public int getAp();// getAp() public int getIp();// getIp() diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/ideRegression/OverridingProtected.fir.java b/compiler/testData/asJava/lightClasses/lightClassByFqName/ideRegression/OverridingProtected.fir.java index 43cd93eb88c..55c5a23ed02 100644 --- a/compiler/testData/asJava/lightClasses/lightClassByFqName/ideRegression/OverridingProtected.fir.java +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/ideRegression/OverridingProtected.fir.java @@ -1,7 +1,8 @@ public final class C /* p.C*/ { - public C();// .ctor() - + @java.lang.Override() public int af();// af() + public C();// .ctor() + public int getAp();// getAp() } diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/implementingKotlinCollections.fir.java b/compiler/testData/asJava/lightClasses/lightClassByPsi/implementingKotlinCollections.fir.java index ee2ec773ae0..7c9c2714d79 100644 --- a/compiler/testData/asJava/lightClasses/lightClassByPsi/implementingKotlinCollections.fir.java +++ b/compiler/testData/asJava/lightClasses/lightClassByPsi/implementingKotlinCollections.fir.java @@ -10,9 +10,10 @@ public final class MyList /* MyList*/ implements java.util.List implements ASet { - public MySet();// .ctor() - + @java.lang.Override() public boolean remove(@org.jetbrains.annotations.NotNull() java.lang.String);// remove(java.lang.String) + + public MySet();// .ctor() } public abstract class SmartSet /* SmartSet*/ extends kotlin.collections.AbstractMutableSet { diff --git a/compiler/testData/asJava/lightClasses/lightClassByPsi/inlineClasses.fir.java b/compiler/testData/asJava/lightClasses/lightClassByPsi/inlineClasses.fir.java index c2c6c1cb1bf..2120bea72a7 100644 --- a/compiler/testData/asJava/lightClasses/lightClassByPsi/inlineClasses.fir.java +++ b/compiler/testData/asJava/lightClasses/lightClassByPsi/inlineClasses.fir.java @@ -9,11 +9,12 @@ public enum Foo /* Foo*/ { public final class InlineInheritance /* InlineInheritance*/ { private final int v; + @java.lang.Override() + public int y();// y() + public final int getV();// getV() public int getX();// getX() - - public int y();// y() } public final class InlinedDelegate /* InlinedDelegate*/ {