diff --git a/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/ArgumentPostfixTemplate.java b/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/ArgumentPostfixTemplate.java
new file mode 100644
index 000000000000..c653ea4e526d
--- /dev/null
+++ b/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/ArgumentPostfixTemplate.java
@@ -0,0 +1,32 @@
+// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
+package com.intellij.codeInsight.template.postfix.templates;
+
+import com.intellij.codeInsight.template.Template;
+import com.intellij.codeInsight.template.postfix.templates.editable.JavaEditablePostfixTemplate;
+import com.intellij.codeInsight.template.postfix.templates.editable.JavaPostfixTemplateExpressionCondition;
+import com.intellij.pom.java.LanguageLevel;
+import com.intellij.psi.PsiElement;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.Collections;
+
+public class ArgumentPostfixTemplate extends JavaEditablePostfixTemplate {
+ public ArgumentPostfixTemplate(@NotNull JavaPostfixTemplateProvider provider) {
+ super("arg",
+ "$CALL$($EXPR$$END$)",
+ "functionCall(expr)",
+ Collections.singleton(new JavaPostfixTemplateExpressionCondition.JavaPostfixTemplateNonVoidExpressionCondition()),
+ LanguageLevel.JDK_1_3, false, provider);
+ }
+
+ @Override
+ public boolean isBuiltin() {
+ return true;
+ }
+
+ @Override
+ protected void addTemplateVariables(@NotNull PsiElement element, @NotNull Template template) {
+ super.addTemplateVariables(element, template);
+ template.addVariable("CALL", "", "", true);
+ }
+}
diff --git a/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/JavaPostfixTemplateProvider.java b/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/JavaPostfixTemplateProvider.java
index 38be8ba3d4dd..d439d9c5eb98 100644
--- a/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/JavaPostfixTemplateProvider.java
+++ b/java/java-impl/src/com/intellij/codeInsight/template/postfix/templates/JavaPostfixTemplateProvider.java
@@ -52,6 +52,7 @@ public class JavaPostfixTemplateProvider implements PostfixTemplateProvider {
new ThrowExceptionPostfixTemplate(this),
new FormatPostfixTemplate(this),
new ObjectsRequireNonNullPostfixTemplate(this),
+ new ArgumentPostfixTemplate(this),
new CastExpressionPostfixTemplate(),
new ElseStatementPostfixTemplate(),
@@ -137,6 +138,7 @@ public class JavaPostfixTemplateProvider implements PostfixTemplateProvider {
templateToEdit instanceof JavaEditablePostfixTemplate &&
// cannot be editable until there is no UI for editing template variables
!(templateToEdit instanceof ForIndexedPostfixTemplate) &&
+ !(templateToEdit instanceof ArgumentPostfixTemplate) &&
!(templateToEdit instanceof OptionalPostfixTemplate)) {
return new JavaPostfixTemplateEditor(this, templateToEdit);
}
diff --git a/java/java-impl/src/postfixTemplates/ArgumentPostfixTemplate/after.java.template b/java/java-impl/src/postfixTemplates/ArgumentPostfixTemplate/after.java.template
new file mode 100644
index 000000000000..2b5b768faeab
--- /dev/null
+++ b/java/java-impl/src/postfixTemplates/ArgumentPostfixTemplate/after.java.template
@@ -0,0 +1,5 @@
+public class Foo {
+ void m(Object o) {
+