Niklas Matthies created NETBEANS-3001:
-----------------------------------------

             Summary: Code completion for static imports doesn't handle varargs
                 Key: NETBEANS-3001
                 URL: https://issues.apache.org/jira/browse/NETBEANS-3001
             Project: NetBeans
          Issue Type: Bug
          Components: java - Editor
    Affects Versions: 11.1
            Reporter: Niklas Matthies


Example:

    {{import java.nio.file.Path;}}
    ...
        {{Path path = ...;}}
        {{if (isRegularFile(path)) ...}}
        {{if (exists(path, null)) ...}}

Observed behavior:
Alt+Return on {{exists}} offers static import of 
{{java.nio.file.Files.exists}}, but Alt+Return on {{isRegularFile}} does not 
offer static import of {{java.nio.file.Files.isRegularFile}}. This is 
apparently because {{isRegularFile}} (like {{exists}}) has a second parameter 
which is a vararg parameter.

Expected behavior:
Alt+Return on {{isRegularFile}} should offer static import of 
{{java.nio.file.Files.isRegularFile}}.

Further discussion:
I would actually go so far to suggest that offering of static import shouldn't 
require the number and type of arguments to match at all, for the following 
reasons:
* Most importantly: This would allow to have automatic argument fill-in applied 
after selecting the desired static method from the popup. Currently, to get 
automatic argument fill-in in combination with static imports one has only the 
choice between (a) checking "Prefer Static Imports" in Options > Editor > 
Formatting > Java > Imports and use Ctrl+Space, which has the serious downside 
that you can't choose dependent on context whether you want a static import or 
not (half of the time it's better for clarity to not use static import), or (b) 
using the three-step process of (i) using Ctrl+Space to get automatic argument 
fill-in on {{someMethod}} (and a regular import of {{SomeClass}}) without 
static import, then (ii) using Alt+Return to get the static import, and (iii) 
using Fix Imports to get rid of the non-static import of {{SomeClass}} 
introduced by step (i). It would be much more useful to always have the choice 
between (1) using step (i) if no static import is desired, and (2) using 
Alt+Return on {{someMethod}} and getting automatic argument fill-in as well as 
a static import for the selected method.
* Static imports don't distinguish between different overloads (you always get 
all overloads), so arguably it makes less sense to require the code to already 
match a specific overload.
* There isn't usually a large number of static methods with the same name, so 
listing them all (with all overloads) in the popup shouldn't generally be a 
problem.


 



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists

Reply via email to