From a794d26493b44f2ad0536f1866f523f96ab149bc Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Tue, 23 Oct 2018 01:17:01 +0300 Subject: [PATCH] Get stubbed expressions in value arguments (KT-23738) --- .../psi/KtLiteralStringTemplateEntry.java | 10 +++++++++ .../jetbrains/kotlin/psi/KtValueArgument.java | 21 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/compiler/psi/src/org/jetbrains/kotlin/psi/KtLiteralStringTemplateEntry.java b/compiler/psi/src/org/jetbrains/kotlin/psi/KtLiteralStringTemplateEntry.java index 4c2e09f3f19..97dae4da1ad 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/psi/KtLiteralStringTemplateEntry.java +++ b/compiler/psi/src/org/jetbrains/kotlin/psi/KtLiteralStringTemplateEntry.java @@ -34,4 +34,14 @@ public class KtLiteralStringTemplateEntry extends KtStringTemplateEntry { public R accept(@NotNull KtVisitor visitor, D data) { return visitor.visitLiteralStringTemplateEntry(this, data); } + + @Override + public String getText() { + KotlinPlaceHolderWithTextStub stub = getStub(); + if (stub != null) { + return stub.text(); + } + + return super.getText(); + } } diff --git a/compiler/psi/src/org/jetbrains/kotlin/psi/KtValueArgument.java b/compiler/psi/src/org/jetbrains/kotlin/psi/KtValueArgument.java index bfb392f2bcb..472584b9a13 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/psi/KtValueArgument.java +++ b/compiler/psi/src/org/jetbrains/kotlin/psi/KtValueArgument.java @@ -19,6 +19,7 @@ package org.jetbrains.kotlin.psi; import com.intellij.lang.ASTNode; import com.intellij.psi.PsiElement; import com.intellij.psi.impl.source.tree.LeafPsiElement; +import com.intellij.psi.tree.TokenSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.KtNodeTypes; @@ -45,9 +46,29 @@ public class KtValueArgument extends KtElementImplStub stub = getStub(); + if (stub != null) { + KtExpression[] constantExpressions = stub.getChildrenByType(CONSTANT_EXPRESSIONS_TYPES, KtExpression.EMPTY_ARRAY); + if (constantExpressions.length != 0) { + return constantExpressions[0]; + } + } + return findChildByClass(KtExpression.class); }