[java-typing] Fix test and } handling in string templates (IDEA-333179)

GitOrigin-RevId: 318d7215f7aa80ec0bf7f2c4f3a2228856e23a1e
This commit is contained in:
Tagir Valeev
2023-10-04 15:37:51 +02:00
committed by intellij-monorepo-bot
parent 2ee3ec3072
commit 169a5849ac
3 changed files with 24 additions and 8 deletions

View File

@@ -17,6 +17,7 @@ import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.CodeStyleManager;
import com.intellij.psi.impl.source.BasicJavaAstTreeUtil;
import com.intellij.psi.impl.source.BasicJavaElementType;
import com.intellij.psi.tree.ParentAwareTokenSet;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.util.text.CharArrayUtil;
@@ -117,7 +118,7 @@ public abstract class AbstractBasicJavaTypedHandler extends TypedHandlerDelegate
HighlighterIterator iterator = editor.getHighlighter().createIterator(offset-1);
CharSequence sequence = editor.getDocument().getCharsSequence();
if (!iterator.atEnd() && iterator.getTokenType() == StringEscapesTokenTypes.VALID_STRING_ESCAPE_TOKEN &&
if (!iterator.atEnd() && iterator.getTokenType() == JavaTokenType.STRING_TEMPLATE_BEGIN &&
iterator.getEnd() == offset && sequence.subSequence(iterator.getStart(), iterator.getEnd()).toString().equals("\\{")) {
if (sequence.length() > offset && sequence.charAt(offset) == '}') {
editor.getCaretModel().moveToOffset(offset + 1);