From bb32a6b11014a7f7958b2536d96342fdbae614a2 Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Wed, 4 Oct 2017 11:23:12 +0300 Subject: [PATCH] fix parameter popup for vararg methods (was empty for vararg params) --- .../hint/api/impls/MethodParameterInfoHandler.java | 8 ++++---- .../java/codeInsight/completion/CompletionHintsTest.java | 6 ++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/hint/api/impls/MethodParameterInfoHandler.java b/java/java-impl/src/com/intellij/codeInsight/hint/api/impls/MethodParameterInfoHandler.java index d2bbc9eebfd6..2eb9319bbe39 100644 --- a/java/java-impl/src/com/intellij/codeInsight/hint/api/impls/MethodParameterInfoHandler.java +++ b/java/java-impl/src/com/intellij/codeInsight/hint/api/impls/MethodParameterInfoHandler.java @@ -1,6 +1,4 @@ -// Copyright 2000-2017 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. +// Copyright 2000-2017 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.hint.api.impls; import com.intellij.codeInsight.AnnotationTargetUtil; @@ -563,13 +561,15 @@ public class MethodParameterInfoHandler implements ParameterInfoHandlerWithTabAc buffer.append("("); } - final int currentParameter = context.getCurrentParameterIndex(); + int currentParameter = context.getCurrentParameterIndex(); PsiParameter[] parms = method.getParameterList().getParameters(); int numParams = parms.length; int highlightStartOffset = -1; int highlightEndOffset = -1; if (numParams > 0) { + if (context.isSingleParameterInfo() && method.isVarArgs() && currentParameter >= numParams) currentParameter = numParams - 1; + for (int j = 0; j < numParams; j++) { if (context.isSingleParameterInfo() && j != currentParameter) continue; diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/CompletionHintsTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/CompletionHintsTest.java index 7bdaae2f67cc..244b429ae624 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/CompletionHintsTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/completion/CompletionHintsTest.java @@ -364,20 +364,26 @@ public class CompletionHintsTest extends LightFixtureCompletionTestCase { public void testVarargWithNoMandatoryArguments() throws Exception { configureJava("class C { int vararg(int... args){ return 0; } void m() { varar } }"); complete(); + waitForAllAsyncStuff(); checkResultWithInlays("class C { int vararg(int... args){ return 0; } void m() { vararg() } }"); + checkHintContents("int..."); type("1"); next(); waitForAllAsyncStuff(); checkResultWithInlays("class C { int vararg(int... args){ return 0; } void m() { vararg(1, ) } }"); + checkHintContents("int..."); next(); waitForAllAsyncStuff(); checkResultWithInlays("class C { int vararg(int... args){ return 0; } void m() { vararg(1) } }"); + checkHintContents(null); prev(); waitForAllAsyncStuff(); checkResultWithInlays("class C { int vararg(int... args){ return 0; } void m() { vararg(1, ) } }"); + checkHintContents("int..."); prev(); waitForAllAsyncStuff(); checkResultWithInlays("class C { int vararg(int... args){ return 0; } void m() { vararg(1) } }"); + checkHintContents("int..."); } public void testVarargWithTwoMandatoryArguments() throws Exception {