[FIR] Consider enum entry nested classes as local

This commit is contained in:
Mikhail Glukhikh
2020-06-04 11:29:20 +03:00
parent 8a456f578d
commit 3567880303
7 changed files with 7 additions and 7 deletions
@@ -89,6 +89,7 @@ inline fun isClassLocal(classNode: LighterASTNode, getParent: LighterASTNode.()
parent?.tokenType == KT_FILE -> return true
parent?.tokenType == CLASS_BODY && !(grandParent?.tokenType == OBJECT_DECLARATION && grandParent?.getParent()?.tokenType == OBJECT_LITERAL) -> return true
parent?.tokenType == BLOCK && grandParent?.tokenType == SCRIPT -> return true
parent?.tokenType == ENUM_ENTRY -> return true
}
}
if (tokenType == BLOCK) {
@@ -648,8 +648,10 @@ class RawFirBuilder(
}
override fun visitClassOrObject(classOrObject: KtClassOrObject, data: Unit): FirElement {
return withChildClassName(classOrObject.nameAsSafeName, classOrObject.isLocal) {
return withChildClassName(
classOrObject.nameAsSafeName,
classOrObject.isLocal || classOrObject.getStrictParentOfType<KtEnumEntry>() != null
) {
val classKind = when (classOrObject) {
is KtObjectDeclaration -> ClassKind.OBJECT
is KtClass -> when {
@@ -288,7 +288,7 @@ class ControlFlowGraphBuilder {
fun exitLocalClass(klass: FirRegularClass): Pair<LocalClassExitNode, ControlFlowGraph> {
val graph = exitClass(klass)
val node = createLocalClassExitNode(klass).also {
addNewSimpleNode(it)
addNewSimpleNodeIfPossible(it)
}
return node to graph
}