From 7d87af46625b33cea4964de3fc60cab4b8a04caa Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 13 Feb 2013 15:50:31 +0100 Subject: [PATCH] java strings are not statement live template context --- .../intellij/codeInsight/template/JavaCodeContextType.java | 2 +- .../codeInsight/template/JavaStringContextType.java | 7 +++++-- .../intellij/codeInsight/template/LiveTemplateTest.groovy | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/template/JavaCodeContextType.java b/java/java-impl/src/com/intellij/codeInsight/template/JavaCodeContextType.java index 94ebc55f537a..42e990f3aee0 100644 --- a/java/java-impl/src/com/intellij/codeInsight/template/JavaCodeContextType.java +++ b/java/java-impl/src/com/intellij/codeInsight/template/JavaCodeContextType.java @@ -95,7 +95,7 @@ public abstract class JavaCodeContextType extends TemplateContextType { } private static boolean isStatementContext(PsiElement element) { - if (isAfterExpression(element)) { + if (isAfterExpression(element) || JavaStringContextType.isStringLiteral(element)) { return false; } diff --git a/java/java-impl/src/com/intellij/codeInsight/template/JavaStringContextType.java b/java/java-impl/src/com/intellij/codeInsight/template/JavaStringContextType.java index bbd52e8c0584..01831be70d5f 100644 --- a/java/java-impl/src/com/intellij/codeInsight/template/JavaStringContextType.java +++ b/java/java-impl/src/com/intellij/codeInsight/template/JavaStringContextType.java @@ -34,9 +34,12 @@ public class JavaStringContextType extends TemplateContextType { @Override public boolean isInContext(@NotNull final PsiFile file, final int offset) { if (PsiUtilBase.getLanguageAtOffset(file, offset).isKindOf(StdLanguages.JAVA)) { - PsiElement element = file.findElementAt(offset); - return element instanceof PsiJavaToken && ((PsiJavaToken) element).getTokenType() == JavaTokenType.STRING_LITERAL; + return isStringLiteral(file.findElementAt(offset)); } return false; } + + static boolean isStringLiteral(PsiElement element) { + return element instanceof PsiJavaToken && ((PsiJavaToken) element).getTokenType() == JavaTokenType.STRING_LITERAL; + } } diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/template/LiveTemplateTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/template/LiveTemplateTest.groovy index d739f69d91c8..9f5dd2820cdf 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/template/LiveTemplateTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/template/LiveTemplateTest.groovy @@ -323,6 +323,7 @@ class Foo { assertTrue(isApplicable("class Foo {{ inst\n a=b; }}", template)); assertFalse(isApplicable("class Foo {{ return (inst) }}", template)); assertFalse(isApplicable("class Foo {{ return a inst) }}", template)); + assertFalse(isApplicable("class Foo {{ \"\" }}", template)); assertTrue(isApplicable("class Foo {{ a.b(); ) }}", template)); assertTrue(isApplicable("class Foo {{ a(); ) }}", template)); }