Refine isInlineOnly check in KtUltraLightClass
This commit is contained in:
@@ -40,6 +40,7 @@ import org.jetbrains.kotlin.resolve.annotations.argumentValue
|
||||
import org.jetbrains.kotlin.resolve.constants.EnumValue
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.isPublishedApi
|
||||
import org.jetbrains.kotlin.resolve.inline.isInlineOnly
|
||||
import org.jetbrains.kotlin.resolve.jvm.annotations.STRICTFP_ANNOTATION_FQ_NAME
|
||||
import org.jetbrains.kotlin.resolve.jvm.annotations.SYNCHRONIZED_ANNOTATION_FQ_NAME
|
||||
import org.jetbrains.kotlin.resolve.jvm.annotations.TRANSIENT_ANNOTATION_FQ_NAME
|
||||
@@ -385,7 +386,17 @@ class KtUltraLightClass(classOrObject: KtClassOrObject, private val support: Ult
|
||||
fun KtDeclaration.isPrivate() =
|
||||
hasModifier(PRIVATE_KEYWORD) ||
|
||||
this is KtConstructor<*> && classOrObject.hasModifier(SEALED_KEYWORD) ||
|
||||
this is KtFunction && typeParameters.any { it.hasModifier(REIFIED_KEYWORD) }
|
||||
isInlineOnly()
|
||||
|
||||
private fun KtDeclaration.isInlineOnly(): Boolean {
|
||||
if (this !is KtCallableDeclaration || !hasModifier(INLINE_KEYWORD)) return false
|
||||
if (typeParameters.any { it.hasModifier(REIFIED_KEYWORD) }) return true
|
||||
if (annotationEntries.isEmpty()) return false
|
||||
|
||||
val descriptor = resolve() as? CallableMemberDescriptor ?: return false
|
||||
|
||||
return descriptor.isInlineOnly()
|
||||
}
|
||||
}
|
||||
).setConstructor(declaration is KtConstructor<*>)
|
||||
}
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
class A {
|
||||
@kotlin.internal.InlineOnly
|
||||
inline fun foo() {}
|
||||
}
|
||||
+5
@@ -94,6 +94,11 @@ public class UltraLightClassLoadingTestGenerated extends AbstractUltraLightClass
|
||||
runTest("compiler/testData/asJava/ultraLightClasses/inlineClasses.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("inlineOnly.kt")
|
||||
public void testInlineOnly() throws Exception {
|
||||
runTest("compiler/testData/asJava/ultraLightClasses/inlineOnly.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("jvmName.kt")
|
||||
public void testJvmName() throws Exception {
|
||||
runTest("compiler/testData/asJava/ultraLightClasses/jvmName.kt");
|
||||
|
||||
Reference in New Issue
Block a user