diff --git a/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/InstanceofExpressionPostfixTemplate.java b/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/InstanceofExpressionPostfixTemplate.java index 412ca232eb5e..aac8bf9bd27d 100644 --- a/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/InstanceofExpressionPostfixTemplate.java +++ b/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/InstanceofExpressionPostfixTemplate.java @@ -20,7 +20,7 @@ import org.jetbrains.annotations.NotNull; import java.util.LinkedHashSet; import java.util.Set; -@Aliases("inst") +@Aliases(".inst") public class InstanceofExpressionPostfixTemplate extends PostfixTemplate { public InstanceofExpressionPostfixTemplate() { super("instanceof", "Surrounds expression with instanceof", "expr instanceof SomeType ? ((SomeType) expr). : null"); diff --git a/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/NotExpressionPostfixTemplate.java b/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/NotExpressionPostfixTemplate.java index 85f3316014b0..14c723f1fca0 100644 --- a/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/NotExpressionPostfixTemplate.java +++ b/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/NotExpressionPostfixTemplate.java @@ -1,12 +1,14 @@ package com.intellij.codeInsight.template.postfix.templates; import com.intellij.codeInsight.CodeInsightServicesUtil; +import com.intellij.codeInsight.template.postfix.util.Aliases; import com.intellij.codeInsight.template.postfix.util.PostfixTemplatesUtils; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.util.Condition; import com.intellij.psi.PsiExpression; import org.jetbrains.annotations.NotNull; +@Aliases("!") public class NotExpressionPostfixTemplate extends ExpressionPostfixTemplateWithChooser { public NotExpressionPostfixTemplate() { super("not", "Negates boolean expression", "!expr"); diff --git a/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/NotNullCheckPostfixTemplate.java b/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/NotNullCheckPostfixTemplate.java index 46b62b0b363c..e4bde3241fee 100644 --- a/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/NotNullCheckPostfixTemplate.java +++ b/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/NotNullCheckPostfixTemplate.java @@ -3,7 +3,7 @@ package com.intellij.codeInsight.template.postfix.templates; import com.intellij.codeInsight.template.postfix.util.Aliases; import org.jetbrains.annotations.NotNull; -@Aliases("nn") +@Aliases(".nn") public class NotNullCheckPostfixTemplate extends NullCheckPostfixTemplate { public NotNullCheckPostfixTemplate() { super("notnull", "Checks expression to be not-null", "if (expr != null)"); diff --git a/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/PostfixLiveTemplate.java b/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/PostfixLiveTemplate.java index d44976c63b6f..bfc284c18fc4 100644 --- a/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/PostfixLiveTemplate.java +++ b/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/PostfixLiveTemplate.java @@ -42,7 +42,7 @@ public class PostfixLiveTemplate extends CustomLiveTemplateBase { Aliases aliases = template.getClass().getAnnotation(Aliases.class); if (aliases != null) { for (String key : aliases.value()) { - register("." + key, template); + register(key, template); } } } @@ -60,10 +60,7 @@ public class PostfixLiveTemplate extends CustomLiveTemplateBase { public String computeTemplateKey(@NotNull CustomTemplateCallback callback) { Editor editor = callback.getEditor(); String key = computeTemplateKeyWithoutContextChecking(editor); - - if (key == null) { - return null; - } + if (key == null) return null; return isApplicableTemplate(getTemplateByKey(key), key, callback.getContext().getContainingFile(), editor) ? key : null; } @@ -75,7 +72,7 @@ public class PostfixLiveTemplate extends CustomLiveTemplateBase { while (startOffset > 0) { char currentChar = documentContent.charAt(startOffset - 1); if (!Character.isJavaIdentifierPart(currentChar)) { - if (currentChar != '.') { + if (currentChar != '.' && currentChar != '!') { return null; } startOffset--; diff --git a/java/java-tests/testData/codeInsight/template/postfix/templates/not/exclamation.java b/java/java-tests/testData/codeInsight/template/postfix/templates/not/exclamation.java new file mode 100644 index 000000000000..170689867d02 --- /dev/null +++ b/java/java-tests/testData/codeInsight/template/postfix/templates/not/exclamation.java @@ -0,0 +1,5 @@ +public class Foo { + void m(boolean b) { + m(b!); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/template/postfix/templates/not/exclamation_after.java b/java/java-tests/testData/codeInsight/template/postfix/templates/not/exclamation_after.java new file mode 100644 index 000000000000..107fdd2a441c --- /dev/null +++ b/java/java-tests/testData/codeInsight/template/postfix/templates/not/exclamation_after.java @@ -0,0 +1,5 @@ +public class Foo { + void m(boolean b) { + m(!b); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/template/postfix/templates/NotExpressionPostfixTemplateTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/template/postfix/templates/NotExpressionPostfixTemplateTest.java index a75b92724010..f5397f3325bf 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/template/postfix/templates/NotExpressionPostfixTemplateTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/template/postfix/templates/NotExpressionPostfixTemplateTest.java @@ -13,5 +13,6 @@ public class NotExpressionPostfixTemplateTest extends PostfixTemplateTestCase { public void testSimple() { doTest(); } public void testComplexCondition() { doTest(); } public void testBoxedBoolean() { doTest(); } + public void testExclamation() { doTest(); } // public void testNegation() { doTest(); } // todo: test for chooser } \ No newline at end of file