diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightClassForFacade.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightClassForFacade.kt index de9a354ed47..834ab58296c 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightClassForFacade.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/FirLightClassForFacade.kt @@ -22,7 +22,7 @@ import org.jetbrains.kotlin.analysis.api.scopes.KtScope import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtFunctionSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtKotlinPropertySymbol -import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithDeclarations +import org.jetbrains.kotlin.analysis.api.symbols.markers.KtAnnotatedSymbol import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithVisibility import org.jetbrains.kotlin.light.classes.symbol.classes.analyseForLightClasses import org.jetbrains.kotlin.light.classes.symbol.classes.createField @@ -92,6 +92,7 @@ class FirLightClassForFacade( for (callableSymbol in fileSymbol.getFileScope().getCallableSymbols()) { if (callableSymbol !is KtFunctionSymbol && callableSymbol !is KtKotlinPropertySymbol) continue if (callableSymbol !is KtSymbolWithVisibility) continue + if ((callableSymbol as? KtAnnotatedSymbol)?.hasInlineOnlyAnnotation() == true) continue val isPrivate = callableSymbol.toPsiVisibilityForMember(isTopLevel = true) == PsiModifier.PRIVATE if (isPrivate && multiFileClass) continue yield(callableSymbol) diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/firLightClassUtils.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/firLightClassUtils.kt index 6d9a2601c71..ea74d5bef8f 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/firLightClassUtils.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/firLightClassUtils.kt @@ -13,6 +13,7 @@ import com.intellij.psi.util.CachedValuesManager import org.jetbrains.kotlin.analysis.providers.createProjectWideOutOfBlockModificationTracker import org.jetbrains.kotlin.analysis.api.symbols.* import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithMembers +import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithTypeParameters import org.jetbrains.kotlin.analysis.api.symbols.markers.isPrivateOrPrivateToThis import org.jetbrains.kotlin.analysis.api.tokens.HackToForceAllowRunningAnalyzeOnEDT import org.jetbrains.kotlin.analysis.api.tokens.hackyAllowRunningOnEdt @@ -192,7 +193,10 @@ internal fun FirLightClassBase.createMethods( fun handleDeclaration(declaration: KtCallableSymbol) { when (declaration) { is KtFunctionSymbol -> { - if (declaration.isInline || declaration.isHiddenOrSynthetic(project)) return + // TODO: check if it has expect modifier + if (declaration.hasReifiedParameters || + declaration.isHiddenOrSynthetic(project) + ) return var methodIndex = METHOD_INDEX_BASE result.add( @@ -259,7 +263,7 @@ internal fun FirLightClassBase.createPropertyAccessors( if (declaration.hasJvmFieldAnnotation()) return fun KtPropertyAccessorSymbol.needToCreateAccessor(siteTarget: AnnotationUseSiteTarget): Boolean { - if (isInline) return false + if (declaration.hasReifiedParameters) return false if (!hasBody && visibility.isPrivateOrPrivateToThis()) return false if (declaration.isHiddenOrSynthetic(project, siteTarget)) return false if (isHiddenOrSynthetic(project)) return false @@ -443,3 +447,6 @@ internal fun KtClassOrObject.checkIsInheritor(baseClassOrigin: KtClassOrObject, } } } + +private val KtSymbolWithTypeParameters.hasReifiedParameters: Boolean + get() = typeParameters.any { it.isReified } diff --git a/compiler/testData/asJava/lightClasses/PublishedApi.fir.java b/compiler/testData/asJava/lightClasses/PublishedApi.fir.java deleted file mode 100644 index ceeb773076b..00000000000 --- a/compiler/testData/asJava/lightClasses/PublishedApi.fir.java +++ /dev/null @@ -1,7 +0,0 @@ -public final class A /* A*/ { - @kotlin.PublishedApi() - public final int access$test(int);// access$test(int) - - public A();// .ctor() - -} diff --git a/compiler/testData/asJava/ultraLightClasses/inlineOnly.fir.java b/compiler/testData/asJava/ultraLightClasses/inlineOnly.fir.java index 4416e0d36c4..c95c77c0f08 100644 --- a/compiler/testData/asJava/ultraLightClasses/inlineOnly.fir.java +++ b/compiler/testData/asJava/ultraLightClasses/inlineOnly.fir.java @@ -1,4 +1,8 @@ public final class A /* A*/ { + @kotlin.Suppress(names = "INVISIBLE_REFERENCE") + @kotlin.internal.InlineOnly() + private final void foo();// foo() + public A();// .ctor() }