diff --git a/platform/util/base/apiDump.txt b/platform/util/base/apiDump.txt index 99f8c25c72b4..44dd76226778 100644 --- a/platform/util/base/apiDump.txt +++ b/platform/util/base/apiDump.txt @@ -96,7 +96,6 @@ f:com.intellij.openapi.util.text.NaturalComparator - java.util.Comparator - sf:INSTANCE:java.util.Comparator - ():V -- b:compare(java.lang.Object,java.lang.Object):I - compare(java.lang.String,java.lang.String):I f:com.intellij.openapi.util.text.Strings - sf:EMPTY_CHAR_SEQUENCE:java.lang.CharSequence @@ -522,7 +521,6 @@ f:com.intellij.util.containers.SoftArrayHashMap - ():V - clear():V - clone():com.intellij.util.containers.SoftArrayHashMap -- b:clone():java.lang.Object - containsKey(java.lang.Object[]):Z - get(java.lang.Object[]):java.lang.Object - processLeafEntries(java.util.function.BiPredicate):Z @@ -680,7 +678,6 @@ f:com.intellij.util.text.SemVer - (java.lang.String,I,I,I):V - (java.lang.String,I,I,I,java.lang.String):V - compareTo(com.intellij.util.text.SemVer):I -- b:compareTo(java.lang.Object):I - equals(java.lang.Object):Z - getMajor():I - getMinor():I diff --git a/platform/util/commons-lang-v2-shim/apiDump.txt b/platform/util/commons-lang-v2-shim/apiDump.txt index 2f3049d33a74..c0082e21d24d 100644 --- a/platform/util/commons-lang-v2-shim/apiDump.txt +++ b/platform/util/commons-lang-v2-shim/apiDump.txt @@ -93,26 +93,18 @@ f:org.apache.commons.lang.builder.EqualsBuilder - org.apache.commons.lang3.builder.EqualsBuilder - ():V - append(I,I):org.apache.commons.lang.builder.EqualsBuilder -- b:append(I,I):org.apache.commons.lang3.builder.EqualsBuilder - append(java.lang.Object,java.lang.Object):org.apache.commons.lang.builder.EqualsBuilder -- b:append(java.lang.Object,java.lang.Object):org.apache.commons.lang3.builder.EqualsBuilder - append(Z,Z):org.apache.commons.lang.builder.EqualsBuilder -- b:append(Z,Z):org.apache.commons.lang3.builder.EqualsBuilder - appendSuper(Z):org.apache.commons.lang.builder.EqualsBuilder -- b:appendSuper(Z):org.apache.commons.lang3.builder.EqualsBuilder - s:reflectionEquals(java.lang.Object,java.lang.Object):Z f:org.apache.commons.lang.builder.HashCodeBuilder - org.apache.commons.lang3.builder.HashCodeBuilder - ():V - (I,I):V - append(I):org.apache.commons.lang.builder.HashCodeBuilder -- b:append(I):org.apache.commons.lang3.builder.HashCodeBuilder - append(java.lang.Object):org.apache.commons.lang.builder.HashCodeBuilder -- b:append(java.lang.Object):org.apache.commons.lang3.builder.HashCodeBuilder - append(Z):org.apache.commons.lang.builder.HashCodeBuilder -- b:append(Z):org.apache.commons.lang3.builder.HashCodeBuilder - appendSuper(I):org.apache.commons.lang.builder.HashCodeBuilder -- b:appendSuper(I):org.apache.commons.lang3.builder.HashCodeBuilder - s:reflectionHashCode(java.lang.Object):I f:org.apache.commons.lang.builder.ReflectionToStringBuilder - org.apache.commons.lang3.builder.ReflectionToStringBuilder @@ -135,11 +127,8 @@ f:org.apache.commons.lang.text.StrBuilder - (I):V - (java.lang.String):V - append(I):org.apache.commons.lang.text.StrBuilder -- b:append(I):org.apache.commons.lang3.text.StrBuilder - append(java.lang.String):org.apache.commons.lang.text.StrBuilder -- b:append(java.lang.String):org.apache.commons.lang3.text.StrBuilder - appendNewLine():org.apache.commons.lang.text.StrBuilder -- b:appendNewLine():org.apache.commons.lang3.text.StrBuilder f:org.apache.commons.lang.text.StrSubstitutor - org.apache.commons.lang3.text.StrSubstitutor - ():V diff --git a/platform/util/jdom/apiDump.txt b/platform/util/jdom/apiDump.txt index bc2f3e7c7781..c895fc5b7e76 100644 --- a/platform/util/jdom/apiDump.txt +++ b/platform/util/jdom/apiDump.txt @@ -12,7 +12,6 @@ c:org.jdom.Attribute - (java.lang.String,java.lang.String,org.jdom.AttributeType):V - (java.lang.String,java.lang.String,org.jdom.AttributeType,org.jdom.Namespace):V - (java.lang.String,java.lang.String,org.jdom.Namespace):V -- b:clone():java.lang.Object - clone():org.jdom.Attribute - detach():org.jdom.Attribute - getAttributeType():org.jdom.AttributeType @@ -60,27 +59,16 @@ c:org.jdom.CDATA - (Z,java.lang.String):V - append(java.lang.String):V - append(org.jdom.Text):V -- b:clone():java.lang.Object - clone():org.jdom.CDATA -- b:clone():org.jdom.Content -- b:clone():org.jdom.Text - detach():org.jdom.CDATA -- b:detach():org.jdom.Content -- b:detach():org.jdom.Text - p:setParent(org.jdom.Parent):org.jdom.CDATA -- bp:setParent(org.jdom.Parent):org.jdom.Content -- bp:setParent(org.jdom.Parent):org.jdom.Text - setText(java.lang.String):org.jdom.CDATA -- b:setText(java.lang.String):org.jdom.Text - toString():java.lang.String f:org.jdom.Comment - org.jdom.Content - (java.lang.String):V -- b:clone():java.lang.Object - clone():org.jdom.Comment -- b:clone():org.jdom.Content - detach():org.jdom.Comment -- b:detach():org.jdom.Content - getText():java.lang.String - getValue():java.lang.String - setText(java.lang.String):org.jdom.Comment @@ -90,7 +78,6 @@ a:org.jdom.Content - pf:ctype:org.jdom.Content$CType - p:parent:org.jdom.Parent - p:(org.jdom.Content$CType):V -- b:clone():java.lang.Object - clone():org.jdom.Content - detach():org.jdom.Content - f:getCType():org.jdom.Content$CType @@ -154,15 +141,11 @@ f:org.jdom.DocType - (java.lang.String):V - (java.lang.String,java.lang.String):V - (java.lang.String,java.lang.String,java.lang.String):V -- b:clone():java.lang.Object -- b:clone():org.jdom.Content - clone():org.jdom.DocType -- b:detach():org.jdom.Content - detach():org.jdom.DocType - getElementName():java.lang.String - getInternalSubset():java.lang.String - getParent():org.jdom.Document -- b:getParent():org.jdom.Parent - getPublicID():java.lang.String - getSystemID():java.lang.String - getValue():java.lang.String @@ -180,17 +163,11 @@ f:org.jdom.Document - (org.jdom.Element,org.jdom.DocType):V - (org.jdom.Element,org.jdom.DocType,java.lang.String):V - addContent(I,java.util.Collection):org.jdom.Document -- b:addContent(I,java.util.Collection):org.jdom.Parent - addContent(I,org.jdom.Content):org.jdom.Document -- b:addContent(I,org.jdom.Content):org.jdom.Parent - addContent(java.util.Collection):org.jdom.Document -- b:addContent(java.util.Collection):org.jdom.Parent - addContent(org.jdom.Content):org.jdom.Document -- b:addContent(org.jdom.Content):org.jdom.Parent - canContainContent(org.jdom.Content,I,Z):V -- b:clone():java.lang.Object - clone():org.jdom.Document -- b:clone():org.jdom.Parent - cloneContent():java.util.List - detachRootElement():org.jdom.Element - equals(java.lang.Object):Z @@ -231,23 +208,15 @@ c:org.jdom.Element - (java.lang.String,java.lang.String,java.lang.String):V - (java.lang.String,org.jdom.Namespace):V - addContent(I,java.util.Collection):org.jdom.Element -- b:addContent(I,java.util.Collection):org.jdom.Parent - addContent(I,org.jdom.Content):org.jdom.Element -- b:addContent(I,org.jdom.Content):org.jdom.Parent - addContent(java.lang.String):org.jdom.Element - addContent(java.util.Collection):org.jdom.Element -- b:addContent(java.util.Collection):org.jdom.Parent - addContent(org.jdom.Content):org.jdom.Element -- b:addContent(org.jdom.Content):org.jdom.Parent - addContent(org.jdom.Element):org.jdom.Element - addNamespaceDeclaration(org.jdom.Namespace):V - canContainContent(org.jdom.Content,I,Z):V -- b:clone():java.lang.Object -- b:clone():org.jdom.Content - clone():org.jdom.Element -- b:clone():org.jdom.Parent - cloneContent():java.util.List -- b:detach():org.jdom.Content - detach():org.jdom.Element - getAdditionalNamespaces():java.util.List - getAttribute(java.lang.String):org.jdom.Attribute @@ -324,14 +293,10 @@ f:org.jdom.EntityRef - (java.lang.String):V - (java.lang.String,java.lang.String):V - (java.lang.String,java.lang.String,java.lang.String):V -- b:clone():java.lang.Object -- b:clone():org.jdom.Content - clone():org.jdom.EntityRef -- b:detach():org.jdom.Content - detach():org.jdom.EntityRef - getName():java.lang.String - getParent():org.jdom.Element -- b:getParent():org.jdom.Parent - getValue():java.lang.String - setName(java.lang.String):org.jdom.EntityRef - setPublicID(java.lang.String):org.jdom.EntityRef @@ -429,10 +394,7 @@ f:org.jdom.ProcessingInstruction - (java.lang.String):V - (java.lang.String,java.lang.String):V - (java.lang.String,java.util.Map):V -- b:clone():java.lang.Object -- b:clone():org.jdom.Content - clone():org.jdom.ProcessingInstruction -- b:detach():org.jdom.Content - detach():org.jdom.ProcessingInstruction - getData():java.lang.String - getTarget():java.lang.String @@ -447,19 +409,14 @@ c:org.jdom.Text - p:(org.jdom.Content$CType):V - append(java.lang.String):V - append(org.jdom.Text):V -- b:clone():java.lang.Object -- b:clone():org.jdom.Content - clone():org.jdom.Text -- b:detach():org.jdom.Content - detach():org.jdom.Text - getParent():org.jdom.Element -- b:getParent():org.jdom.Parent - getText():java.lang.String - getTextNormalize():java.lang.String - getTextTrim():java.lang.String - getValue():java.lang.String - s:normalizeString(java.lang.String):java.lang.String -- bp:setParent(org.jdom.Parent):org.jdom.Content - p:setParent(org.jdom.Parent):org.jdom.Text - setText(java.lang.String):org.jdom.Text - toString():java.lang.String @@ -507,7 +464,6 @@ f:org.jdom.filter2.ElementFilter - (java.lang.String,org.jdom.Namespace):V - (org.jdom.Namespace):V - equals(java.lang.Object):Z -- b:filter(java.lang.Object):java.lang.Object - filter(java.lang.Object):org.jdom.Element - hashCode():I - toString():java.lang.String @@ -663,7 +619,6 @@ org.jdom.output.EscapeStrategy - a:shouldEscape(C):Z f:org.jdom.output.Format - java.lang.Cloneable -- b:clone():java.lang.Object - clone():org.jdom.output.Format - s:compact(java.lang.String):java.lang.String - s:getCompactFormat():org.jdom.output.Format @@ -793,7 +748,6 @@ f:org.jdom.xpath.jaxen.JaxenXPathFactory a:org.jdom.xpath.util.AbstractXPathCompiled - org.jdom.xpath.XPathExpression - (java.lang.String,org.jdom.filter2.Filter,java.util.Map,org.jdom.Namespace[]):V -- b:clone():java.lang.Object - clone():org.jdom.xpath.XPathExpression - diagnose(java.lang.Object,Z):org.jdom.xpath.XPathDiagnostic - evaluate(java.lang.Object):java.util.List diff --git a/tools/apiDump/src/impl.kt b/tools/apiDump/src/impl.kt index d76c1a56b3f7..305101100b24 100644 --- a/tools/apiDump/src/impl.kt +++ b/tools/apiDump/src/impl.kt @@ -2,10 +2,7 @@ package com.intellij.tools.apiDump import kotlinx.metadata.jvm.JvmFieldSignature -import kotlinx.validation.api.ClassBinarySignature -import kotlinx.validation.api.MEMBER_SORT_ORDER -import kotlinx.validation.api.MemberBinarySignature -import kotlinx.validation.api.loadApiFromJvmClasses +import kotlinx.validation.api.* import org.objectweb.asm.Opcodes import org.objectweb.asm.Type import org.objectweb.asm.tree.AnnotationNode @@ -30,6 +27,7 @@ class ApiIndex { val signatures: List = classFilePaths .map { it.inputStream() } .loadApiFromJvmClasses() + .map { it.removeSyntheticBridges() } discoverClasses(signatures) handleAnnotationsAndVisibility(signatures) @@ -134,28 +132,8 @@ class ApiIndex { member.access.isStatic } } - val privateSignatures = privateSupertypes.flatMap { superType -> - superType.memberSignatures - .filter { - val flags = it.access.access - !flags.isSet(Opcodes.ACC_STATIC) - && !flags.isSet(Opcodes.ACC_BRIDGE) - && !flags.isSet(Opcodes.ACC_SYNTHETIC) - } - .map { - it.jvmMember - } - }.toSet() - val withoutBridges = memberSignatures - .filter { signature -> - val flags = signature.access.access - flags.isSet(Opcodes.ACC_STATIC) - || !flags.isSet(Opcodes.ACC_BRIDGE) - || !flags.isSet(Opcodes.ACC_SYNTHETIC) - || signature.jvmMember !in privateSignatures - } return this.copy( - memberSignatures = withoutBridges + inheritedStaticSignatures, + memberSignatures = memberSignatures + inheritedStaticSignatures, supertypes = supertypes - privateSupertypes.map { it.name }.toSet() ) } @@ -236,6 +214,26 @@ private fun List?.isExperimental(): Boolean { private typealias ClassResolver = (String) -> ClassBinarySignature? +private fun ClassBinarySignature.removeSyntheticBridges(): ClassBinarySignature { + val withoutBridges = memberSignatures.filterNot { + it is MethodBinarySignature && it.isSyntheticBridge() + } + if (withoutBridges.size == memberSignatures.size) { + return this + } + else { + return copy(memberSignatures = withoutBridges) + } +} + +private fun MethodBinarySignature.isSyntheticBridge(): Boolean { + return access.access.let { flags -> + !flags.isSet(Opcodes.ACC_STATIC) + && flags.isSet(Opcodes.ACC_BRIDGE) + && flags.isSet(Opcodes.ACC_SYNTHETIC) + } +} + private fun ClassBinarySignature.supertypes(classResolver: ClassResolver): Sequence = sequence { val stack = ArrayDeque() stack.addLast(this@supertypes) diff --git a/tools/apiDump/testData/apiDump.txt b/tools/apiDump/testData/apiDump.txt index ff65afea8f48..a6bae26eb1fd 100644 --- a/tools/apiDump/testData/apiDump.txt +++ b/tools/apiDump/testData/apiDump.txt @@ -89,7 +89,6 @@ c:com.intellij.tools.apiDump.testData.JPublicClassInternalInterface c:com.intellij.tools.apiDump.testData.JPublicClassInternalSuper - ():V - clone():com.intellij.tools.apiDump.testData.JPublicClassInternalSuper -- b:clone():java.lang.Object - psf:protectedStaticFinalMethod():V - ps:protectedStaticMethod():V - sf:publicStaticFinalMethod():V @@ -135,7 +134,6 @@ f:com.intellij.tools.apiDump.testData.defaultParameters.KtChildClass - ():V - function(I,I,I):V - genericFunction(I,D,I):java.lang.Double -- b:genericFunction(I,java.lang.Object,I):java.lang.Object 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 @@ -159,19 +157,11 @@ c:com.intellij.tools.apiDump.testData.generics.JGenericChildClass - com.intellij.tools.apiDump.testData.generics.JGenericMiddleClass - ():V - acceptingAT(java.lang.Double[]):V -- b:acceptingAT(java.lang.Number[]):V -- b:acceptingAT(java.lang.Object[]):V - acceptingLT(java.util.List):V - acceptingT(java.lang.Double):V -- b:acceptingT(java.lang.Number):V -- b:acceptingT(java.lang.Object):V - returningAT():java.lang.Double[] -- b:returningAT():java.lang.Number[] -- b:returningAT():java.lang.Object[] - returningLT():java.lang.Iterable - returningT():java.lang.Double -- b:returningT():java.lang.Number -- b:returningT():java.lang.Object com.intellij.tools.apiDump.testData.generics.JGenericInterface - a:acceptingAT(java.lang.Object[]):V - a:acceptingLT(java.util.List):V @@ -183,22 +173,16 @@ a:com.intellij.tools.apiDump.testData.generics.JGenericMiddleClass - com.intellij.tools.apiDump.testData.generics.JGenericInterface - ():V - acceptingAT(java.lang.Number[]):V -- b:acceptingAT(java.lang.Object[]):V - acceptingLT(java.util.List):V - a:acceptingT(java.lang.Number):V -- b:acceptingT(java.lang.Object):V - returningAT():java.lang.Number[] -- b:returningAT():java.lang.Object[] - returningLT():java.lang.Iterable - returningT():java.lang.Number -- b:returningT():java.lang.Object f:com.intellij.tools.apiDump.testData.generics2.JChildClasses c:com.intellij.tools.apiDump.testData.generics2.JChildClasses$JChildClassFromMiddleWithAbstractOverride - com.intellij.tools.apiDump.testData.generics2.JGenericMiddleClassWithAbstractOverride - ():V - genericMethod(java.lang.Double):java.lang.Double -- b:genericMethod(java.lang.Number):java.lang.Number -- b:genericMethod(java.lang.Object):java.lang.Object c:com.intellij.tools.apiDump.testData.generics2.JChildClasses$JChildClassFromMiddleWithOverride - com.intellij.tools.apiDump.testData.generics2.JGenericMiddleClassWithOverride - ():V @@ -206,13 +190,10 @@ c:com.intellij.tools.apiDump.testData.generics2.JChildClasses$JChildClassFromMid - com.intellij.tools.apiDump.testData.generics2.JGenericMiddleClass - ():V - genericMethod(java.lang.Double):java.lang.Double -- b:genericMethod(java.lang.Object):java.lang.Object c:com.intellij.tools.apiDump.testData.generics2.JChildClasses$JChildClassWithOverrideFromMiddleWithOverride - com.intellij.tools.apiDump.testData.generics2.JGenericMiddleClassWithOverride - ():V - genericMethod(java.lang.Double):java.lang.Double -- b:genericMethod(java.lang.Number):java.lang.Number -- b:genericMethod(java.lang.Object):java.lang.Object com.intellij.tools.apiDump.testData.generics2.JGenericInterface - a:genericMethod(java.lang.Object):java.lang.Object a:com.intellij.tools.apiDump.testData.generics2.JGenericMiddleClass @@ -222,24 +203,20 @@ a:com.intellij.tools.apiDump.testData.generics2.JGenericMiddleClassWithAbstractO - com.intellij.tools.apiDump.testData.generics2.JGenericInterface - ():V - a:genericMethod(java.lang.Number):java.lang.Number -- b:genericMethod(java.lang.Object):java.lang.Object a:com.intellij.tools.apiDump.testData.generics2.JGenericMiddleClassWithOverride - com.intellij.tools.apiDump.testData.generics2.JGenericInterface - ():V - genericMethod(java.lang.Number):java.lang.Number -- b:genericMethod(java.lang.Object):java.lang.Object c:com.intellij.tools.apiDump.testData.inheritFromPackageLocal.JPublicClassFromPackageLocalRunnable - ():V f:com.intellij.tools.apiDump.testData.inheritFromPackageLocal.JPublicFinalInheritor - ():V -- b:packagePrivateMethodWithPackagePrivateReturnType():com.intellij.tools.apiDump.testData.inheritFromPackageLocal.JPackageLocalClass - packagePrivateMethodWithPackagePrivateReturnType():com.intellij.tools.apiDump.testData.inheritFromPackageLocal.JPublicFinalInheritor - ps:protectedStaticMethod():V - s:publicStaticMethod():V c:com.intellij.tools.apiDump.testData.inheritFromPackageLocal.JPublicInheritor - ():V - p:(B):V -- b:packagePrivateMethodWithPackagePrivateReturnType():com.intellij.tools.apiDump.testData.inheritFromPackageLocal.JPackageLocalClass - packagePrivateMethodWithPackagePrivateReturnType():com.intellij.tools.apiDump.testData.inheritFromPackageLocal.JPublicInheritor - ps:protectedStaticMethod():V - s:publicStaticMethod():V