Extraction Engine: Skip containers enclosing object declaration (aside of other object declarations and containing file)
This commit is contained in:
@@ -137,13 +137,20 @@ public inline fun JetFile.createTempCopy(textTransform: (String) -> String): Jet
|
|||||||
public fun PsiElement.getAllExtractionContainers(strict: Boolean = true): List<JetElement> {
|
public fun PsiElement.getAllExtractionContainers(strict: Boolean = true): List<JetElement> {
|
||||||
val containers = ArrayList<JetElement>()
|
val containers = ArrayList<JetElement>()
|
||||||
|
|
||||||
var element: PsiElement? = if (strict) getParent() else this
|
var objectFound = false
|
||||||
while (element != null) {
|
val parents = if (strict) parents else parentsWithSelf
|
||||||
when (element) {
|
for (element in parents) {
|
||||||
is JetBlockExpression, is JetClassBody, is JetFile -> containers.add(element as JetElement)
|
val isValidContainer = when (element) {
|
||||||
|
is JetFile -> true
|
||||||
|
is JetClassBody -> !objectFound || element.parent is JetObjectDeclaration
|
||||||
|
is JetBlockExpression -> !objectFound
|
||||||
|
else -> false
|
||||||
}
|
}
|
||||||
|
if (!isValidContainer) continue
|
||||||
|
|
||||||
element = element.getParent()
|
containers.add(element as JetElement)
|
||||||
|
|
||||||
|
((element as? JetClassBody)?.parent as? JetObjectDeclaration)?.let { objectFound = true }
|
||||||
}
|
}
|
||||||
|
|
||||||
return containers
|
return containers
|
||||||
|
|||||||
Reference in New Issue
Block a user