From f4a7ecc1bb4e91208e238033225ddf4b82955463 Mon Sep 17 00:00:00 2001 From: Nicolay Mitropolsky Date: Fri, 12 Jan 2018 21:29:42 +0300 Subject: [PATCH] Uast: Fix for missing local variables in ctor-s bodies similar to how it is done in `KotlinUBlockExpression` --- .../jetbrains/uast/kotlin/declarations/KotlinUClass.kt | 4 +--- plugins/uast-kotlin/testData/Constructors.kt | 2 ++ plugins/uast-kotlin/testData/Constructors.log.txt | 8 ++++++++ plugins/uast-kotlin/testData/Constructors.render.txt | 2 ++ 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUClass.kt b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUClass.kt index a1214b60c89..25ebdf5fb69 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUClass.kt +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUClass.kt @@ -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)) } } } diff --git a/plugins/uast-kotlin/testData/Constructors.kt b/plugins/uast-kotlin/testData/Constructors.kt index c60ddf4022e..d3d0411c719 100644 --- a/plugins/uast-kotlin/testData/Constructors.kt +++ b/plugins/uast-kotlin/testData/Constructors.kt @@ -67,6 +67,8 @@ class AWithSecondaryInit { constructor(s: String) { a = s + var local: String = s + local.toString() } } \ No newline at end of file diff --git a/plugins/uast-kotlin/testData/Constructors.log.txt b/plugins/uast-kotlin/testData/Constructors.log.txt index 36aa4036ab8..2b238a4f29d 100644 --- a/plugins/uast-kotlin/testData/Constructors.log.txt +++ b/plugins/uast-kotlin/testData/Constructors.log.txt @@ -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) diff --git a/plugins/uast-kotlin/testData/Constructors.render.txt b/plugins/uast-kotlin/testData/Constructors.render.txt index f0b3db47f5b..d519454d6b9 100644 --- a/plugins/uast-kotlin/testData/Constructors.render.txt +++ b/plugins/uast-kotlin/testData/Constructors.render.txt @@ -75,5 +75,7 @@ public final class AWithSecondaryInit { public fun AWithSecondaryInit(@org.jetbrains.annotations.NotNull s: java.lang.String) { () a = s + var local: java.lang.String = s + local.toString() } }