Uast: Fix for missing local variables in ctor-s bodies

similar to how it is done in `KotlinUBlockExpression`
This commit is contained in:
Nicolay Mitropolsky
2018-01-12 21:29:42 +03:00
parent 322ac6340a
commit f4a7ecc1bb
4 changed files with 13 additions and 3 deletions
@@ -23,7 +23,6 @@ import org.jetbrains.kotlin.asJava.elements.KtLightMethod
import org.jetbrains.kotlin.load.java.JvmAbi
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.utils.SmartList
import org.jetbrains.kotlin.utils.addIfNotNull
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
import org.jetbrains.uast.*
import org.jetbrains.uast.kotlin.declarations.KotlinUMethod
@@ -157,9 +156,8 @@ open class KotlinConstructorUMethod(
delegationCall?.let {
add(KotlinUFunctionCallExpression(it, uastParent))
}
val languagePlugin = uastParent.getLanguagePlugin()
bodyExpressions.forEach {
addIfNotNull(languagePlugin.convertOpt(it, uastParent))
add(KotlinConverter.convertOrEmpty(it, uastParent))
}
}
}
+2
View File
@@ -67,6 +67,8 @@ class AWithSecondaryInit {
constructor(s: String) {
a = s
var local: String = s
local.toString()
}
}
+8
View File
@@ -151,3 +151,11 @@ UFile (package = )
UBinaryExpression (operator = =)
USimpleNameReferenceExpression (identifier = a)
USimpleNameReferenceExpression (identifier = s)
UDeclarationsExpression
ULocalVariable (name = local)
USimpleNameReferenceExpression (identifier = s)
UQualifiedReferenceExpression
USimpleNameReferenceExpression (identifier = local)
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0))
UIdentifier (Identifier (toString))
USimpleNameReferenceExpression (identifier = toString)
+2
View File
@@ -75,5 +75,7 @@ public final class AWithSecondaryInit {
public fun AWithSecondaryInit(@org.jetbrains.annotations.NotNull s: java.lang.String) {
<init>()
a = s
var local: java.lang.String = s
local.toString()
}
}