diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/symbolAnnotationsUtils.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/symbolAnnotationsUtils.kt index 83040e971d1..6c3dc7e70d1 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/symbolAnnotationsUtils.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/symbolAnnotationsUtils.kt @@ -21,6 +21,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.markers.KtAnnotatedSymbol import org.jetbrains.kotlin.builtins.StandardNames.DEFAULT_VALUE_PARAMETER import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget import org.jetbrains.kotlin.light.classes.symbol.NullabilityType +import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightMethod import org.jetbrains.kotlin.load.java.JvmAbi.JVM_FIELD_ANNOTATION_CLASS_ID import org.jetbrains.kotlin.load.java.JvmAnnotationNames.RETENTION_POLICY_ENUM import org.jetbrains.kotlin.name.* @@ -108,6 +109,13 @@ internal fun KtAnnotatedSymbol.computeAnnotations( val parentIsAnnotation = (parent as? PsiClass)?.isAnnotationType == true val result = mutableListOf() + + if (parent is SymbolLightMethod) { + if (parent.isDelegated || parent.isOverride()) { + result.add(SymbolLightSimpleAnnotation(java.lang.Override::class.java.name, parent)) + } + } + if (annotations.isEmpty()) { if (parentIsAnnotation) { result.add(createRetentionRuntimeAnnotation(parent)) diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt index dc9ac5b1d07..498b30c7673 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt @@ -191,4 +191,6 @@ internal class SymbolLightAccessorMethod( override fun getParameterList(): PsiParameterList = _parametersList override fun isValid(): Boolean = super.isValid() && propertyAccessorSymbol.isValid() + + override fun isOverride(): Boolean = propertyAccessorSymbol.isOverride } 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 2b788200e4e..41e0e5667c5 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 @@ -73,4 +73,6 @@ internal abstract class SymbolLightMethod( lightMemberOrigin?.originalElement ?: functionSymbol.psi as? KtDeclaration override fun isValid(): Boolean = super.isValid() && functionSymbol.isValid() + + override fun isOverride(): Boolean = functionSymbol.getDirectlyOverriddenSymbols().isNotEmpty() } diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightMethodBase.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightMethodBase.kt index d1bb1c30fee..bdc0b3451a0 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightMethodBase.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightMethodBase.kt @@ -108,4 +108,6 @@ internal abstract class SymbolLightMethodBase( val moduleName = (getKtModule(project) as? KtSourceModule)?.moduleName ?: return defaultName return mangleInternalName(defaultName, moduleName) } -} \ No newline at end of file + + abstract fun isOverride(): Boolean +} diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightNoArgConstructor.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightNoArgConstructor.kt index 1494b98d6bd..a6fb47385c0 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightNoArgConstructor.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightNoArgConstructor.kt @@ -66,4 +66,6 @@ internal class SymbolLightNoArgConstructor( override fun hashCode(): Int = containingClass.hashCode() override fun isValid(): Boolean = super.isValid() && containingClass.isValid + + override fun isOverride(): Boolean = false } diff --git a/compiler/testData/asJava/lightClasses/DataClassWithCustomImplementedMembers.fir.java b/compiler/testData/asJava/lightClasses/DataClassWithCustomImplementedMembers.fir.java new file mode 100644 index 00000000000..fe218250d55 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/DataClassWithCustomImplementedMembers.fir.java @@ -0,0 +1,76 @@ +public final class Wrapper /* p.Wrapper*/ { + public Wrapper();// .ctor() + + + + +public static final class Equals /* p.Wrapper.Equals*/ { + @org.jetbrains.annotations.NotNull() + private final p.G code; + + @java.lang.Override() + public boolean equals(@org.jetbrains.annotations.Nullable() java.lang.Object);// equals(java.lang.Object) + + @org.jetbrains.annotations.NotNull() + public final p.G component1();// component1() + + @org.jetbrains.annotations.NotNull() + public final p.G getCode();// getCode() + + @org.jetbrains.annotations.NotNull() + public final p.Wrapper.Equals copy(@org.jetbrains.annotations.NotNull() p.G);// copy(p.G) + + @org.jetbrains.annotations.NotNull() + public java.lang.String toString();// toString() + + public Equals(@org.jetbrains.annotations.NotNull() p.G);// .ctor(p.G) + + public int hashCode();// hashCode() + +}public static final class HashCode /* p.Wrapper.HashCode*/ { + @org.jetbrains.annotations.NotNull() + private final p.G code; + + @java.lang.Override() + public int hashCode();// hashCode() + + @org.jetbrains.annotations.NotNull() + public final p.G component1();// component1() + + @org.jetbrains.annotations.NotNull() + public final p.G getCode();// getCode() + + @org.jetbrains.annotations.NotNull() + public final p.Wrapper.HashCode copy(@org.jetbrains.annotations.NotNull() p.G);// copy(p.G) + + @org.jetbrains.annotations.NotNull() + public java.lang.String toString();// toString() + + public HashCode(@org.jetbrains.annotations.NotNull() p.G);// .ctor(p.G) + + public boolean equals(@org.jetbrains.annotations.Nullable() java.lang.Object);// equals(java.lang.Object) + +}public static final class ToString /* p.Wrapper.ToString*/ { + @org.jetbrains.annotations.NotNull() + private final p.G code; + + @java.lang.Override() + @org.jetbrains.annotations.NotNull() + public java.lang.String toString();// toString() + + @org.jetbrains.annotations.NotNull() + public final p.G component1();// component1() + + @org.jetbrains.annotations.NotNull() + public final p.G getCode();// getCode() + + @org.jetbrains.annotations.NotNull() + public final p.Wrapper.ToString copy(@org.jetbrains.annotations.NotNull() p.G);// copy(p.G) + + public ToString(@org.jetbrains.annotations.NotNull() p.G);// .ctor(p.G) + + public boolean equals(@org.jetbrains.annotations.Nullable() java.lang.Object);// equals(java.lang.Object) + + public int hashCode();// hashCode() + +}} diff --git a/compiler/testData/asJava/lightClasses/DataClassWithCustomImplementedMembers.java b/compiler/testData/asJava/lightClasses/DataClassWithCustomImplementedMembers.java index 46540aa9b6c..098b3f162a6 100644 --- a/compiler/testData/asJava/lightClasses/DataClassWithCustomImplementedMembers.java +++ b/compiler/testData/asJava/lightClasses/DataClassWithCustomImplementedMembers.java @@ -70,4 +70,4 @@ public static final class Equals /* p.Wrapper.Equals*/ { public int hashCode();// hashCode() -}} \ No newline at end of file +}} diff --git a/compiler/testData/asJava/lightClasses/DataClassWithCustomImplementedMembers.lib.java b/compiler/testData/asJava/lightClasses/DataClassWithCustomImplementedMembers.lib.java new file mode 100644 index 00000000000..098b3f162a6 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/DataClassWithCustomImplementedMembers.lib.java @@ -0,0 +1,73 @@ +public final class Wrapper /* p.Wrapper*/ { + public Wrapper();// .ctor() + + + + +public static final class Equals /* p.Wrapper.Equals*/ { + @org.jetbrains.annotations.NotNull() + private final p.G code; + + @org.jetbrains.annotations.NotNull() + public final p.G component1();// component1() + + @org.jetbrains.annotations.NotNull() + public final p.G getCode();// getCode() + + @org.jetbrains.annotations.NotNull() + public final p.Wrapper.Equals copy(@org.jetbrains.annotations.NotNull() p.G);// copy(p.G) + + @org.jetbrains.annotations.NotNull() + public java.lang.String toString();// toString() + + public Equals(@org.jetbrains.annotations.NotNull() p.G);// .ctor(p.G) + + public boolean equals(@org.jetbrains.annotations.Nullable() java.lang.Object);// equals(java.lang.Object) + + public int hashCode();// hashCode() + +}public static final class HashCode /* p.Wrapper.HashCode*/ { + @org.jetbrains.annotations.NotNull() + private final p.G code; + + @org.jetbrains.annotations.NotNull() + public final p.G component1();// component1() + + @org.jetbrains.annotations.NotNull() + public final p.G getCode();// getCode() + + @org.jetbrains.annotations.NotNull() + public final p.Wrapper.HashCode copy(@org.jetbrains.annotations.NotNull() p.G);// copy(p.G) + + @org.jetbrains.annotations.NotNull() + public java.lang.String toString();// toString() + + public HashCode(@org.jetbrains.annotations.NotNull() p.G);// .ctor(p.G) + + public boolean equals(@org.jetbrains.annotations.Nullable() java.lang.Object);// equals(java.lang.Object) + + public int hashCode();// hashCode() + +}public static final class ToString /* p.Wrapper.ToString*/ { + @org.jetbrains.annotations.NotNull() + private final p.G code; + + @org.jetbrains.annotations.NotNull() + public final p.G component1();// component1() + + @org.jetbrains.annotations.NotNull() + public final p.G getCode();// getCode() + + @org.jetbrains.annotations.NotNull() + public final p.Wrapper.ToString copy(@org.jetbrains.annotations.NotNull() p.G);// copy(p.G) + + @org.jetbrains.annotations.NotNull() + public java.lang.String toString();// toString() + + public ToString(@org.jetbrains.annotations.NotNull() p.G);// .ctor(p.G) + + public boolean equals(@org.jetbrains.annotations.Nullable() java.lang.Object);// equals(java.lang.Object) + + public int hashCode();// hashCode() + +}} diff --git a/compiler/testData/asJava/lightClasses/DelegatedNested.fir.java b/compiler/testData/asJava/lightClasses/DelegatedNested.fir.java new file mode 100644 index 00000000000..161dfc7876f --- /dev/null +++ b/compiler/testData/asJava/lightClasses/DelegatedNested.fir.java @@ -0,0 +1,17 @@ +public final class B /* p.B*/ { + public B();// .ctor() + + +public static final class A /* p.B.A*/ implements p.I { + @org.jetbrains.annotations.NotNull() + private final p.I f; + + @java.lang.Override() + public void f();// f() + + @java.lang.Override() + public void g();// g() + + public A(@org.jetbrains.annotations.NotNull() p.I);// .ctor(p.I) + +}} diff --git a/compiler/testData/asJava/lightClasses/DelegatedNested.java b/compiler/testData/asJava/lightClasses/DelegatedNested.java index 08db1963340..3c01b4ec7f1 100644 --- a/compiler/testData/asJava/lightClasses/DelegatedNested.java +++ b/compiler/testData/asJava/lightClasses/DelegatedNested.java @@ -12,4 +12,4 @@ public static final class A /* p.B.A*/ implements p.I { public void g();// g() -}} \ No newline at end of file +}} diff --git a/compiler/testData/asJava/lightClasses/DelegatedNested.lib.java b/compiler/testData/asJava/lightClasses/DelegatedNested.lib.java new file mode 100644 index 00000000000..3c01b4ec7f1 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/DelegatedNested.lib.java @@ -0,0 +1,15 @@ +public final class B /* p.B*/ { + public B();// .ctor() + + +public static final class A /* p.B.A*/ implements p.I { + @org.jetbrains.annotations.NotNull() + private final p.I f; + + public A(@org.jetbrains.annotations.NotNull() p.I);// .ctor(p.I) + + public void f();// f() + + public void g();// g() + +}} diff --git a/compiler/testData/asJava/lightClasses/Delegation.fir.java b/compiler/testData/asJava/lightClasses/Delegation.fir.java new file mode 100644 index 00000000000..2afa56ca65c --- /dev/null +++ b/compiler/testData/asJava/lightClasses/Delegation.fir.java @@ -0,0 +1,13 @@ +public final class B /* p.B*/ implements p.I { + @org.jetbrains.annotations.NotNull() + private final p.I f; + + @java.lang.Override() + public void f();// f() + + @java.lang.Override() + public void g();// g() + + public B(@org.jetbrains.annotations.NotNull() p.I);// .ctor(p.I) + +} diff --git a/compiler/testData/asJava/lightClasses/Delegation.java b/compiler/testData/asJava/lightClasses/Delegation.java index 3bfff25e8c4..6594074ce2e 100644 --- a/compiler/testData/asJava/lightClasses/Delegation.java +++ b/compiler/testData/asJava/lightClasses/Delegation.java @@ -8,4 +8,4 @@ public final class B /* p.B*/ implements p.I { public void g();// g() -} \ No newline at end of file +} diff --git a/compiler/testData/asJava/lightClasses/Delegation.lib.java b/compiler/testData/asJava/lightClasses/Delegation.lib.java new file mode 100644 index 00000000000..6594074ce2e --- /dev/null +++ b/compiler/testData/asJava/lightClasses/Delegation.lib.java @@ -0,0 +1,11 @@ +public final class B /* p.B*/ implements p.I { + @org.jetbrains.annotations.NotNull() + private final p.I f; + + public B(@org.jetbrains.annotations.NotNull() p.I);// .ctor(p.I) + + public void f();// f() + + public void g();// g() + +} diff --git a/compiler/testData/asJava/lightClasses/InheritingInterfaceDefaultImpls.fir.java b/compiler/testData/asJava/lightClasses/InheritingInterfaceDefaultImpls.fir.java new file mode 100644 index 00000000000..5872a6d61dd --- /dev/null +++ b/compiler/testData/asJava/lightClasses/InheritingInterfaceDefaultImpls.fir.java @@ -0,0 +1,9 @@ +public final class Inheritor /* p.Inheritor*/ implements p.I, p.I2 { + @java.lang.Override() + public void g();// g() + + public Inheritor();// .ctor() + + public final void f();// f() + +} diff --git a/compiler/testData/asJava/lightClasses/InheritingInterfaceDefaultImpls.java b/compiler/testData/asJava/lightClasses/InheritingInterfaceDefaultImpls.java index 3643b1afce8..62488bf54ee 100644 --- a/compiler/testData/asJava/lightClasses/InheritingInterfaceDefaultImpls.java +++ b/compiler/testData/asJava/lightClasses/InheritingInterfaceDefaultImpls.java @@ -5,4 +5,4 @@ public final class Inheritor /* p.Inheritor*/ implements p.I, p.I2 { public void g();// g() -} \ No newline at end of file +} diff --git a/compiler/testData/asJava/lightClasses/NonDataClassWithComponentFunctions.fir.java b/compiler/testData/asJava/lightClasses/NonDataClassWithComponentFunctions.fir.java new file mode 100644 index 00000000000..b9c610c42ec --- /dev/null +++ b/compiler/testData/asJava/lightClasses/NonDataClassWithComponentFunctions.fir.java @@ -0,0 +1,20 @@ +public final class A /* p.A*/ { + private final int y; + + @java.lang.Override() + @org.jetbrains.annotations.NotNull() + public java.lang.String toString();// toString() + + @java.lang.Override() + public boolean equals(@org.jetbrains.annotations.Nullable() java.lang.Object);// equals(java.lang.Object) + + @java.lang.Override() + public int hashCode();// hashCode() + + public A(int);// .ctor(int) + + public final int component1();// component1() + + public final int getY();// getY() + +} diff --git a/compiler/testData/asJava/lightClasses/NonDataClassWithComponentFunctions.java b/compiler/testData/asJava/lightClasses/NonDataClassWithComponentFunctions.java index 1920daf2a3b..f4820f08e6b 100644 --- a/compiler/testData/asJava/lightClasses/NonDataClassWithComponentFunctions.java +++ b/compiler/testData/asJava/lightClasses/NonDataClassWithComponentFunctions.java @@ -14,4 +14,4 @@ public final class A /* p.A*/ { public int hashCode();// hashCode() -} \ No newline at end of file +} diff --git a/compiler/testData/asJava/lightClasses/NonDataClassWithComponentFunctions.lib.java b/compiler/testData/asJava/lightClasses/NonDataClassWithComponentFunctions.lib.java new file mode 100644 index 00000000000..f4820f08e6b --- /dev/null +++ b/compiler/testData/asJava/lightClasses/NonDataClassWithComponentFunctions.lib.java @@ -0,0 +1,17 @@ +public final class A /* p.A*/ { + private final int y; + + @org.jetbrains.annotations.NotNull() + public java.lang.String toString();// toString() + + public A(int);// .ctor(int) + + public boolean equals(@org.jetbrains.annotations.Nullable() java.lang.Object);// equals(java.lang.Object) + + public final int component1();// component1() + + public final int getY();// getY() + + public int hashCode();// hashCode() + +} diff --git a/compiler/testData/asJava/lightClasses/compilationErrors/TwoOverrides.fir.java b/compiler/testData/asJava/lightClasses/compilationErrors/TwoOverrides.fir.java index c6db00b5306..f3644ad52ac 100644 --- a/compiler/testData/asJava/lightClasses/compilationErrors/TwoOverrides.fir.java +++ b/compiler/testData/asJava/lightClasses/compilationErrors/TwoOverrides.fir.java @@ -1,7 +1,9 @@ public final class TwoOverrides /* TwoOverrides*/ implements kotlin.collections.Iterable { + @java.lang.Override() @org.jetbrains.annotations.Nullable() public java.lang.Void iterator();// iterator() + @java.lang.Override() @org.jetbrains.annotations.Nullable() public java.lang.Void iterator();// iterator() diff --git a/compiler/testData/asJava/lightClasses/delegation/Function.fir.java b/compiler/testData/asJava/lightClasses/delegation/Function.fir.java new file mode 100644 index 00000000000..9a17d5706d4 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/delegation/Function.fir.java @@ -0,0 +1,8 @@ +public final class Derived /* Derived*/ implements Base { + @java.lang.Override() + @org.jetbrains.annotations.NotNull() + public java.lang.String baz(@org.jetbrains.annotations.NotNull() java.lang.String);// baz(java.lang.String) + + public Derived(@org.jetbrains.annotations.NotNull() Base);// .ctor(Base) + +} diff --git a/compiler/testData/asJava/lightClasses/delegation/Function.java b/compiler/testData/asJava/lightClasses/delegation/Function.java index 1b189c5d7f1..c2828e37460 100644 --- a/compiler/testData/asJava/lightClasses/delegation/Function.java +++ b/compiler/testData/asJava/lightClasses/delegation/Function.java @@ -4,4 +4,4 @@ public final class Derived /* Derived*/ implements Base { public Derived(@org.jetbrains.annotations.NotNull() Base);// .ctor(Base) -} \ No newline at end of file +} diff --git a/compiler/testData/asJava/lightClasses/delegation/Function.lib.java b/compiler/testData/asJava/lightClasses/delegation/Function.lib.java new file mode 100644 index 00000000000..c2828e37460 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/delegation/Function.lib.java @@ -0,0 +1,7 @@ +public final class Derived /* Derived*/ implements Base { + @org.jetbrains.annotations.NotNull() + public java.lang.String baz(@org.jetbrains.annotations.NotNull() java.lang.String);// baz(java.lang.String) + + public Derived(@org.jetbrains.annotations.NotNull() Base);// .ctor(Base) + +} diff --git a/compiler/testData/asJava/lightClasses/ideRegression/ImplementingCharSequenceAndNumber.java b/compiler/testData/asJava/lightClasses/ideRegression/ImplementingCharSequenceAndNumber.java index f1a6a61fc8a..049c01701ea 100644 --- a/compiler/testData/asJava/lightClasses/ideRegression/ImplementingCharSequenceAndNumber.java +++ b/compiler/testData/asJava/lightClasses/ideRegression/ImplementingCharSequenceAndNumber.java @@ -4,34 +4,43 @@ public final class Container /* p1.Container*/ { public static final class MyNumber /* p1.Container.MyNumber*/ extends java.lang.Number { - public MyNumber();// .ctor() - + @java.lang.Override() public byte toByte();// toByte() + @java.lang.Override() public char toChar();// toChar() + @java.lang.Override() public double toDouble();// toDouble() + @java.lang.Override() public float toFloat();// toFloat() + @java.lang.Override() public int toInt();// toInt() + @java.lang.Override() public long toLong();// toLong() + @java.lang.Override() public short toShort();// toShort() + public MyNumber();// .ctor() + }public static final class MyString /* p1.Container.MyString*/ implements java.lang.CharSequence { + @java.lang.Override() @org.jetbrains.annotations.NotNull() public java.lang.CharSequence subSequence(int, int);// subSequence(int, int) - public MyString();// .ctor() - + @java.lang.Override() public char get(int);// get(int) + public MyString();// .ctor() + public error.NonExistentClass chars();// chars() public error.NonExistentClass codePoints();// codePoints() public int getLength();// getLength() -}} \ No newline at end of file +}} diff --git a/compiler/testData/asJava/lightClasses/ideRegression/ImplementingMap.fir.java b/compiler/testData/asJava/lightClasses/ideRegression/ImplementingMap.fir.java index 0abef2acc7c..9bf75af8907 100644 --- a/compiler/testData/asJava/lightClasses/ideRegression/ImplementingMap.fir.java +++ b/compiler/testData/asJava/lightClasses/ideRegression/ImplementingMap.fir.java @@ -1,6 +1,7 @@ public final class TypeHierarchyMap /* p1.TypeHierarchyMap*/ implements kotlin.collections.Map, TValue> { - public TypeHierarchyMap();// .ctor() - + @java.lang.Override() public boolean containsKey(@org.jetbrains.annotations.NotNull() java.lang.Class);// containsKey(java.lang.Class) + public TypeHierarchyMap();// .ctor() + } diff --git a/compiler/testData/asJava/lightClasses/ideRegression/ImplementingMutableSet.fir.java b/compiler/testData/asJava/lightClasses/ideRegression/ImplementingMutableSet.fir.java index 1a57b9fee42..52a92c9c0a2 100644 --- a/compiler/testData/asJava/lightClasses/ideRegression/ImplementingMutableSet.fir.java +++ b/compiler/testData/asJava/lightClasses/ideRegression/ImplementingMutableSet.fir.java @@ -9,6 +9,16 @@ public final class SmartSet /* SmartSet*/ extends kotlin.collections.Abstrac private static final int ARRAY_THRESHOLD; + @java.lang.Override() + @org.jetbrains.annotations.NotNull() + public java.util.Iterator iterator();// iterator() + + @java.lang.Override() + public boolean add(T);// add(T) + + @java.lang.Override() + public void clear();// clear() + @kotlin.jvm.JvmStatic() @org.jetbrains.annotations.NotNull() public static final SmartSet create();// create() @@ -17,17 +27,10 @@ public final class SmartSet /* SmartSet*/ extends kotlin.collections.Abstrac @org.jetbrains.annotations.NotNull() public static final SmartSet create(@org.jetbrains.annotations.NotNull() java.util.Collection);// create(java.util.Collection) - @org.jetbrains.annotations.NotNull() - public java.util.Iterator iterator();// iterator() - private SmartSet();// .ctor() - public boolean add(T);// add(T) - public int getSize();// getSize() - public void clear();// clear() - public void setSize(int);// setSize(int) @@ -42,4 +45,4 @@ public static final class Companion /* SmartSet.Companion*/ { private Companion();// .ctor() -}} \ No newline at end of file +}} diff --git a/compiler/testData/asJava/lightClasses/ideRegression/InheritingInterfaceDefaultImpls.java b/compiler/testData/asJava/lightClasses/ideRegression/InheritingInterfaceDefaultImpls.java index 3643b1afce8..5872a6d61dd 100644 --- a/compiler/testData/asJava/lightClasses/ideRegression/InheritingInterfaceDefaultImpls.java +++ b/compiler/testData/asJava/lightClasses/ideRegression/InheritingInterfaceDefaultImpls.java @@ -1,8 +1,9 @@ public final class Inheritor /* p.Inheritor*/ implements p.I, p.I2 { + @java.lang.Override() + public void g();// g() + public Inheritor();// .ctor() public final void f();// f() - public void g();// g() - -} \ No newline at end of file +} diff --git a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/IntOverridesAny.fir.java b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/IntOverridesAny.fir.java index bd837856d0e..f6abe58c1ed 100644 --- a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/IntOverridesAny.fir.java +++ b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/IntOverridesAny.fir.java @@ -1,10 +1,11 @@ public final class C /* C*/ implements Tr { private final int v; - public C();// .ctor() - + @java.lang.Override() public int foo();// foo() + public C();// .ctor() + public int getV();// getV() } diff --git a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/OverrideAnyWithUnit.fir.java b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/OverrideAnyWithUnit.fir.java new file mode 100644 index 00000000000..15fe272c5e3 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/OverrideAnyWithUnit.fir.java @@ -0,0 +1,7 @@ +public final class C /* C*/ implements Base { + @java.lang.Override() + public void foo();// foo() + + public C();// .ctor() + +} diff --git a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/OverrideAnyWithUnit.java b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/OverrideAnyWithUnit.java index 6dc348da2b5..832e13fd9b0 100644 --- a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/OverrideAnyWithUnit.java +++ b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/OverrideAnyWithUnit.java @@ -3,4 +3,4 @@ public final class C /* C*/ implements Base { public void foo();// foo() -} \ No newline at end of file +} diff --git a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/OverrideAnyWithUnit.lib.java b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/OverrideAnyWithUnit.lib.java new file mode 100644 index 00000000000..832e13fd9b0 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/OverrideAnyWithUnit.lib.java @@ -0,0 +1,6 @@ +public final class C /* C*/ implements Base { + public C();// .ctor() + + public void foo();// foo() + +} diff --git a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/UnitAsGenericArgument.fir.java b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/UnitAsGenericArgument.fir.java new file mode 100644 index 00000000000..d3f81e07572 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/UnitAsGenericArgument.fir.java @@ -0,0 +1,7 @@ +public final class C /* C*/ implements Base { + @java.lang.Override() + public void foo(@org.jetbrains.annotations.NotNull() kotlin.Unit);// foo(kotlin.Unit) + + public C();// .ctor() + +} diff --git a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/UnitAsGenericArgument.java b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/UnitAsGenericArgument.java index fd6a36d30e3..0ebcaad658b 100644 --- a/compiler/testData/asJava/lightClasses/nullabilityAnnotations/UnitAsGenericArgument.java +++ b/compiler/testData/asJava/lightClasses/nullabilityAnnotations/UnitAsGenericArgument.java @@ -3,4 +3,4 @@ public final class C /* C*/ implements Base { public void foo(@org.jetbrains.annotations.NotNull() kotlin.Unit);// foo(kotlin.Unit) -} \ No newline at end of file +} diff --git a/compiler/testData/asJava/ultraLightClasses/coroutines.fir.java b/compiler/testData/asJava/ultraLightClasses/coroutines.fir.java new file mode 100644 index 00000000000..e576373f273 --- /dev/null +++ b/compiler/testData/asJava/ultraLightClasses/coroutines.fir.java @@ -0,0 +1,36 @@ +public final class Foo /* Foo*/ { + @org.jetbrains.annotations.Nullable() + public final java.lang.Object doSomething(@org.jetbrains.annotations.NotNull() Foo, @org.jetbrains.annotations.NotNull() kotlin.coroutines.Continuation);// doSomething(Foo, kotlin.coroutines.Continuation) + + public Foo();// .ctor() + +} + +public final class Boo /* Boo*/ { + private final java.lang.Object doSomething(Foo, kotlin.coroutines.Continuation);// doSomething(Foo, kotlin.coroutines.Continuation) + + public Boo();// .ctor() + +} + +public final class Bar /* Bar*/ { + public Bar();// .ctor() + + public final void async(@org.jetbrains.annotations.NotNull() kotlin.jvm.functions.Function1, ? extends java.lang.Object>);// async(kotlin.jvm.functions.Function1, ? extends java.lang.Object>) + +} + +public abstract interface Base /* Base*/ { + @org.jetbrains.annotations.Nullable() + public abstract java.lang.Object foo(@org.jetbrains.annotations.NotNull() kotlin.coroutines.Continuation);// foo(kotlin.coroutines.Continuation) + +} + +public final class Derived /* Derived*/ implements Base { + @java.lang.Override() + @org.jetbrains.annotations.Nullable() + public java.lang.Object foo(@org.jetbrains.annotations.NotNull() kotlin.coroutines.Continuation);// foo(kotlin.coroutines.Continuation) + + public Derived();// .ctor() + +} diff --git a/compiler/testData/asJava/ultraLightClasses/delegatesWithAnnotations.fir.java b/compiler/testData/asJava/ultraLightClasses/delegatesWithAnnotations.fir.java index ed2b70a677d..2d0448f68a7 100644 --- a/compiler/testData/asJava/ultraLightClasses/delegatesWithAnnotations.fir.java +++ b/compiler/testData/asJava/ultraLightClasses/delegatesWithAnnotations.fir.java @@ -28,6 +28,7 @@ public abstract interface Base /* Base*/ { public final class Derived /* Derived*/ implements Base { @Ann(x = 1L, y = "134", z = java.lang.String.class, e = {int.class, double.class}, depr = kotlin.DeprecationLevel.WARNING, t = {SimpleAnn("243"), SimpleAnn("4324")}) + @java.lang.Override() public void foo(@Ann(x = 2L, y = "324", z = Ann.class, e = {byte.class, Base.class}, depr = kotlin.DeprecationLevel.WARNING, t = {SimpleAnn("687"), SimpleAnn("78")}) @org.jetbrains.annotations.NotNull() java.lang.String);// foo(java.lang.String) public Derived(@org.jetbrains.annotations.NotNull() Base);// .ctor(Base) diff --git a/compiler/testData/asJava/ultraLightClasses/delegatingToInterfaces.fir.java b/compiler/testData/asJava/ultraLightClasses/delegatingToInterfaces.fir.java index 5a83d75dab4..442b32eb087 100644 --- a/compiler/testData/asJava/ultraLightClasses/delegatingToInterfaces.fir.java +++ b/compiler/testData/asJava/ultraLightClasses/delegatingToInterfaces.fir.java @@ -16,23 +16,28 @@ public abstract interface Base /* Base*/ { public final class BaseImpl /* BaseImpl*/ implements Base { private final int x; + @java.lang.Override() + public void printMessage();// printMessage() + + @java.lang.Override() + public void printMessageLine();// printMessageLine() + public BaseImpl(int);// .ctor(int) public final int getX();// getX() - public void printMessage();// printMessage() - - public void printMessageLine();// printMessageLine() - } public final class Derived /* Derived*/ implements Base { - public Derived(@org.jetbrains.annotations.NotNull() Base);// .ctor(Base) - + @java.lang.Override() public int foo(java.lang.String, @org.jetbrains.annotations.Nullable() java.lang.Object);// foo(java.lang.String, java.lang.Object) + @java.lang.Override() public void printMessage();// printMessage() + @java.lang.Override() public void printMessageLine();// printMessageLine() + public Derived(@org.jetbrains.annotations.NotNull() Base);// .ctor(Base) + } diff --git a/compiler/testData/asJava/ultraLightClasses/enums.fir.java b/compiler/testData/asJava/ultraLightClasses/enums.fir.java index e75d33682a4..d8d779b6f1a 100644 --- a/compiler/testData/asJava/ultraLightClasses/enums.fir.java +++ b/compiler/testData/asJava/ultraLightClasses/enums.fir.java @@ -39,6 +39,7 @@ public enum ProtocolState /* ProtocolState*/ { WAITING { WAITING();// .ctor() + @java.lang.Override() @org.jetbrains.annotations.NotNull() public ProtocolState signal();// signal() @@ -46,6 +47,7 @@ public enum ProtocolState /* ProtocolState*/ { TALKING { TALKING();// .ctor() + @java.lang.Override() @org.jetbrains.annotations.NotNull() public ProtocolState signal();// signal() @@ -67,6 +69,7 @@ public enum ProtocolState /* ProtocolState*/ { public static final class WAITING /* ProtocolState.WAITING*/ extends ProtocolState { WAITING();// .ctor() + @java.lang.Override() @org.jetbrains.annotations.NotNull() public ProtocolState signal();// signal() @@ -75,6 +78,7 @@ public static final class WAITING /* ProtocolState.WAITING*/ extends ProtocolSta public static final class TALKING /* ProtocolState.TALKING*/ extends ProtocolState { TALKING();// .ctor() + @java.lang.Override() @org.jetbrains.annotations.NotNull() public ProtocolState signal();// signal() diff --git a/compiler/testData/asJava/ultraLightClasses/implementingKotlinCollections.fir.java b/compiler/testData/asJava/ultraLightClasses/implementingKotlinCollections.fir.java index 656a26eabc1..cc33c34d641 100644 --- a/compiler/testData/asJava/ultraLightClasses/implementingKotlinCollections.fir.java +++ b/compiler/testData/asJava/ultraLightClasses/implementingKotlinCollections.fir.java @@ -1,4 +1,5 @@ public final class MyList /* MyList*/ implements kotlin.collections.List { + @java.lang.Override() @org.jetbrains.annotations.NotNull() public java.lang.String get(int);// get(int) @@ -17,11 +18,13 @@ public abstract class MySet /* MySet*/ implements ASet { } public abstract class SmartSet /* SmartSet*/ extends kotlin.collections.AbstractMutableSet { + @java.lang.Override() @org.jetbrains.annotations.NotNull() public java.util.Iterator iterator();// iterator() - private SmartSet();// .ctor() - + @java.lang.Override() public boolean add(T);// add(T) + private SmartSet();// .ctor() + } diff --git a/compiler/testData/asJava/ultraLightClasses/inferringAnonymousObjectTypes.fir.java b/compiler/testData/asJava/ultraLightClasses/inferringAnonymousObjectTypes.fir.java index 5a9ac800f86..0b1dc671051 100644 --- a/compiler/testData/asJava/ultraLightClasses/inferringAnonymousObjectTypes.fir.java +++ b/compiler/testData/asJava/ultraLightClasses/inferringAnonymousObjectTypes.fir.java @@ -27,6 +27,7 @@ final class C /* C*/ { } final class null /* null*/ { + @java.lang.Override() @org.jetbrains.annotations.NotNull() public java.lang.String toString();// toString() @@ -49,17 +50,19 @@ public final class ValidPublicSupertype /* ValidPublicSupertype*/ { } final class null /* null*/ implements java.lang.Runnable { - private ();// .ctor() - + @java.lang.Override() public void run();// run() + private ();// .ctor() + } final class null /* null*/ implements java.lang.Runnable { - private ();// .ctor() - + @java.lang.Override() public void run();// run() + private ();// .ctor() + } public abstract interface I /* I*/ { @@ -80,15 +83,17 @@ public final class InvalidPublicSupertype /* InvalidPublicSupertype*/ { } final class null /* null*/ implements I, java.lang.Runnable { - private ();// .ctor() - + @java.lang.Override() public void run();// run() + private ();// .ctor() + } final class null /* null*/ implements I, java.lang.Runnable { - private ();// .ctor() - + @java.lang.Override() public void run();// run() + private ();// .ctor() + } diff --git a/compiler/testData/asJava/ultraLightClasses/inheritance.fir.java b/compiler/testData/asJava/ultraLightClasses/inheritance.fir.java index 3a1daf95aaa..d9dd84a3822 100644 --- a/compiler/testData/asJava/ultraLightClasses/inheritance.fir.java +++ b/compiler/testData/asJava/ultraLightClasses/inheritance.fir.java @@ -37,12 +37,14 @@ public abstract class Base /* Base*/ { public final class Derived /* Derived*/ extends Base implements IntfWithProp { private final int x; + @java.lang.Override() protected error.NonExistentClass v();// v() - public Derived(int);// .ctor(int) - + @java.lang.Override() public int abs();// abs() + public Derived(int);// .ctor(int) + public int getX$light_idea_test_case();// getX$light_idea_test_case() } @@ -54,6 +56,7 @@ public abstract class AnotherDerived /* AnotherDerived*/ extends Base { private final int z; + @java.lang.Override() protected final void v();// v() protected int getZ();// getZ() diff --git a/compiler/testData/asJava/ultraLightClasses/objects.fir.java b/compiler/testData/asJava/ultraLightClasses/objects.fir.java index 6cb49ef7fcc..241874d1d40 100644 --- a/compiler/testData/asJava/ultraLightClasses/objects.fir.java +++ b/compiler/testData/asJava/ultraLightClasses/objects.fir.java @@ -101,6 +101,9 @@ public final class Obj /* Obj*/ implements java.lang.Runnable { @org.jetbrains.annotations.NotNull() public static final Obj INSTANCE; + @java.lang.Override() + public void run();// run() + @kotlin.jvm.JvmStatic() public static final int zoo();// zoo() @@ -111,8 +114,6 @@ public final class Obj /* Obj*/ implements java.lang.Runnable { public static final void setX(@org.jetbrains.annotations.NotNull() java.lang.String);// setX(java.lang.String) - public void run();// run() - } public final class ConstContainer /* ConstContainer*/ {