This is an automated email from the ASF dual-hosted git repository. junichi11 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push: new 24ba6df45f Fix the named argument code completion for constructors new d81235cc25 Merge pull request #6911 from junichi11/php-named-argument-cc-for-constructor 24ba6df45f is described below commit 24ba6df45f395f1cbec9459526befa6f48345de9 Author: Junichi Yamamoto <junich...@apache.org> AuthorDate: Wed Jan 3 16:33:13 2024 +0900 Fix the named argument code completion for constructors - Show argument names in consturctors - Don't add `:` if an existing name has `:` (an improvement) e.g. ^maxLength: (^: caret) We are unsure whether a user expects to add or override an item in this context. So, just add a name. (i.e. don't add ":") This behavior is useful when the consuming completion(<kbd>Ctrl</kbd> + <kbd>Enter</kbd>) is used. - Add unit tests --- .../editor/completion/CompletionContextFinder.java | 4 +- .../php/editor/completion/PHPCodeCompletion.java | 79 ++++++++++++------ .../php/editor/completion/PHPCompletionItem.java | 37 ++++++++- .../namedArgumentsConstructor01.php | 25 ++++++ ....php.testNamedArgumentsConstructor01.completion | 92 +++++++++++++++++++++ .../namedArgumentsConstructor02.php | 26 ++++++ ...hp.testNamedArgumentsConstructor02_a.completion | 6 ++ ...hp.testNamedArgumentsConstructor02_b.completion | 92 +++++++++++++++++++++ .../namedArgumentsConstructor03.php | 25 ++++++ ....php.testNamedArgumentsConstructor03.completion | 92 +++++++++++++++++++++ .../namedArgumentsConstructor04.php | 25 ++++++ ....php.testNamedArgumentsConstructor04.completion | 6 ++ .../namedArgumentsConstructor05.php | 26 ++++++ ...edArgumentsConstructor05_Template01.cccustomtpl | 2 + ...edArgumentsConstructor05_Template02.cccustomtpl | 2 + ...hp.testNamedArgumentsConstructor05_a.completion | 92 +++++++++++++++++++++ ...hp.testNamedArgumentsConstructor05_b.completion | 92 +++++++++++++++++++++ ...hp.testNamedArgumentsConstructor05_c.completion | 6 ++ .../namedArgumentsConstructor06.php | 33 ++++++++ ....php.testNamedArgumentsConstructor06.completion | 96 ++++++++++++++++++++++ .../editor/completion/PHP80CodeCompletionTest.java | 46 +++++++++++ .../completion/PHPCodeCompletionTestBase.java | 13 +++ 22 files changed, 888 insertions(+), 29 deletions(-) diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/completion/CompletionContextFinder.java b/php/php.editor/src/org/netbeans/modules/php/editor/completion/CompletionContextFinder.java index 8babca1a2d..81c2724532 100644 --- a/php/php.editor/src/org/netbeans/modules/php/editor/completion/CompletionContextFinder.java +++ b/php/php.editor/src/org/netbeans/modules/php/editor/completion/CompletionContextFinder.java @@ -235,7 +235,7 @@ final class CompletionContextFinder { HTML, CLASS_NAME, INTERFACE_NAME, BACKING_TYPE, TYPE_NAME, RETURN_TYPE_NAME, RETURN_UNION_OR_INTERSECTION_TYPE_NAME, FIELD_TYPE_NAME, CONST_TYPE_NAME, VISIBILITY_MODIFIER_OR_TYPE_NAME, STRING, CLASS_MEMBER, STATIC_CLASS_MEMBER, PHPDOC, INHERITANCE, EXTENDS, IMPLEMENTS, METHOD_NAME, - CLASS_MEMBER_PARAMETER_NAME, STATIC_CLASS_MEMBER_PARAMETER_NAME, FUNCTION_PARAMETER_NAME, + CLASS_MEMBER_PARAMETER_NAME, STATIC_CLASS_MEMBER_PARAMETER_NAME, FUNCTION_PARAMETER_NAME, CONSTRUCTOR_PARAMETER_NAME, CLASS_CONTEXT_KEYWORDS, SERVER_ENTRY_CONSTANTS, NONE, NEW_CLASS, GLOBAL, NAMESPACE_KEYWORD, GROUP_USE_KEYWORD, GROUP_USE_CONST_KEYWORD, GROUP_USE_FUNCTION_KEYWORD, USE_KEYWORD, USE_CONST_KEYWORD, USE_FUNCTION_KEYWORD, DEFAULT_PARAMETER_VALUE, OPEN_TAG, THROW, THROW_NEW, CATCH, CLASS_MEMBER_IN_STRING, @@ -1608,6 +1608,8 @@ final class CompletionContextFinder { retval = CompletionContext.CLASS_MEMBER_PARAMETER_NAME; } else if (acceptTokenChains(ts, STATIC_CLASS_MEMBER_TOKENCHAINS, true)) { retval = CompletionContext.STATIC_CLASS_MEMBER_PARAMETER_NAME; + } else if (acceptTokenChains(ts, CLASS_NAME_TOKENCHAINS, true)) { + retval = CompletionContext.CONSTRUCTOR_PARAMETER_NAME; } else { retval = CompletionContext.FUNCTION_PARAMETER_NAME; } diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/completion/PHPCodeCompletion.java b/php/php.editor/src/org/netbeans/modules/php/editor/completion/PHPCodeCompletion.java index cc1039a784..4df5313c8a 100644 --- a/php/php.editor/src/org/netbeans/modules/php/editor/completion/PHPCodeCompletion.java +++ b/php/php.editor/src/org/netbeans/modules/php/editor/completion/PHPCodeCompletion.java @@ -57,6 +57,7 @@ import org.netbeans.modules.csl.spi.support.CancelSupport; import org.netbeans.modules.parsing.spi.indexing.support.QuerySupport; import org.netbeans.modules.parsing.spi.indexing.support.QuerySupport.Kind; import org.netbeans.modules.php.api.PhpVersion; +import org.netbeans.modules.php.api.util.StringUtils; import org.netbeans.modules.php.editor.CodeUtils; import org.netbeans.modules.php.editor.NavUtils; import org.netbeans.modules.php.editor.PredefinedSymbols; @@ -432,6 +433,10 @@ public class PHPCodeCompletion implements CodeCompletionHandler2 { case EXPRESSION: autoCompleteExpression(completionResult, request); break; + case CONSTRUCTOR_PARAMETER_NAME: + autoCompleteExpression(completionResult, request); + autoCompleteConstructorParameterName(completionResult, request); + break; case CLASS_MEMBER_PARAMETER_NAME: autoCompleteExpression(completionResult, request); autoCompleteClassMethodParameterName(completionResult, request, false); @@ -1604,6 +1609,32 @@ public class PHPCodeCompletion implements CodeCompletionHandler2 { } } + private void autoCompleteConstructorParameterName(final PHPCompletionResult completionResult, final PHPCompletionItem.CompletionRequest request) { + if (CancelSupport.getDefault().isCancelled()) { + return; + } + TokenHierarchy<?> th = request.info.getSnapshot().getTokenHierarchy(); + TokenSequence<PHPTokenId> tokenSequence = LexUtilities.getPHPTokenSequence(th, request.anchor); + if (tokenSequence == null) { + return; + } + Token<? extends PHPTokenId> constructorTypeName = CompletionContextFinder.findFunctionInvocationName(tokenSequence, request.anchor); + if (constructorTypeName != null) { + Model model = request.result.getModel(); + NamespaceScope namespaceScope = ModelUtils.getNamespaceScope(model.getFileScope(), request.anchor); + String fqTypeName = VariousUtils.qualifyTypeNames(constructorTypeName.text().toString(), request.anchor, namespaceScope); + Set<AliasedName> aliasedNames = ModelUtils.getAliasedNames(model, request.anchor); + Set<MethodElement> constructors = request.index.getConstructors(NameKind.exact(fqTypeName), aliasedNames, Trait.ALIAS); + Set<String> duplicateCheck = new HashSet<>(); + for (MethodElement constructor : constructors) { + if (CancelSupport.getDefault().isCancelled()) { + return; + } + addParameterNameItems(completionResult, request, constructor.getParameters(), duplicateCheck); + } + } + } + private void autoCompleteClassMethodParameterName( final PHPCompletionResult completionResult, PHPCompletionItem.CompletionRequest request, @@ -1685,6 +1716,7 @@ public class PHPCodeCompletion implements CodeCompletionHandler2 { accessibleTypeMembers.addAll(request.index.getAccessibleMixinTypeMembers(typeScope, enclosingType)); } } + Set<String> duplicateCheck = new HashSet<>(); for (final PhpElement phpElement : accessibleTypeMembers) { if (CancelSupport.getDefault().isCancelled()) { return; @@ -1692,19 +1724,7 @@ public class PHPCodeCompletion implements CodeCompletionHandler2 { if (duplicateElementCheck.add(phpElement)) { if (methodsFilter.isAccepted(phpElement)) { MethodElement method = (MethodElement) phpElement; - for (ParameterElement parameter : method.getParameters()) { - if (CancelSupport.getDefault().isCancelled()) { - return; - } - String name = parameter.getName(); - if (name != null) { - name = name.substring(1); - } - if (name != null - && name.startsWith(request.prefix)) { - completionResult.add(new PHPCompletionItem.ParameterNameItem(parameter, request)); - } - } + addParameterNameItems(completionResult, request, method.getParameters(), duplicateCheck); } } } @@ -1739,25 +1759,30 @@ public class PHPCodeCompletion implements CodeCompletionHandler2 { if (functionElement.isAnonymous()) { continue; } - for (ParameterElement parameter : functionElement.getParameters()) { - if (CancelSupport.getDefault().isCancelled()) { - return; - } - String name = parameter.getName(); - if (name != null) { - name = name.substring(1); - } - if (name != null - && name.startsWith(request.prefix) - && duplicateCheck.add(name)) { - completionResult.add(new PHPCompletionItem.ParameterNameItem(parameter, request)); - } - } + addParameterNameItems(completionResult, request, functionElement.getParameters(), duplicateCheck); } } } } + private void addParameterNameItems(final PHPCompletionResult completionResult, final PHPCompletionItem.CompletionRequest request, + List<ParameterElement> parameters, Set<String> duplicateCheck) { + for (ParameterElement parameter : parameters) { + if (CancelSupport.getDefault().isCancelled()) { + return; + } + String name = parameter.getName(); + if (!StringUtils.isEmpty(name)) { + name = name.substring(1); + } + if (!StringUtils.isEmpty(name) + && name.startsWith(request.prefix) + && duplicateCheck.add(name)) { + completionResult.add(new PHPCompletionItem.ParameterNameItem(parameter, request)); + } + } + } + private void autoCompleteClassConstants(final PHPCompletionResult completionResult, final PHPCompletionItem.CompletionRequest request) { // NETBANS-1855 // complete access prefix i.e. add "self::" to the top of constant names diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/completion/PHPCompletionItem.java b/php/php.editor/src/org/netbeans/modules/php/editor/completion/PHPCompletionItem.java index 48eec495b1..89c5bd2737 100644 --- a/php/php.editor/src/org/netbeans/modules/php/editor/completion/PHPCompletionItem.java +++ b/php/php.editor/src/org/netbeans/modules/php/editor/completion/PHPCompletionItem.java @@ -408,6 +408,31 @@ public abstract class PHPCompletionItem implements CompletionProposal { return null; } + public static boolean insertOnlyParameterName(CompletionRequest request) { + boolean result = false; + TokenHierarchy<?> tokenHierarchy = request.result.getSnapshot().getTokenHierarchy(); + TokenSequence<PHPTokenId> tokenSequence = (TokenSequence<PHPTokenId>) tokenHierarchy.tokenSequence(); + if (tokenSequence != null) { + tokenSequence.move(request.anchor); + // na^me: -> only parameter name + // n^ age: -> add also ":" + while (tokenSequence.moveNext()) { + Token<PHPTokenId> token = tokenSequence.token(); + PHPTokenId id = token.id(); + if (id == PHPTokenId.PHP_STRING) { + continue; + } + if (id == PHPTokenId.PHP_TOKEN + && TokenUtilities.textEquals(token.text(), ":")) { // NOI18N + result = true; + break; + } + break; + } + } + return result; + } + public static boolean insertOnlyMethodsName(CompletionRequest request) { if (request.insertOnlyMethodsName != null) { return request.insertOnlyMethodsName; @@ -2048,7 +2073,11 @@ public abstract class PHPCompletionItem implements CompletionProposal { @Override public String getName() { - return parameterElement.getName().substring(1) + ":"; // NOI18N + return getParameterName() + ":"; // NOI18N + } + + private String getParameterName() { + return parameterElement.getName().substring(1); } @Override @@ -2091,6 +2120,12 @@ public abstract class PHPCompletionItem implements CompletionProposal { @Override public String getCustomInsertTemplate() { + if (insertOnlyParameterName(request)) { + // ^maxLength: (^: caret) + // we are unsure whether a user expects to add or override an item in this context + // so, just add a name (i.e. don't add ":") + return getParameterName(); + } return getName() + " "; // NOI18N } } diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor01/namedArgumentsConstructor01.php b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor01/namedArgumentsConstructor01.php new file mode 100644 index 0000000000..c560e0cb5e --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor01/namedArgumentsConstructor01.php @@ -0,0 +1,25 @@ +<?php +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +class NamedArguments { + public function __construct(int $param1, int|array|null $array, $default = "default") { + } +} + +$instance = new NamedArguments(); diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor01/namedArgumentsConstructor01.php.testNamedArgumentsConstructor01.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor01/namedArgumentsConstructor01.php.testNamedArgumentsConstructor01.completion new file mode 100644 index 0000000000..278fd6b214 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor01/namedArgumentsConstructor01.php.testNamedArgumentsConstructor01.completion @@ -0,0 +1,92 @@ +Code completion result for source line: +$instance = new NamedArguments(|); +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +CLASS NamedArguments [PUBLIC] namedArgumentsConstructor01.php +VARIABLE NamedArguments $instance [PUBLIC] namedArgumentsConstructor01.php +PARAMETER array: Parameter Name +PARAMETER default: Parameter Name +PARAMETER param1: Parameter Name +------------------------------------ +VARIABLE $GLOBALS PHP Platform +VARIABLE $HTTP_RAW_POST_DATA PHP Platform +VARIABLE $_COOKIE PHP Platform +VARIABLE $_ENV PHP Platform +VARIABLE $_FILES PHP Platform +VARIABLE $_GET PHP Platform +VARIABLE $_POST PHP Platform +VARIABLE $_REQUEST PHP Platform +VARIABLE $_SERVER PHP Platform +VARIABLE $_SESSION PHP Platform +VARIABLE $argc PHP Platform +VARIABLE $argv PHP Platform +VARIABLE $http_response_header PHP Platform +VARIABLE $php_errormsg PHP Platform +KEYWORD abstract null +KEYWORD and null +KEYWORD array null +KEYWORD as null +KEYWORD break null +KEYWORD case null +KEYWORD catch null +KEYWORD class null +KEYWORD clone null +KEYWORD const null +KEYWORD continue null +KEYWORD declare null +KEYWORD default null +KEYWORD die() Language Construct +KEYWORD do null +KEYWORD echo ''; Language Construct +KEYWORD else null +KEYWORD elseif null +KEYWORD empty() Language Construct +KEYWORD enddeclare null +KEYWORD endfor null +KEYWORD endforeach null +KEYWORD endif null +KEYWORD endswitch null +KEYWORD endwhile null +KEYWORD enum null +KEYWORD eval() Language Construct +KEYWORD exit() Language Construct +KEYWORD extends null +KEYWORD final null +KEYWORD finally null +KEYWORD fn null +KEYWORD for null +KEYWORD foreach null +KEYWORD function null +KEYWORD global null +KEYWORD goto null +KEYWORD if null +KEYWORD implements null +KEYWORD include ''; Language Construct +KEYWORD include_once ''; Language Construct +KEYWORD instanceof null +KEYWORD interface null +KEYWORD isset() Language Construct +KEYWORD list() Language Construct +KEYWORD match null +KEYWORD namespace null +KEYWORD new null +KEYWORD or null +KEYWORD print ''; Language Construct +KEYWORD private null +KEYWORD protected null +KEYWORD public null +KEYWORD readonly null +KEYWORD require ''; Language Construct +KEYWORD require_once ''; Language Construct +KEYWORD return ; Language Construct +KEYWORD static null +KEYWORD switch null +KEYWORD throw null +KEYWORD trait null +KEYWORD try null +KEYWORD unset() Language Construct +KEYWORD use null +KEYWORD var null +KEYWORD while null +KEYWORD xor null +KEYWORD yield null +KEYWORD yield from null diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor02/namedArgumentsConstructor02.php b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor02/namedArgumentsConstructor02.php new file mode 100644 index 0000000000..1934835bd6 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor02/namedArgumentsConstructor02.php @@ -0,0 +1,26 @@ +<?php +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +class NamedArguments { + public function __construct(int $param1, int|array|null $array, $default = "default") { + } +} + +$instance = new NamedArguments(arr); +$instance = new NamedArguments() diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor02/namedArgumentsConstructor02.php.testNamedArgumentsConstructor02_a.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor02/namedArgumentsConstructor02.php.testNamedArgumentsConstructor02_a.completion new file mode 100644 index 0000000000..b541a3919c --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor02/namedArgumentsConstructor02.php.testNamedArgumentsConstructor02_a.completion @@ -0,0 +1,6 @@ +Code completion result for source line: +$instance = new NamedArguments(arr|); +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +PARAMETER array: Parameter Name +------------------------------------ +KEYWORD array null diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor02/namedArgumentsConstructor02.php.testNamedArgumentsConstructor02_b.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor02/namedArgumentsConstructor02.php.testNamedArgumentsConstructor02_b.completion new file mode 100644 index 0000000000..e0c23761e7 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor02/namedArgumentsConstructor02.php.testNamedArgumentsConstructor02_b.completion @@ -0,0 +1,92 @@ +Code completion result for source line: +$instance = new NamedArguments(|) +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +CLASS NamedArguments [PUBLIC] namedArgumentsConstructor02.php +VARIABLE NamedArguments $instance [PUBLIC] namedArgumentsConstructor02.php +PARAMETER array: Parameter Name +PARAMETER default: Parameter Name +PARAMETER param1: Parameter Name +------------------------------------ +VARIABLE $GLOBALS PHP Platform +VARIABLE $HTTP_RAW_POST_DATA PHP Platform +VARIABLE $_COOKIE PHP Platform +VARIABLE $_ENV PHP Platform +VARIABLE $_FILES PHP Platform +VARIABLE $_GET PHP Platform +VARIABLE $_POST PHP Platform +VARIABLE $_REQUEST PHP Platform +VARIABLE $_SERVER PHP Platform +VARIABLE $_SESSION PHP Platform +VARIABLE $argc PHP Platform +VARIABLE $argv PHP Platform +VARIABLE $http_response_header PHP Platform +VARIABLE $php_errormsg PHP Platform +KEYWORD abstract null +KEYWORD and null +KEYWORD array null +KEYWORD as null +KEYWORD break null +KEYWORD case null +KEYWORD catch null +KEYWORD class null +KEYWORD clone null +KEYWORD const null +KEYWORD continue null +KEYWORD declare null +KEYWORD default null +KEYWORD die() Language Construct +KEYWORD do null +KEYWORD echo ''; Language Construct +KEYWORD else null +KEYWORD elseif null +KEYWORD empty() Language Construct +KEYWORD enddeclare null +KEYWORD endfor null +KEYWORD endforeach null +KEYWORD endif null +KEYWORD endswitch null +KEYWORD endwhile null +KEYWORD enum null +KEYWORD eval() Language Construct +KEYWORD exit() Language Construct +KEYWORD extends null +KEYWORD final null +KEYWORD finally null +KEYWORD fn null +KEYWORD for null +KEYWORD foreach null +KEYWORD function null +KEYWORD global null +KEYWORD goto null +KEYWORD if null +KEYWORD implements null +KEYWORD include ''; Language Construct +KEYWORD include_once ''; Language Construct +KEYWORD instanceof null +KEYWORD interface null +KEYWORD isset() Language Construct +KEYWORD list() Language Construct +KEYWORD match null +KEYWORD namespace null +KEYWORD new null +KEYWORD or null +KEYWORD print ''; Language Construct +KEYWORD private null +KEYWORD protected null +KEYWORD public null +KEYWORD readonly null +KEYWORD require ''; Language Construct +KEYWORD require_once ''; Language Construct +KEYWORD return ; Language Construct +KEYWORD static null +KEYWORD switch null +KEYWORD throw null +KEYWORD trait null +KEYWORD try null +KEYWORD unset() Language Construct +KEYWORD use null +KEYWORD var null +KEYWORD while null +KEYWORD xor null +KEYWORD yield null +KEYWORD yield from null diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor03/namedArgumentsConstructor03.php b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor03/namedArgumentsConstructor03.php new file mode 100644 index 0000000000..4e8fa0c991 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor03/namedArgumentsConstructor03.php @@ -0,0 +1,25 @@ +<?php +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +class NamedArguments { + public function __construct(int $param1, int|array|null $array, $default = "default") { + } +} + +$instance = new NamedArguments(1, ); diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor03/namedArgumentsConstructor03.php.testNamedArgumentsConstructor03.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor03/namedArgumentsConstructor03.php.testNamedArgumentsConstructor03.completion new file mode 100644 index 0000000000..5fdd60d3d7 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor03/namedArgumentsConstructor03.php.testNamedArgumentsConstructor03.completion @@ -0,0 +1,92 @@ +Code completion result for source line: +$instance = new NamedArguments(1, |); +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +CLASS NamedArguments [PUBLIC] namedArgumentsConstructor03.php +VARIABLE NamedArguments $instance [PUBLIC] namedArgumentsConstructor03.php +PARAMETER array: Parameter Name +PARAMETER default: Parameter Name +PARAMETER param1: Parameter Name +------------------------------------ +VARIABLE $GLOBALS PHP Platform +VARIABLE $HTTP_RAW_POST_DATA PHP Platform +VARIABLE $_COOKIE PHP Platform +VARIABLE $_ENV PHP Platform +VARIABLE $_FILES PHP Platform +VARIABLE $_GET PHP Platform +VARIABLE $_POST PHP Platform +VARIABLE $_REQUEST PHP Platform +VARIABLE $_SERVER PHP Platform +VARIABLE $_SESSION PHP Platform +VARIABLE $argc PHP Platform +VARIABLE $argv PHP Platform +VARIABLE $http_response_header PHP Platform +VARIABLE $php_errormsg PHP Platform +KEYWORD abstract null +KEYWORD and null +KEYWORD array null +KEYWORD as null +KEYWORD break null +KEYWORD case null +KEYWORD catch null +KEYWORD class null +KEYWORD clone null +KEYWORD const null +KEYWORD continue null +KEYWORD declare null +KEYWORD default null +KEYWORD die() Language Construct +KEYWORD do null +KEYWORD echo ''; Language Construct +KEYWORD else null +KEYWORD elseif null +KEYWORD empty() Language Construct +KEYWORD enddeclare null +KEYWORD endfor null +KEYWORD endforeach null +KEYWORD endif null +KEYWORD endswitch null +KEYWORD endwhile null +KEYWORD enum null +KEYWORD eval() Language Construct +KEYWORD exit() Language Construct +KEYWORD extends null +KEYWORD final null +KEYWORD finally null +KEYWORD fn null +KEYWORD for null +KEYWORD foreach null +KEYWORD function null +KEYWORD global null +KEYWORD goto null +KEYWORD if null +KEYWORD implements null +KEYWORD include ''; Language Construct +KEYWORD include_once ''; Language Construct +KEYWORD instanceof null +KEYWORD interface null +KEYWORD isset() Language Construct +KEYWORD list() Language Construct +KEYWORD match null +KEYWORD namespace null +KEYWORD new null +KEYWORD or null +KEYWORD print ''; Language Construct +KEYWORD private null +KEYWORD protected null +KEYWORD public null +KEYWORD readonly null +KEYWORD require ''; Language Construct +KEYWORD require_once ''; Language Construct +KEYWORD return ; Language Construct +KEYWORD static null +KEYWORD switch null +KEYWORD throw null +KEYWORD trait null +KEYWORD try null +KEYWORD unset() Language Construct +KEYWORD use null +KEYWORD var null +KEYWORD while null +KEYWORD xor null +KEYWORD yield null +KEYWORD yield from null diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor04/namedArgumentsConstructor04.php b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor04/namedArgumentsConstructor04.php new file mode 100644 index 0000000000..2d3128f220 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor04/namedArgumentsConstructor04.php @@ -0,0 +1,25 @@ +<?php +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +class NamedArguments { + public function __construct(int $param1, int|array|null $array, $default = "default") { + } +} + +$instance = new NamedArguments(1, defa); diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor04/namedArgumentsConstructor04.php.testNamedArgumentsConstructor04.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor04/namedArgumentsConstructor04.php.testNamedArgumentsConstructor04.completion new file mode 100644 index 0000000000..166c8e9cf5 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor04/namedArgumentsConstructor04.php.testNamedArgumentsConstructor04.completion @@ -0,0 +1,6 @@ +Code completion result for source line: +$instance = new NamedArguments(1, defa|); +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +PARAMETER default: Parameter Name +------------------------------------ +KEYWORD default null diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor05/namedArgumentsConstructor05.php b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor05/namedArgumentsConstructor05.php new file mode 100644 index 0000000000..a703afa960 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor05/namedArgumentsConstructor05.php @@ -0,0 +1,26 @@ +<?php +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +class NamedArguments { + public function __construct(int $param1, int|array|null $array, $default = "default") { + } +} + +$instance = new NamedArguments(param1: 1, default: "test"); +$instance = new NamedArguments(param1: 1, arrdefault: "test"); diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor05/namedArgumentsConstructor05.php.testNamedArgumentsConstructor05_Template01.cccustomtpl b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor05/namedArgumentsConstructor05.php.testNamedArgumentsConstructor05_Template01.cccustomtpl new file mode 100644 index 0000000000..a3c8bf98d7 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor05/namedArgumentsConstructor05.php.testNamedArgumentsConstructor05_Template01.cccustomtpl @@ -0,0 +1,2 @@ +Name: array: +array diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor05/namedArgumentsConstructor05.php.testNamedArgumentsConstructor05_Template02.cccustomtpl b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor05/namedArgumentsConstructor05.php.testNamedArgumentsConstructor05_Template02.cccustomtpl new file mode 100644 index 0000000000..c097b8da38 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor05/namedArgumentsConstructor05.php.testNamedArgumentsConstructor05_Template02.cccustomtpl @@ -0,0 +1,2 @@ +Name: array: +array: diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor05/namedArgumentsConstructor05.php.testNamedArgumentsConstructor05_a.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor05/namedArgumentsConstructor05.php.testNamedArgumentsConstructor05_a.completion new file mode 100644 index 0000000000..592ed924b1 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor05/namedArgumentsConstructor05.php.testNamedArgumentsConstructor05_a.completion @@ -0,0 +1,92 @@ +Code completion result for source line: +$instance = new NamedArguments(param1: 1,| default: "test"); +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +CLASS NamedArguments [PUBLIC] namedArgumentsConstructor05.php +VARIABLE NamedArguments $instance [PUBLIC] namedArgumentsConstructor05.php +PARAMETER array: Parameter Name +PARAMETER default: Parameter Name +PARAMETER param1: Parameter Name +------------------------------------ +VARIABLE $GLOBALS PHP Platform +VARIABLE $HTTP_RAW_POST_DATA PHP Platform +VARIABLE $_COOKIE PHP Platform +VARIABLE $_ENV PHP Platform +VARIABLE $_FILES PHP Platform +VARIABLE $_GET PHP Platform +VARIABLE $_POST PHP Platform +VARIABLE $_REQUEST PHP Platform +VARIABLE $_SERVER PHP Platform +VARIABLE $_SESSION PHP Platform +VARIABLE $argc PHP Platform +VARIABLE $argv PHP Platform +VARIABLE $http_response_header PHP Platform +VARIABLE $php_errormsg PHP Platform +KEYWORD abstract null +KEYWORD and null +KEYWORD array null +KEYWORD as null +KEYWORD break null +KEYWORD case null +KEYWORD catch null +KEYWORD class null +KEYWORD clone null +KEYWORD const null +KEYWORD continue null +KEYWORD declare null +KEYWORD default null +KEYWORD die() Language Construct +KEYWORD do null +KEYWORD echo ''; Language Construct +KEYWORD else null +KEYWORD elseif null +KEYWORD empty() Language Construct +KEYWORD enddeclare null +KEYWORD endfor null +KEYWORD endforeach null +KEYWORD endif null +KEYWORD endswitch null +KEYWORD endwhile null +KEYWORD enum null +KEYWORD eval() Language Construct +KEYWORD exit() Language Construct +KEYWORD extends null +KEYWORD final null +KEYWORD finally null +KEYWORD fn null +KEYWORD for null +KEYWORD foreach null +KEYWORD function null +KEYWORD global null +KEYWORD goto null +KEYWORD if null +KEYWORD implements null +KEYWORD include ''; Language Construct +KEYWORD include_once ''; Language Construct +KEYWORD instanceof null +KEYWORD interface null +KEYWORD isset() Language Construct +KEYWORD list() Language Construct +KEYWORD match null +KEYWORD namespace null +KEYWORD new null +KEYWORD or null +KEYWORD print ''; Language Construct +KEYWORD private null +KEYWORD protected null +KEYWORD public null +KEYWORD readonly null +KEYWORD require ''; Language Construct +KEYWORD require_once ''; Language Construct +KEYWORD return ; Language Construct +KEYWORD static null +KEYWORD switch null +KEYWORD throw null +KEYWORD trait null +KEYWORD try null +KEYWORD unset() Language Construct +KEYWORD use null +KEYWORD var null +KEYWORD while null +KEYWORD xor null +KEYWORD yield null +KEYWORD yield from null diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor05/namedArgumentsConstructor05.php.testNamedArgumentsConstructor05_b.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor05/namedArgumentsConstructor05.php.testNamedArgumentsConstructor05_b.completion new file mode 100644 index 0000000000..bc2dc9805c --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor05/namedArgumentsConstructor05.php.testNamedArgumentsConstructor05_b.completion @@ -0,0 +1,92 @@ +Code completion result for source line: +$instance = new NamedArguments(param1: 1, |default: "test"); +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +CLASS NamedArguments [PUBLIC] namedArgumentsConstructor05.php +VARIABLE NamedArguments $instance [PUBLIC] namedArgumentsConstructor05.php +PARAMETER array: Parameter Name +PARAMETER default: Parameter Name +PARAMETER param1: Parameter Name +------------------------------------ +VARIABLE $GLOBALS PHP Platform +VARIABLE $HTTP_RAW_POST_DATA PHP Platform +VARIABLE $_COOKIE PHP Platform +VARIABLE $_ENV PHP Platform +VARIABLE $_FILES PHP Platform +VARIABLE $_GET PHP Platform +VARIABLE $_POST PHP Platform +VARIABLE $_REQUEST PHP Platform +VARIABLE $_SERVER PHP Platform +VARIABLE $_SESSION PHP Platform +VARIABLE $argc PHP Platform +VARIABLE $argv PHP Platform +VARIABLE $http_response_header PHP Platform +VARIABLE $php_errormsg PHP Platform +KEYWORD abstract null +KEYWORD and null +KEYWORD array null +KEYWORD as null +KEYWORD break null +KEYWORD case null +KEYWORD catch null +KEYWORD class null +KEYWORD clone null +KEYWORD const null +KEYWORD continue null +KEYWORD declare null +KEYWORD default null +KEYWORD die() Language Construct +KEYWORD do null +KEYWORD echo ''; Language Construct +KEYWORD else null +KEYWORD elseif null +KEYWORD empty() Language Construct +KEYWORD enddeclare null +KEYWORD endfor null +KEYWORD endforeach null +KEYWORD endif null +KEYWORD endswitch null +KEYWORD endwhile null +KEYWORD enum null +KEYWORD eval() Language Construct +KEYWORD exit() Language Construct +KEYWORD extends null +KEYWORD final null +KEYWORD finally null +KEYWORD fn null +KEYWORD for null +KEYWORD foreach null +KEYWORD function null +KEYWORD global null +KEYWORD goto null +KEYWORD if null +KEYWORD implements null +KEYWORD include ''; Language Construct +KEYWORD include_once ''; Language Construct +KEYWORD instanceof null +KEYWORD interface null +KEYWORD isset() Language Construct +KEYWORD list() Language Construct +KEYWORD match null +KEYWORD namespace null +KEYWORD new null +KEYWORD or null +KEYWORD print ''; Language Construct +KEYWORD private null +KEYWORD protected null +KEYWORD public null +KEYWORD readonly null +KEYWORD require ''; Language Construct +KEYWORD require_once ''; Language Construct +KEYWORD return ; Language Construct +KEYWORD static null +KEYWORD switch null +KEYWORD throw null +KEYWORD trait null +KEYWORD try null +KEYWORD unset() Language Construct +KEYWORD use null +KEYWORD var null +KEYWORD while null +KEYWORD xor null +KEYWORD yield null +KEYWORD yield from null diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor05/namedArgumentsConstructor05.php.testNamedArgumentsConstructor05_c.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor05/namedArgumentsConstructor05.php.testNamedArgumentsConstructor05_c.completion new file mode 100644 index 0000000000..181826df37 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor05/namedArgumentsConstructor05.php.testNamedArgumentsConstructor05_c.completion @@ -0,0 +1,6 @@ +Code completion result for source line: +$instance = new NamedArguments(param1: 1, arr|default: "test"); +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +PARAMETER array: Parameter Name +------------------------------------ +KEYWORD array null diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor06/namedArgumentsConstructor06.php b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor06/namedArgumentsConstructor06.php new file mode 100644 index 0000000000..5a05bfecac --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor06/namedArgumentsConstructor06.php @@ -0,0 +1,33 @@ +<?php +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +namespace Test1; + +class NamedArguments { + public function __construct(int $param1, int|array|null $array, $default = "default") { + } +} + +namespace Test2; + +use Test1\NamedArguments; + +$test = "test"; +$int = 1; +$instance = new NamedArguments(); diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor06/namedArgumentsConstructor06.php.testNamedArgumentsConstructor06.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor06/namedArgumentsConstructor06.php.testNamedArgumentsConstructor06.completion new file mode 100644 index 0000000000..d17c01ae6d --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php80/testNamedArgumentsConstructor06/namedArgumentsConstructor06.php.testNamedArgumentsConstructor06.completion @@ -0,0 +1,96 @@ +Code completion result for source line: +$instance = new NamedArguments(|); +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +PACKAGE Test1 [PUBLIC] null +PACKAGE Test2 [PUBLIC] null +CLASS NamedArguments [PUBLIC] Test1 +VARIABLE \Test1\NamedArguments $instanc [PUBLIC] namedArgumentsConstructor06.php +VARIABLE int $int [PUBLIC] namedArgumentsConstructor06.php +VARIABLE string $test [PUBLIC] namedArgumentsConstructor06.php +PARAMETER array: Parameter Name +PARAMETER default: Parameter Name +PARAMETER param1: Parameter Name +------------------------------------ +VARIABLE $GLOBALS PHP Platform +VARIABLE $HTTP_RAW_POST_DATA PHP Platform +VARIABLE $_COOKIE PHP Platform +VARIABLE $_ENV PHP Platform +VARIABLE $_FILES PHP Platform +VARIABLE $_GET PHP Platform +VARIABLE $_POST PHP Platform +VARIABLE $_REQUEST PHP Platform +VARIABLE $_SERVER PHP Platform +VARIABLE $_SESSION PHP Platform +VARIABLE $argc PHP Platform +VARIABLE $argv PHP Platform +VARIABLE $http_response_header PHP Platform +VARIABLE $php_errormsg PHP Platform +KEYWORD abstract null +KEYWORD and null +KEYWORD array null +KEYWORD as null +KEYWORD break null +KEYWORD case null +KEYWORD catch null +KEYWORD class null +KEYWORD clone null +KEYWORD const null +KEYWORD continue null +KEYWORD declare null +KEYWORD default null +KEYWORD die() Language Construct +KEYWORD do null +KEYWORD echo ''; Language Construct +KEYWORD else null +KEYWORD elseif null +KEYWORD empty() Language Construct +KEYWORD enddeclare null +KEYWORD endfor null +KEYWORD endforeach null +KEYWORD endif null +KEYWORD endswitch null +KEYWORD endwhile null +KEYWORD enum null +KEYWORD eval() Language Construct +KEYWORD exit() Language Construct +KEYWORD extends null +KEYWORD final null +KEYWORD finally null +KEYWORD fn null +KEYWORD for null +KEYWORD foreach null +KEYWORD function null +KEYWORD global null +KEYWORD goto null +KEYWORD if null +KEYWORD implements null +KEYWORD include ''; Language Construct +KEYWORD include_once ''; Language Construct +KEYWORD instanceof null +KEYWORD interface null +KEYWORD isset() Language Construct +KEYWORD list() Language Construct +KEYWORD match null +KEYWORD namespace null +KEYWORD new null +KEYWORD or null +KEYWORD print ''; Language Construct +KEYWORD private null +KEYWORD protected null +KEYWORD public null +KEYWORD readonly null +KEYWORD require ''; Language Construct +KEYWORD require_once ''; Language Construct +KEYWORD return ; Language Construct +KEYWORD static null +KEYWORD switch null +KEYWORD throw null +KEYWORD trait null +KEYWORD try null +KEYWORD unset() Language Construct +KEYWORD use null +KEYWORD var null +KEYWORD while null +KEYWORD xor null +KEYWORD yield null +KEYWORD yield from null diff --git a/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/completion/PHP80CodeCompletionTest.java b/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/completion/PHP80CodeCompletionTest.java index 35a4afe83f..8622a5046b 100644 --- a/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/completion/PHP80CodeCompletionTest.java +++ b/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/completion/PHP80CodeCompletionTest.java @@ -1137,6 +1137,52 @@ public class PHP80CodeCompletionTest extends PHPCodeCompletionTestBase { checkCompletion(getTestPath("namedArgumentsStaticMethod06"), "self::test(^)", false); } + public void testNamedArgumentsConstructor01() throws Exception { + checkCompletion(getTestPath("namedArgumentsConstructor01"), "$instance = new NamedArguments(^);", false); + } + + public void testNamedArgumentsConstructor02_a() throws Exception { + checkCompletion(getTestPath("namedArgumentsConstructor02"), "$instance = new NamedArguments(arr^);", false); + } + + public void testNamedArgumentsConstructor02_b() throws Exception { + checkCompletion(getTestPath("namedArgumentsConstructor02"), "$instance = new NamedArguments(^)", false); + } + + public void testNamedArgumentsConstructor03() throws Exception { + checkCompletion(getTestPath("namedArgumentsConstructor03"), "$instance = new NamedArguments(1, ^);", false); + } + + public void testNamedArgumentsConstructor04() throws Exception { + checkCompletion(getTestPath("namedArgumentsConstructor04"), "$instance = new NamedArguments(1, defa^);", false); + } + + public void testNamedArgumentsConstructor05_a() throws Exception { + checkCompletion(getTestPath("namedArgumentsConstructor05"), "$instance = new NamedArguments(param1: 1,^ default: \"test\");", false); + } + + public void testNamedArgumentsConstructor05_b() throws Exception { + checkCompletion(getTestPath("namedArgumentsConstructor05"), "$instance = new NamedArguments(param1: 1, ^default: \"test\");", false); + } + + public void testNamedArgumentsConstructor05_c() throws Exception { + checkCompletion(getTestPath("namedArgumentsConstructor05"), "$instance = new NamedArguments(param1: 1, arr^default: \"test\");", false); + } + + public void testNamedArgumentsConstructor05_Template01() throws Exception { + checkCompletionCustomTemplateResult(getTestPath("namedArgumentsConstructor05"), "$instance = new NamedArguments(param1: 1, arr^default: \"test\");", + new DefaultFilter("array"), true); + } + + public void testNamedArgumentsConstructor05_Template02() throws Exception { + checkCompletionCustomTemplateResult(getTestPath("namedArgumentsConstructor05"), "$instance = new NamedArguments(param1: 1,^ default: \"test\");", + new DefaultFilter("array"), true); + } + + public void testNamedArgumentsConstructor06() throws Exception { + checkCompletion(getTestPath("namedArgumentsConstructor06"), "$instance = new NamedArguments(^);", false); + } + public void testStaticReturnTypeOverrideMethod01() throws Exception { checkCompletionCustomTemplateResult(getTestPath("testStaticReturnTypeOverrideMethod01"), " test^", new DefaultFilter(PhpVersion.PHP_80, "test"), true); diff --git a/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/completion/PHPCodeCompletionTestBase.java b/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/completion/PHPCodeCompletionTestBase.java index ad87a3cdbc..5d8256ccca 100644 --- a/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/completion/PHPCodeCompletionTestBase.java +++ b/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/completion/PHPCodeCompletionTestBase.java @@ -213,6 +213,11 @@ public abstract class PHPCodeCompletionTestBase extends PHPTestBase { this.prefix = prefix; } + public DefaultFilter(String prefix) { + this.phpVersion = PhpVersion.getDefault(); + this.prefix = prefix; + } + @Override public boolean accept(CompletionProposal proposal) { if (proposal instanceof PHPCompletionItem.MethodDeclarationItem) { @@ -223,6 +228,14 @@ public abstract class PHPCodeCompletionTestBase extends PHPTestBase { return true; } } + if (proposal instanceof PHPCompletionItem.KeywordItem) { + // ignore KeywordItem because it invokes EditorRegistry.lastFocusedComponent().getDocument() (NPE) + return false; + } + if (proposal != null) { + String name = proposal.getName(); + return name.startsWith(prefix); + } return false; } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org For additional commands, e-mail: commits-h...@netbeans.apache.org For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists