Files
openide/tools/apiDump/testData/apiDump.txt
Daniil Ovchinnikov 57896efa7e API dump: don't include synthetic bridges in the dump
These methods exist to support
- covariant return type overrides;
- generic overrides;
- overrides of `void` methods with methods returning `java/lang/Void` in Kotlin.

Such methods are called only through supertype invocations, and supertypes are already listed in the dump.

The main reason for avoiding these in dumps: Java allows extending a public class `B` from a package-local class `A`.
`B` can override a method of `A` with a covariant return type.
In this case, a synthetic bridge is generated in `B` with the return type from method in `A`.
If the method return type in `A` is also a package-local class `C`, this would mean `C` is leaked by the API surface of `B`.
Instead, we consider such bridges not a part of the API. For a concrete example, see:
`com.intellij.tools.apiDump.testData.inheritFromPackageLocal.JPackageLocalClass.packagePrivateMethodWithPackagePrivateReturnType`.

Another reason has the same root cause: Java allows such class inheritance.
A public class `B` which extends package-local class `A` "opens" up _all_ public/protected methods of `A` to the outer world.
In subsequent commits, this is going to be reflected in the dump by copying the API methods of package-local `A` into public `B`.
We don't want to copy the bridges, which a part of `A` and can be only accessed through supertype of `A`,
to avoid false positive leaking API errors.

GitOrigin-RevId: 2aecf62ad18f4ed6458927ccbd86f8066bea4751
2024-04-06 01:42:47 +00:00

223 lines
10 KiB
Plaintext

*f:com.intellij.tools.apiDump.testData.ApiExperimentalClassWithCompanion
- sf:Companion:com.intellij.tools.apiDump.testData.ApiExperimentalClassWithCompanion$Companion
*f:com.intellij.tools.apiDump.testData.ApiExperimentalClassWithCompanion$Companion
f:com.intellij.tools.apiDump.testData.ClassWithApiExperimentalCompanion
- *sf:Companion:com.intellij.tools.apiDump.testData.ClassWithApiExperimentalCompanion$Companion
*f:com.intellij.tools.apiDump.testData.ClassWithApiExperimentalCompanion$Companion
f:com.intellij.tools.apiDump.testData.ClassWithApiInternalCompanion
e:com.intellij.tools.apiDump.testData.JAbstractEnum
- java.lang.Enum
- sf:A:com.intellij.tools.apiDump.testData.JAbstractEnum
- pa:protectedAbstractMethod():V
- a:publicAbstractMethod():V
- s:valueOf(java.lang.String):com.intellij.tools.apiDump.testData.JAbstractEnum
- s:values():com.intellij.tools.apiDump.testData.JAbstractEnum[]
@:com.intellij.tools.apiDump.testData.JAnnotation
- java.lang.annotation.Annotation
e:com.intellij.tools.apiDump.testData.JEnum
- java.lang.Enum
- sf:ONE:com.intellij.tools.apiDump.testData.JEnum
- sf:THREE:com.intellij.tools.apiDump.testData.JEnum
- sf:TWO:com.intellij.tools.apiDump.testData.JEnum
- s:valueOf(java.lang.String):com.intellij.tools.apiDump.testData.JEnum
- s:values():com.intellij.tools.apiDump.testData.JEnum[]
*c:com.intellij.tools.apiDump.testData.JExperimentalClass
- <init>():V
*c:com.intellij.tools.apiDump.testData.JExperimentalClass$ExperimentalClass
- <init>():V
*pc:com.intellij.tools.apiDump.testData.JExperimentalClass$ProtectedClass
- p:<init>():V
*c:com.intellij.tools.apiDump.testData.JExperimentalClass$PublicClass
- <init>():V
c:com.intellij.tools.apiDump.testData.JInners
- anonymousClass:java.lang.Object
- <init>():V
- ownerMethod():V
*c:com.intellij.tools.apiDump.testData.JInners$ExperimentalClass
- <init>():V
*c:com.intellij.tools.apiDump.testData.JInners$ExperimentalClass$ExperimentalClassD
- <init>():V
*pc:com.intellij.tools.apiDump.testData.JInners$ExperimentalClass$ProtectedClass
- p:<init>():V
*c:com.intellij.tools.apiDump.testData.JInners$ExperimentalClass$PublicClass
- <init>():V
pc:com.intellij.tools.apiDump.testData.JInners$ProtectedClass
- p:<init>():V
*c:com.intellij.tools.apiDump.testData.JInners$ProtectedClass$ExperimentalClass
- <init>():V
pc:com.intellij.tools.apiDump.testData.JInners$ProtectedClass$ProtectedClassD
- p:<init>():V
c:com.intellij.tools.apiDump.testData.JInners$ProtectedClass$PublicClass
- <init>():V
c:com.intellij.tools.apiDump.testData.JInners$PublicClass
- <init>():V
*c:com.intellij.tools.apiDump.testData.JInners$PublicClass$ExperimentalClass
- <init>():V
pc:com.intellij.tools.apiDump.testData.JInners$PublicClass$ProtectedClass
- p:<init>():V
c:com.intellij.tools.apiDump.testData.JInners$PublicClass$PublicClassD
- <init>():V
a:com.intellij.tools.apiDump.testData.JPublicAbstractClass
- <init>():V
- pa:protectedAbstractMethod():V
- a:publicAbstractMethod():V
c:com.intellij.tools.apiDump.testData.JPublicClass
- booleanField:Z
- byteField:B
- charField:C
- doubleField:D
- f:finalField:java.lang.Object
- floatField:F
- intField:I
- longField:J
- p:protectedField:java.lang.Object
- publicField:java.lang.Object
- shortField:S
- p:<init>(B):V
- <init>(Z):V
- pf:protectedFinalMethod():V
- p:protectedMethod():V
- psf:protectedStaticFinalMethod():V
- ps:protectedStaticMethod():V
- f:publicFinalMethod():V
- publicMethod():V
- sf:publicStaticFinalMethod():V
- s:publicStaticMethod():V
c:com.intellij.tools.apiDump.testData.JPublicClassInternalInterface
- <init>():V
- s:publicStaticMethod():V
c:com.intellij.tools.apiDump.testData.JPublicClassInternalSuper
- <init>():V
- clone():com.intellij.tools.apiDump.testData.JPublicClassInternalSuper
- psf:protectedStaticFinalMethod():V
- ps:protectedStaticMethod():V
- sf:publicStaticFinalMethod():V
- s:publicStaticMethod():V
f:com.intellij.tools.apiDump.testData.JPublicFinalClass
- <init>():V
com.intellij.tools.apiDump.testData.JPublicInterface
f:com.intellij.tools.apiDump.testData.JRecord
- java.lang.Record
- <init>(I,I):V
- f:equals(java.lang.Object):Z
- f:hashCode():I
- f:toString():java.lang.String
- x():I
- y():I
*c:com.intellij.tools.apiDump.testData.KtApiExperimentalClass
*f:com.intellij.tools.apiDump.testData.KtApiExperimentalClass$ApiExperimentalClass
*f:com.intellij.tools.apiDump.testData.KtApiExperimentalClass$PublicClass
f:com.intellij.tools.apiDump.testData.KtConstructorAccessors
f:com.intellij.tools.apiDump.testData.KtConstructorAccessors$Accessor
f:com.intellij.tools.apiDump.testData.KtConstructorAccessors$AccessorWithLastInt
- b:<init>(java.lang.String,I,kotlin.jvm.internal.DefaultConstructorMarker):V
f:com.intellij.tools.apiDump.testData.KtConstructorAccessors$AccessorWithOnlyInt
f:com.intellij.tools.apiDump.testData.KtConstructorAccessors$AccessorWithParam
f:com.intellij.tools.apiDump.testData.KtConstructorAccessors$DefaultConstructorParameters
- <init>():V
- <init>(java.lang.String):V
- b:<init>(java.lang.String,I,kotlin.jvm.internal.DefaultConstructorMarker):V
f:com.intellij.tools.apiDump.testData.KtFieldAnnotations
- *f:apiExperimentalField:java.lang.Object
- *f:getApiExperimentalProperty():java.lang.Object
- *f:getApiExperimentalPropertyGetter():java.lang.Object
- *f:getApiExperimentalPropertyGetterSetter():java.lang.Object
- f:getApiExperimentalPropertySetter():java.lang.Object
- f:getApiInternalPropertySetter():java.lang.Object
- *f:setApiExperimentalPropertyGetterSetter(java.lang.Object):V
- *f:setApiExperimentalPropertySetter(java.lang.Object):V
f:com.intellij.tools.apiDump.testData.KtPublicClass
*f:com.intellij.tools.apiDump.testData.KtPublicClass$ApiExperimentalClass
f:com.intellij.tools.apiDump.testData.KtPublicClass$PublicClass
f:com.intellij.tools.apiDump.testData.defaultParameters.KtChildClass
- com.intellij.tools.apiDump.testData.defaultParameters.KtMiddleClass
- <init>():V
- function(I,I,I):V
- genericFunction(I,D,I):java.lang.Double
com.intellij.tools.apiDump.testData.defaultParameters.KtInterface
- a:function(I,I,I):V
- bs:function$default(com.intellij.tools.apiDump.testData.defaultParameters.KtInterface,I,I,I,I,java.lang.Object):V
- a:genericFunction(I,java.lang.Object,I):java.lang.Object
- bs:genericFunction$default(com.intellij.tools.apiDump.testData.defaultParameters.KtInterface,I,java.lang.Object,I,I,java.lang.Object):java.lang.Object
a:com.intellij.tools.apiDump.testData.defaultParameters.KtMiddleClass
- com.intellij.tools.apiDump.testData.defaultParameters.KtInterface
- <init>():V
f:com.intellij.tools.apiDump.testData.defaultParameters.KtTestKt
- sf:function(I,I,I):V
- bs:function$default(I,I,I,I,java.lang.Object):V
*c:com.intellij.tools.apiDump.testData.experimental.JPublicClass
- <init>():V
*c:com.intellij.tools.apiDump.testData.experimental.JPublicClass$PublicClass
- <init>():V
*f:com.intellij.tools.apiDump.testData.experimental.KPublicClass
- <init>():V
*f:com.intellij.tools.apiDump.testData.experimental.KPublicClass$PublicClass
- <init>():V
c:com.intellij.tools.apiDump.testData.generics.JGenericChildClass
- com.intellij.tools.apiDump.testData.generics.JGenericMiddleClass
- <init>():V
- acceptingAT(java.lang.Double[]):V
- acceptingLT(java.util.List):V
- acceptingT(java.lang.Double):V
- returningAT():java.lang.Double[]
- returningLT():java.lang.Iterable
- returningT():java.lang.Double
com.intellij.tools.apiDump.testData.generics.JGenericInterface
- a:acceptingAT(java.lang.Object[]):V
- a:acceptingLT(java.util.List):V
- a:acceptingT(java.lang.Object):V
- a:returningAT():java.lang.Object[]
- a:returningLT():java.lang.Iterable
- a:returningT():java.lang.Object
a:com.intellij.tools.apiDump.testData.generics.JGenericMiddleClass
- com.intellij.tools.apiDump.testData.generics.JGenericInterface
- <init>():V
- acceptingAT(java.lang.Number[]):V
- acceptingLT(java.util.List):V
- a:acceptingT(java.lang.Number):V
- returningAT():java.lang.Number[]
- returningLT():java.lang.Iterable
- returningT():java.lang.Number
f:com.intellij.tools.apiDump.testData.generics2.JChildClasses
c:com.intellij.tools.apiDump.testData.generics2.JChildClasses$JChildClassFromMiddleWithAbstractOverride
- com.intellij.tools.apiDump.testData.generics2.JGenericMiddleClassWithAbstractOverride
- <init>():V
- genericMethod(java.lang.Double):java.lang.Double
c:com.intellij.tools.apiDump.testData.generics2.JChildClasses$JChildClassFromMiddleWithOverride
- com.intellij.tools.apiDump.testData.generics2.JGenericMiddleClassWithOverride
- <init>():V
c:com.intellij.tools.apiDump.testData.generics2.JChildClasses$JChildClassFromMiddleWithoutOverride
- com.intellij.tools.apiDump.testData.generics2.JGenericMiddleClass
- <init>():V
- genericMethod(java.lang.Double):java.lang.Double
c:com.intellij.tools.apiDump.testData.generics2.JChildClasses$JChildClassWithOverrideFromMiddleWithOverride
- com.intellij.tools.apiDump.testData.generics2.JGenericMiddleClassWithOverride
- <init>():V
- genericMethod(java.lang.Double):java.lang.Double
com.intellij.tools.apiDump.testData.generics2.JGenericInterface
- a:genericMethod(java.lang.Object):java.lang.Object
a:com.intellij.tools.apiDump.testData.generics2.JGenericMiddleClass
- com.intellij.tools.apiDump.testData.generics2.JGenericInterface
- <init>():V
a:com.intellij.tools.apiDump.testData.generics2.JGenericMiddleClassWithAbstractOverride
- com.intellij.tools.apiDump.testData.generics2.JGenericInterface
- <init>():V
- a:genericMethod(java.lang.Number):java.lang.Number
a:com.intellij.tools.apiDump.testData.generics2.JGenericMiddleClassWithOverride
- com.intellij.tools.apiDump.testData.generics2.JGenericInterface
- <init>():V
- genericMethod(java.lang.Number):java.lang.Number
c:com.intellij.tools.apiDump.testData.inheritFromPackageLocal.JPublicClassFromPackageLocalRunnable
- <init>():V
f:com.intellij.tools.apiDump.testData.inheritFromPackageLocal.JPublicFinalInheritor
- <init>():V
- packagePrivateMethodWithPackagePrivateReturnType():com.intellij.tools.apiDump.testData.inheritFromPackageLocal.JPublicFinalInheritor
- ps:protectedStaticMethod():V
- s:publicStaticMethod():V
c:com.intellij.tools.apiDump.testData.inheritFromPackageLocal.JPublicInheritor
- <init>():V
- p:<init>(B):V
- packagePrivateMethodWithPackagePrivateReturnType():com.intellij.tools.apiDump.testData.inheritFromPackageLocal.JPublicInheritor
- ps:protectedStaticMethod():V
- s:publicStaticMethod():V