UastKotlinPsiVariable psiParent made lazy to eliminate recursion when building UAST parents

This commit is contained in:
nickl
2017-10-20 16:48:09 +03:00
committed by xiexed
parent b2e53644a5
commit 6a659f33b5
6 changed files with 138 additions and 48 deletions
+17
View File
@@ -0,0 +1,17 @@
fun getElementsAdditionalResolve(string: String): String {
val arr = listOf("1", "2")
when (string) {
"aaaa" -> {
return "bindingContext"
}
else -> {
val (bindingContext, statementFilter) = arr
return bindingContext
}
}
}
+42
View File
@@ -0,0 +1,42 @@
UFile (package = )
UClass (name = WhenAndDestructingKt)
UAnnotationMethod (name = getElementsAdditionalResolve)
UParameter (name = string)
UAnnotation (fqName = org.jetbrains.annotations.NotNull)
UBlockExpression
UDeclarationsExpression
ULocalVariable (name = arr)
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 2))
UIdentifier (Identifier (listOf))
USimpleNameReferenceExpression (identifier = listOf)
ULiteralExpression (value = "1")
ULiteralExpression (value = "2")
USwitchExpression
USimpleNameReferenceExpression (identifier = string)
UExpressionList (when)
USwitchClauseExpressionWithBody
ULiteralExpression (value = "aaaa")
UExpressionList (when_entry)
UReturnExpression
ULiteralExpression (value = "bindingContext")
UBreakExpression (label = null)
USwitchClauseExpressionWithBody
UExpressionList (when_entry)
UDeclarationsExpression
ULocalVariable (name = var837f1e82)
USimpleNameReferenceExpression (identifier = arr)
ULocalVariable (name = bindingContext)
UQualifiedReferenceExpression
USimpleNameReferenceExpression (identifier = var837f1e82)
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0))
UIdentifier (Identifier (component1))
USimpleNameReferenceExpression (identifier = <anonymous class>)
ULocalVariable (name = statementFilter)
UQualifiedReferenceExpression
USimpleNameReferenceExpression (identifier = var837f1e82)
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0))
UIdentifier (Identifier (component2))
USimpleNameReferenceExpression (identifier = <anonymous class>)
UReturnExpression
USimpleNameReferenceExpression (identifier = bindingContext)
UBreakExpression (label = null)
@@ -0,0 +1,21 @@
public final class WhenAndDestructingKt {
public static final fun getElementsAdditionalResolve(string: java.lang.String) : java.lang.String {
var arr: java.util.List<? extends java.lang.String> = listOf("1", "2")
switch (string) {
"aaaa" -> {
return "bindingContext"
break
}
-> {
var var837f1e82: <ErrorType> = arr
var bindingContext: java.lang.String = var837f1e82.<anonymous class>()
var statementFilter: java.lang.String = var837f1e82.<anonymous class>()
return bindingContext
break
}
}
}
}