From 12542833fff048ac842722042d35af7e45ae3ee5 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Tue, 15 Nov 2016 17:50:43 +0100 Subject: [PATCH] change signature: refresh type element after normalizeDeclaration for old style arrays --- .../changeSignature/JavaChangeSignatureUsageProcessor.java | 5 +++-- .../changeSignature/ReplaceOldStyleArrayWithVarargs.java | 3 +++ .../ReplaceOldStyleArrayWithVarargs_after.java | 3 +++ .../com/intellij/refactoring/ChangeSignatureTest.java | 6 +++++- 4 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 java/java-tests/testData/refactoring/changeSignature/ReplaceOldStyleArrayWithVarargs.java create mode 100644 java/java-tests/testData/refactoring/changeSignature/ReplaceOldStyleArrayWithVarargs_after.java diff --git a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java index 1d8804395404..8a7d6304ffbb 100644 --- a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java @@ -827,11 +827,12 @@ public class JavaChangeSignatureUsageProcessor implements ChangeSignatureUsagePr parameter.getNameIdentifier().replace(newIdentifier); } - final PsiTypeElement typeElement = parameter.getTypeElement(); + PsiTypeElement typeElement = parameter.getTypeElement(); if (typeElement != null) { + parameter.normalizeDeclaration(); + typeElement = parameter.getTypeElement(); String oldType = oldParameterTypes[index]; if (!oldType.equals(info.getTypeText())) { - parameter.normalizeDeclaration(); PsiType newType = substitutor.substitute(info.createType(changeInfo.getMethod().getParameterList(), changeInfo.getMethod().getManager())); typeElement.replace(factory.createTypeElement(newType)); diff --git a/java/java-tests/testData/refactoring/changeSignature/ReplaceOldStyleArrayWithVarargs.java b/java/java-tests/testData/refactoring/changeSignature/ReplaceOldStyleArrayWithVarargs.java new file mode 100644 index 000000000000..a647a9861e27 --- /dev/null +++ b/java/java-tests/testData/refactoring/changeSignature/ReplaceOldStyleArrayWithVarargs.java @@ -0,0 +1,3 @@ +class Test { + void foo(int a[]) {} +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/changeSignature/ReplaceOldStyleArrayWithVarargs_after.java b/java/java-tests/testData/refactoring/changeSignature/ReplaceOldStyleArrayWithVarargs_after.java new file mode 100644 index 000000000000..dfb7f5a10a3d --- /dev/null +++ b/java/java-tests/testData/refactoring/changeSignature/ReplaceOldStyleArrayWithVarargs_after.java @@ -0,0 +1,3 @@ +class Test { + void foo(int... a) {} +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTest.java b/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTest.java index c3e690487d91..15dd066297a2 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -355,6 +355,10 @@ public class ChangeSignatureTest extends ChangeSignatureBaseTest { }, false); } + public void testReplaceOldStyleArrayWithVarargs() throws Exception { + doTest(null, new ParameterInfoImpl[] {new ParameterInfoImpl(0, "a", new PsiEllipsisType(PsiType.INT))}, false); + } + public void testReorderParamsOfFunctionalInterface() { doTest(null, null, null, method -> new ParameterInfoImpl[]{ new ParameterInfoImpl(1, "b", PsiType.INT),