UAST: correct processing of string literals in string literals (KT-20990)

This commit is contained in:
Nicolay Mitropolsky
2017-10-28 20:28:42 +03:00
committed by xiexed
parent 11f9c055fd
commit a11cf253df
4 changed files with 14 additions and 3 deletions
@@ -57,10 +57,10 @@ abstract class KotlinAbstractUElement(private val givenParent: UElement?) : UEle
parent = parent.parent parent = parent.parent
} }
if (parent is KtStringTemplateEntryWithExpression) { if (parent is KtStringTemplateExpression && parent.entries.size == 1) {
parent = parent.parent parent = parent.parent
} }
if ((parent is KtStringTemplateExpression && parent.entries.size == 1)) { if (parent is KtStringTemplateEntryWithExpression) {
parent = parent.parent parent = parent.parent
} }
if (parent is KtWhenConditionWithExpression) { if (parent is KtWhenConditionWithExpression) {
+2
View File
@@ -3,3 +3,5 @@ val bar = "ipsum"
val baz = "dolor" val baz = "dolor"
val foobarbaz = "$foo $bar $baz" val foobarbaz = "$foo $bar $baz"
val case4 = "a ${"literal"} z"
+7
View File
@@ -17,7 +17,14 @@ UFile (package = )
USimpleNameReferenceExpression (identifier = bar) USimpleNameReferenceExpression (identifier = bar)
ULiteralExpression (value = " ") ULiteralExpression (value = " ")
USimpleNameReferenceExpression (identifier = baz) USimpleNameReferenceExpression (identifier = baz)
UField (name = case4)
UAnnotation (fqName = org.jetbrains.annotations.NotNull)
UPolyadicExpression (operator = +)
ULiteralExpression (value = "a ")
ULiteralExpression (value = "literal")
ULiteralExpression (value = " z")
UAnnotationMethod (name = getFoo) UAnnotationMethod (name = getFoo)
UAnnotationMethod (name = getBar) UAnnotationMethod (name = getBar)
UAnnotationMethod (name = getBaz) UAnnotationMethod (name = getBaz)
UAnnotationMethod (name = getFoobarbaz) UAnnotationMethod (name = getFoobarbaz)
UAnnotationMethod (name = getCase4)
@@ -3,8 +3,10 @@ public final class StringTemplateKt {
private static final var bar: java.lang.String = "ipsum" private static final var bar: java.lang.String = "ipsum"
private static final var baz: java.lang.String = "dolor" private static final var baz: java.lang.String = "dolor"
private static final var foobarbaz: java.lang.String = foo + " " + bar + " " + baz private static final var foobarbaz: java.lang.String = foo + " " + bar + " " + baz
private static final var case4: java.lang.String = "a " + "literal" + " z"
public static final fun getFoo() : java.lang.String = UastEmptyExpression public static final fun getFoo() : java.lang.String = UastEmptyExpression
public static final fun getBar() : java.lang.String = UastEmptyExpression public static final fun getBar() : java.lang.String = UastEmptyExpression
public static final fun getBaz() : java.lang.String = UastEmptyExpression public static final fun getBaz() : java.lang.String = UastEmptyExpression
public static final fun getFoobarbaz() : java.lang.String = UastEmptyExpression public static final fun getFoobarbaz() : java.lang.String = UastEmptyExpression
public static final fun getCase4() : java.lang.String = UastEmptyExpression
} }