Uast: making KotlinStringTemplateUPolyadicExpression.operands always non-empty (EA-231393)
This commit is contained in:
+1
-1
@@ -36,7 +36,7 @@ class KotlinStringTemplateUPolyadicExpression(
|
||||
this,
|
||||
DEFAULT_EXPRESSION_TYPES_LIST
|
||||
)!!
|
||||
}
|
||||
}.takeIf { it.isNotEmpty() } ?: listOf(KotlinStringULiteralExpression(sourcePsi, this, ""))
|
||||
}
|
||||
override val operator = UastBinaryOperator.PLUS
|
||||
|
||||
|
||||
@@ -124,7 +124,8 @@ UFile (package = )
|
||||
ULiteralExpression (value = "%i %i %i")
|
||||
UQualifiedReferenceExpression
|
||||
UQualifiedReferenceExpression
|
||||
UPolyadicExpression (value = "")
|
||||
UPolyadicExpression (operator = +)
|
||||
ULiteralExpression (value = "")
|
||||
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))
|
||||
UIdentifier (Identifier (chunked))
|
||||
USimpleNameReferenceExpression (identifier = chunked, resolvesTo = null)
|
||||
|
||||
+2
-1
@@ -124,7 +124,8 @@ UFile (package = )
|
||||
ULiteralExpression (value = "%i %i %i")
|
||||
UQualifiedReferenceExpression
|
||||
UQualifiedReferenceExpression
|
||||
UPolyadicExpression (value = "")
|
||||
UPolyadicExpression (operator = +)
|
||||
ULiteralExpression (value = "")
|
||||
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1))
|
||||
UIdentifier (Identifier (chunked))
|
||||
USimpleNameReferenceExpression (identifier = chunked, resolvesTo = null)
|
||||
|
||||
@@ -8,6 +8,8 @@ val literalInLiteral = "a ${"literal$case4"} z"
|
||||
|
||||
val literalInLiteral2 = "a ${"literal$case4".repeat(4)} z"
|
||||
|
||||
val empty = ""
|
||||
|
||||
fun simpleForTemplate(i: Int = 0) = "$i"
|
||||
|
||||
fun foo() {
|
||||
|
||||
@@ -45,11 +45,16 @@ UFile (package = )
|
||||
USimpleNameReferenceExpression (identifier = repeat, resolvesTo = null)
|
||||
ULiteralExpression (value = 4)
|
||||
ULiteralExpression (value = " z")
|
||||
UField (name = empty)
|
||||
UAnnotation (fqName = org.jetbrains.annotations.NotNull)
|
||||
UPolyadicExpression (operator = +)
|
||||
ULiteralExpression (value = "")
|
||||
UMethod (name = getMuchRecur)
|
||||
UMethod (name = getCase4)
|
||||
UMethod (name = getCase5)
|
||||
UMethod (name = getLiteralInLiteral)
|
||||
UMethod (name = getLiteralInLiteral2)
|
||||
UMethod (name = getEmpty)
|
||||
UMethod (name = simpleForTemplate)
|
||||
UParameter (name = i)
|
||||
UAnnotation (fqName = org.jetbrains.annotations.NotNull)
|
||||
|
||||
@@ -4,11 +4,13 @@ public final class StringTemplateComplexKt {
|
||||
@org.jetbrains.annotations.NotNull private static final var case5: java.lang.String = "a " + "literal" + " " + "literal" + " z"
|
||||
@org.jetbrains.annotations.NotNull private static final var literalInLiteral: java.lang.String = "a " + "literal" + case4 + " z"
|
||||
@org.jetbrains.annotations.NotNull private static final var literalInLiteral2: java.lang.String = "a " + "literal" + case4.repeat(4) + " z"
|
||||
@org.jetbrains.annotations.NotNull private static final var empty: java.lang.String = ""
|
||||
public static final fun getMuchRecur() : java.lang.String = UastEmptyExpression
|
||||
public static final fun getCase4() : java.lang.String = UastEmptyExpression
|
||||
public static final fun getCase5() : java.lang.String = UastEmptyExpression
|
||||
public static final fun getLiteralInLiteral() : java.lang.String = UastEmptyExpression
|
||||
public static final fun getLiteralInLiteral2() : java.lang.String = UastEmptyExpression
|
||||
public static final fun getEmpty() : java.lang.String = UastEmptyExpression
|
||||
public static final fun simpleForTemplate(@org.jetbrains.annotations.NotNull i: int) : java.lang.String {
|
||||
return i
|
||||
}
|
||||
|
||||
@@ -45,11 +45,16 @@ UFile (package = ) [public final class StringTemplateComplexKt {...]
|
||||
USimpleNameReferenceExpression (identifier = repeat, resolvesTo = null) [repeat] : PsiType:String
|
||||
ULiteralExpression (value = 4) [4] : PsiType:int
|
||||
ULiteralExpression (value = " z") [" z"] : PsiType:String
|
||||
UField (name = empty) [@org.jetbrains.annotations.NotNull private static final var empty: java.lang.String = ""]
|
||||
UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
|
||||
UPolyadicExpression (operator = +) [""] : PsiType:String
|
||||
ULiteralExpression (value = "") [""] : PsiType:String
|
||||
UMethod (name = getMuchRecur) [public static final fun getMuchRecur() : java.lang.String = UastEmptyExpression]
|
||||
UMethod (name = getCase4) [public static final fun getCase4() : java.lang.String = UastEmptyExpression]
|
||||
UMethod (name = getCase5) [public static final fun getCase5() : java.lang.String = UastEmptyExpression]
|
||||
UMethod (name = getLiteralInLiteral) [public static final fun getLiteralInLiteral() : java.lang.String = UastEmptyExpression]
|
||||
UMethod (name = getLiteralInLiteral2) [public static final fun getLiteralInLiteral2() : java.lang.String = UastEmptyExpression]
|
||||
UMethod (name = getEmpty) [public static final fun getEmpty() : java.lang.String = UastEmptyExpression]
|
||||
UMethod (name = simpleForTemplate) [public static final fun simpleForTemplate(@org.jetbrains.annotations.NotNull i: int) : java.lang.String {...}]
|
||||
UParameter (name = i) [@org.jetbrains.annotations.NotNull var i: int = 0]
|
||||
UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
UFile (package = ) [public final class StringTemplateComplexKt {...]
|
||||
UClass (name = StringTemplateComplexKt) [public final class StringTemplateComplexKt {...}]
|
||||
UField (name = muchRecur) [@org.jetbrains.annotations.NotNull private static final var muchRecur: java.lang.String = "abc"]
|
||||
UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
|
||||
UPolyadicExpression (operator = +) ["abc"] = "abc"
|
||||
UPolyadicExpression (operator = +) ["abc"] = "abc"
|
||||
UPolyadicExpression (operator = +) ["abc"] = "abc"
|
||||
UPolyadicExpression (operator = +) ["abc"] = "abc"
|
||||
ULiteralExpression (value = "abc") ["abc"] = "abc"
|
||||
UField (name = case4) [@org.jetbrains.annotations.NotNull private static final var case4: java.lang.String = "a " + "literal" + " z"]
|
||||
UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
|
||||
UPolyadicExpression (operator = +) ["a " + "literal" + " z"] = "a literal z"
|
||||
ULiteralExpression (value = "a ") ["a "] = "a "
|
||||
UPolyadicExpression (operator = +) ["literal"] = "literal"
|
||||
ULiteralExpression (value = "literal") ["literal"] = "literal"
|
||||
ULiteralExpression (value = " z") [" z"] = " z"
|
||||
UField (name = case5) [@org.jetbrains.annotations.NotNull private static final var case5: java.lang.String = "a " + "literal" + " " + "literal" + " z"]
|
||||
UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
|
||||
UPolyadicExpression (operator = +) ["a " + "literal" + " " + "literal" + " z"] = "a literal literal z"
|
||||
ULiteralExpression (value = "a ") ["a "] = "a "
|
||||
UPolyadicExpression (operator = +) ["literal"] = "literal"
|
||||
ULiteralExpression (value = "literal") ["literal"] = "literal"
|
||||
ULiteralExpression (value = " ") [" "] = " "
|
||||
UPolyadicExpression (operator = +) ["literal"] = "literal"
|
||||
ULiteralExpression (value = "literal") ["literal"] = "literal"
|
||||
ULiteralExpression (value = " z") [" z"] = " z"
|
||||
UField (name = literalInLiteral) [@org.jetbrains.annotations.NotNull private static final var literalInLiteral: java.lang.String = "a " + "literal" + case4 + " z"]
|
||||
UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
|
||||
UPolyadicExpression (operator = +) ["a " + "literal" + case4 + " z"] = Undetermined
|
||||
ULiteralExpression (value = "a ") ["a "] = "a "
|
||||
UPolyadicExpression (operator = +) ["literal" + case4] = Undetermined
|
||||
ULiteralExpression (value = "literal") ["literal"] = "literal"
|
||||
USimpleNameReferenceExpression (identifier = case4) [case4] = external case4()
|
||||
ULiteralExpression (value = " z") [" z"] = " z"
|
||||
UField (name = literalInLiteral2) [@org.jetbrains.annotations.NotNull private static final var literalInLiteral2: java.lang.String = "a " + "literal" + case4.repeat(4) + " z"]
|
||||
UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
|
||||
UPolyadicExpression (operator = +) ["a " + "literal" + case4.repeat(4) + " z"] = Undetermined
|
||||
ULiteralExpression (value = "a ") ["a "] = "a "
|
||||
UQualifiedReferenceExpression ["literal" + case4.repeat(4)] = external repeat(4)(4)
|
||||
UPolyadicExpression (operator = +) ["literal" + case4] = Undetermined
|
||||
ULiteralExpression (value = "literal") ["literal"] = "literal"
|
||||
USimpleNameReferenceExpression (identifier = case4) [case4] = external case4()
|
||||
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [repeat(4)] = external repeat(4)(4)
|
||||
UIdentifier (Identifier (repeat)) [UIdentifier (Identifier (repeat))]
|
||||
USimpleNameReferenceExpression (identifier = repeat, resolvesTo = null) [repeat] = external repeat(4)(4)
|
||||
ULiteralExpression (value = 4) [4] = 4
|
||||
ULiteralExpression (value = " z") [" z"] = " z"
|
||||
UField (name = empty) [@org.jetbrains.annotations.NotNull private static final var empty: java.lang.String = ""]
|
||||
UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
|
||||
UPolyadicExpression (operator = +) [""] = ""
|
||||
ULiteralExpression (value = "") [""] = ""
|
||||
UMethod (name = getMuchRecur) [public static final fun getMuchRecur() : java.lang.String = UastEmptyExpression]
|
||||
UMethod (name = getCase4) [public static final fun getCase4() : java.lang.String = UastEmptyExpression]
|
||||
UMethod (name = getCase5) [public static final fun getCase5() : java.lang.String = UastEmptyExpression]
|
||||
UMethod (name = getLiteralInLiteral) [public static final fun getLiteralInLiteral() : java.lang.String = UastEmptyExpression]
|
||||
UMethod (name = getLiteralInLiteral2) [public static final fun getLiteralInLiteral2() : java.lang.String = UastEmptyExpression]
|
||||
UMethod (name = getEmpty) [public static final fun getEmpty() : java.lang.String = UastEmptyExpression]
|
||||
UMethod (name = simpleForTemplate) [public static final fun simpleForTemplate(@org.jetbrains.annotations.NotNull i: int) : java.lang.String {...}]
|
||||
UParameter (name = i) [@org.jetbrains.annotations.NotNull var i: int = 0]
|
||||
UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
|
||||
ULiteralExpression (value = 0) [0] = 0
|
||||
UBlockExpression [{...}] = Nothing
|
||||
UReturnExpression [return i] = Nothing
|
||||
UPolyadicExpression (operator = +) [i] = Undetermined
|
||||
USimpleNameReferenceExpression (identifier = i) [i] = Undetermined
|
||||
UMethod (name = foo) [public static final fun foo() : void {...}]
|
||||
UBlockExpression [{...}] = Undetermined
|
||||
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 1)) [println(baz)] = external println(baz)(external baz())
|
||||
UIdentifier (Identifier (println)) [UIdentifier (Identifier (println))]
|
||||
USimpleNameReferenceExpression (identifier = println, resolvesTo = null) [println] = external println(baz)(external baz())
|
||||
UPolyadicExpression (operator = +) [baz] = external baz()
|
||||
USimpleNameReferenceExpression (identifier = baz) [baz] = external baz()
|
||||
UDeclarationsExpression [var template1: java.lang.String = simpleForTemplate()] = Undetermined
|
||||
ULocalVariable (name = template1) [var template1: java.lang.String = simpleForTemplate()]
|
||||
UPolyadicExpression (operator = +) [simpleForTemplate()] = external simpleForTemplate()()
|
||||
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0)) [simpleForTemplate()] = external simpleForTemplate()()
|
||||
UIdentifier (Identifier (simpleForTemplate)) [UIdentifier (Identifier (simpleForTemplate))]
|
||||
USimpleNameReferenceExpression (identifier = simpleForTemplate, resolvesTo = null) [simpleForTemplate] = external simpleForTemplate()()
|
||||
UDeclarationsExpression [var template2: java.lang.String = "." + simpleForTemplate()] = Undetermined
|
||||
ULocalVariable (name = template2) [var template2: java.lang.String = "." + simpleForTemplate()]
|
||||
UPolyadicExpression (operator = +) ["." + simpleForTemplate()] = Undetermined
|
||||
ULiteralExpression (value = ".") ["."] = "."
|
||||
UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0)) [simpleForTemplate()] = external simpleForTemplate()()
|
||||
UIdentifier (Identifier (simpleForTemplate)) [UIdentifier (Identifier (simpleForTemplate))]
|
||||
USimpleNameReferenceExpression (identifier = simpleForTemplate, resolvesTo = null) [simpleForTemplate] = external simpleForTemplate()()
|
||||
@@ -8,6 +8,8 @@ val literalInLiteral = "a ${"literal$case4"} z"
|
||||
|
||||
val literalInLiteral2 = "a ${"literal$case4".repeat(4)} z"
|
||||
|
||||
val empty = ""
|
||||
|
||||
fun simpleForTemplate(i: Int = 0) = "$i"
|
||||
|
||||
fun foo() {
|
||||
|
||||
@@ -45,11 +45,16 @@ UFile (package = )
|
||||
USimpleNameReferenceExpression (identifier = repeat, resolvesTo = null)
|
||||
ULiteralExpression (value = 4)
|
||||
ULiteralExpression (value = " z")
|
||||
UField (name = empty)
|
||||
UAnnotation (fqName = org.jetbrains.annotations.NotNull)
|
||||
UPolyadicExpression (operator = +)
|
||||
ULiteralExpression (value = "")
|
||||
UMethod (name = getMuchRecur)
|
||||
UMethod (name = getCase4)
|
||||
UMethod (name = getCase5)
|
||||
UMethod (name = getLiteralInLiteral)
|
||||
UMethod (name = getLiteralInLiteral2)
|
||||
UMethod (name = getEmpty)
|
||||
UMethod (name = simpleForTemplate)
|
||||
UParameter (name = i)
|
||||
UAnnotation (fqName = org.jetbrains.annotations.NotNull)
|
||||
|
||||
+2
@@ -4,11 +4,13 @@ public final class StringTemplateComplexForUInjectionHostKt {
|
||||
@org.jetbrains.annotations.NotNull private static final var case5: java.lang.String = "a " + "literal" + " " + "literal" + " z"
|
||||
@org.jetbrains.annotations.NotNull private static final var literalInLiteral: java.lang.String = "a " + "literal" + case4 + " z"
|
||||
@org.jetbrains.annotations.NotNull private static final var literalInLiteral2: java.lang.String = "a " + "literal" + case4.repeat(4) + " z"
|
||||
@org.jetbrains.annotations.NotNull private static final var empty: java.lang.String = ""
|
||||
public static final fun getMuchRecur() : java.lang.String = UastEmptyExpression
|
||||
public static final fun getCase4() : java.lang.String = UastEmptyExpression
|
||||
public static final fun getCase5() : java.lang.String = UastEmptyExpression
|
||||
public static final fun getLiteralInLiteral() : java.lang.String = UastEmptyExpression
|
||||
public static final fun getLiteralInLiteral2() : java.lang.String = UastEmptyExpression
|
||||
public static final fun getEmpty() : java.lang.String = UastEmptyExpression
|
||||
public static final fun simpleForTemplate(@org.jetbrains.annotations.NotNull i: int) : java.lang.String {
|
||||
return i
|
||||
}
|
||||
|
||||
@@ -36,5 +36,6 @@ UFile (package = )
|
||||
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1))
|
||||
UIdentifier (Identifier (UnsupportedOperationException))
|
||||
USimpleNameReferenceExpression (identifier = <init>, resolvesTo = UnsupportedOperationException)
|
||||
UPolyadicExpression (value = "")
|
||||
UPolyadicExpression (operator = +)
|
||||
ULiteralExpression (value = "")
|
||||
UMethod (name = )
|
||||
|
||||
@@ -36,5 +36,6 @@ UFile (package = )
|
||||
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1))
|
||||
UIdentifier (Identifier (UnsupportedOperationException))
|
||||
USimpleNameReferenceExpression (identifier = <init>, resolvesTo = UnsupportedOperationException)
|
||||
UPolyadicExpression (value = "")
|
||||
UPolyadicExpression (operator = +)
|
||||
ULiteralExpression (value = "")
|
||||
UMethod (name = Model$1$1)
|
||||
|
||||
@@ -36,5 +36,6 @@ UFile (package = ) [public abstract interface Callback {...]
|
||||
UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) [<init>("")] : PsiType:UnsupportedOperationException
|
||||
UIdentifier (Identifier (UnsupportedOperationException)) [UIdentifier (Identifier (UnsupportedOperationException))]
|
||||
USimpleNameReferenceExpression (identifier = <init>, resolvesTo = UnsupportedOperationException) [<init>] : PsiType:UnsupportedOperationException
|
||||
UPolyadicExpression (value = "") [""] : PsiType:String
|
||||
UPolyadicExpression (operator = +) [""] : PsiType:String
|
||||
ULiteralExpression (value = "") [""] : PsiType:String
|
||||
UMethod (name = Model$1$1) [fun Model$1$1() = UastEmptyExpression]
|
||||
|
||||
@@ -79,7 +79,7 @@ class KotlinUastResolveApiTest : KotlinLightCodeInsightFixtureTestCase() {
|
||||
"s.kt", """
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
System.out.print(""
|
||||
System.out.print("1"
|
||||
}
|
||||
"""
|
||||
)
|
||||
@@ -103,7 +103,7 @@ class KotlinUastResolveApiTest : KotlinLightCodeInsightFixtureTestCase() {
|
||||
|
||||
TestCase.assertEquals(PsiType.VOID, functionCall.getExpressionType())
|
||||
|
||||
val firstArgument = main.findElementByText<UElement>("\"\"")
|
||||
val firstArgument = main.findElementByText<UElement>("\"1\"")
|
||||
val firstParameter = functionCall.getArgumentForParameter(0)
|
||||
TestCase.assertEquals(firstArgument, firstParameter)
|
||||
}
|
||||
@@ -124,7 +124,7 @@ class KotlinUastResolveApiTest : KotlinLightCodeInsightFixtureTestCase() {
|
||||
"s.kt", """
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
JavaClass().setParameter(""
|
||||
JavaClass().setParameter("1"
|
||||
}
|
||||
"""
|
||||
)
|
||||
@@ -144,7 +144,7 @@ class KotlinUastResolveApiTest : KotlinLightCodeInsightFixtureTestCase() {
|
||||
|
||||
TestCase.assertEquals(PsiType.VOID, functionCall.getExpressionType())
|
||||
|
||||
val firstArgument = main.findElementByText<UElement>("\"\"")
|
||||
val firstArgument = main.findElementByText<UElement>("\"1\"")
|
||||
val firstParameter = functionCall.getArgumentForParameter(0)
|
||||
TestCase.assertEquals(firstArgument, firstParameter)
|
||||
}
|
||||
|
||||
@@ -18,4 +18,7 @@ class KotlinUastValuesTest : AbstractKotlinValuesTest() {
|
||||
|
||||
@Test
|
||||
fun testSimple() = doTest("Simple")
|
||||
|
||||
@Test
|
||||
fun testStringTemplateComplex() = doTest("StringTemplateComplex")
|
||||
}
|
||||
Reference in New Issue
Block a user