From f8fe88154ca960e31482d674b9d89ec010297afa Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 1 Nov 2012 13:57:17 +0100 Subject: [PATCH] create parameter be name and type in context: now also for java --- .../src/com/intellij/psi/JVMElementFactory.java | 1 + .../src/com/intellij/psi/impl/PsiElementFactoryImpl.java | 7 +++++++ .../groovy/lang/psi/impl/GroovyPsiElementFactoryImpl.java | 6 ++++++ .../lang/psi/impl/synthetic/ClosureSyntheticParameter.java | 2 +- 4 files changed, 15 insertions(+), 1 deletion(-) diff --git a/java/java-psi-api/src/com/intellij/psi/JVMElementFactory.java b/java/java-psi-api/src/com/intellij/psi/JVMElementFactory.java index 020fe81f9666..3691b97029b9 100644 --- a/java/java-psi-api/src/com/intellij/psi/JVMElementFactory.java +++ b/java/java-psi-api/src/com/intellij/psi/JVMElementFactory.java @@ -111,6 +111,7 @@ public interface JVMElementFactory { */ @NotNull PsiParameter createParameter(@NotNull @NonNls String name, PsiType type) throws IncorrectOperationException; + PsiParameter createParameter(@NotNull @NonNls String name, PsiType type, PsiElement context) throws IncorrectOperationException; /** * Creates a parameter list from the specified parameter names and types. diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/PsiElementFactoryImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/PsiElementFactoryImpl.java index 6d829eb2bf65..d4fc65863f64 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/PsiElementFactoryImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/PsiElementFactoryImpl.java @@ -282,6 +282,13 @@ public class PsiElementFactoryImpl extends PsiJavaParserFacadeImpl implements Ps return (PsiParameter)codeStyleManager.reformat(parameter); } + @Override + public PsiParameter createParameter(@NotNull @NonNls String name, PsiType type, PsiElement context) throws IncorrectOperationException { + final PsiMethod psiMethod = createMethodFromText("void f(" + type.getCanonicalText() + " " + name + ") {}", context); + final PsiParameter[] parameters = psiMethod.getParameterList().getParameters(); + return parameters[0]; + } + @NotNull @Override public PsiCodeBlock createCodeBlock() { diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/GroovyPsiElementFactoryImpl.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/GroovyPsiElementFactoryImpl.java index 2271338f4765..fbdf45fb449e 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/GroovyPsiElementFactoryImpl.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/GroovyPsiElementFactoryImpl.java @@ -978,6 +978,12 @@ public class GroovyPsiElementFactoryImpl extends GroovyPsiElementFactory { return createParameter(name, type == null ? null : type.getCanonicalText(), null, null); } + @NotNull + @Override + public GrParameter createParameter(@NotNull @NonNls String name, @Nullable PsiType type, PsiElement context) throws IncorrectOperationException { + return createParameter(name, type == null ? null : type.getCanonicalText(), null, context instanceof GroovyPsiElement ? (GroovyPsiElement)context : null); + } + @NotNull @Override public PsiParameterList createParameterList(@NotNull @NonNls String[] names, @NotNull PsiType[] types) throws IncorrectOperationException { diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/ClosureSyntheticParameter.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/ClosureSyntheticParameter.java index 04f2ee9b0912..416c71e9b6aa 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/ClosureSyntheticParameter.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/ClosureSyntheticParameter.java @@ -44,7 +44,7 @@ public class ClosureSyntheticParameter extends GrLightParameter implements Navig public PsiElement setName(@NotNull String newName) throws IncorrectOperationException { if (!newName.equals(getName())) { - GrParameter parameter = GroovyPsiElementFactory.getInstance(getProject()).createParameter(newName, null, null); + GrParameter parameter = GroovyPsiElementFactory.getInstance(getProject()).createParameter(newName, (String)null, null); myClosure.addParameter(parameter); } return this;