jvm-abi-gen: Mark all anonymous objects in inline function scope as public
Anonymous objects inside of a private inline function nested in a public inline function can still escape.
This commit is contained in:
committed by
Alexander Udalov
parent
d94817cfb6
commit
3ffe495346
+14
-3
@@ -418,9 +418,20 @@ class PsiSourceCompilerForInline(
|
||||
fun DeclarationDescriptor.isInlineOrInsideInline(): Boolean =
|
||||
getInlineCallSiteVisibility() != null
|
||||
|
||||
fun DeclarationDescriptor.getInlineCallSiteVisibility(): DescriptorVisibility? =
|
||||
if (this is FunctionDescriptor && isInline) visibility
|
||||
else containingDeclaration?.getInlineCallSiteVisibility()
|
||||
fun DeclarationDescriptor.getInlineCallSiteVisibility(): DescriptorVisibility? {
|
||||
var declaration: DeclarationDescriptor? = this
|
||||
var result: DescriptorVisibility? = null
|
||||
while (declaration != null) {
|
||||
if (declaration is FunctionDescriptor && declaration.isInline) {
|
||||
if (!DescriptorVisibilities.isPrivate(declaration.visibility)) {
|
||||
return declaration.visibility
|
||||
}
|
||||
result = declaration.visibility
|
||||
}
|
||||
declaration = declaration.containingDeclaration
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
fun getDeclarationLabels(lambdaOrFun: PsiElement?, descriptor: DeclarationDescriptor): Set<String> {
|
||||
val result = HashSet<String>()
|
||||
|
||||
Reference in New Issue
Block a user