Support type enhancement on freshly supported module level annotations

^KT-45189 Fixed
This commit is contained in:
Victor Petukhov
2021-04-15 15:09:02 +03:00
parent bc5e92033b
commit b9536a25d6
53 changed files with 1781 additions and 93 deletions
@@ -58,6 +58,20 @@ fun DeclarationDescriptor.isTopLevelInPackage(name: String, packageName: String)
return packageName == packageFqName
}
fun DeclarationDescriptor.isTopLevelInPackage() = containingDeclaration is PackageFragmentDescriptor
fun DeclarationDescriptor.getTopLevelContainingClassifier(): ClassifierDescriptor? {
val containingDeclaration = containingDeclaration
if (containingDeclaration == null || this is PackageFragmentDescriptor) return null
return if (!containingDeclaration.isTopLevelInPackage()) {
containingDeclaration.getTopLevelContainingClassifier()
} else if (containingDeclaration is ClassifierDescriptor) {
containingDeclaration
} else null
}
fun CallableDescriptor.isSupportedForCallableReference() = this is PropertyDescriptor || this is FunctionDescriptor
@OptIn(ExperimentalContracts::class)