You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by tm...@apache.org on 2020/07/03 11:10:31 UTC
[netbeans] branch master updated: [NETBEANS-4509] PHP - code
completion for function with return type
This is an automated email from the ASF dual-hosted git repository.
tmysik 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 e3700af [NETBEANS-4509] PHP - code completion for function with return type
new 3fd620b Merge pull request #2228 from KacerCZ/netbeans-4509-return-array-code-completion
e3700af is described below
commit e3700af98595a1d696ffa4ad0e92696feb008d4e
Author: Tomas Prochazka <ka...@razdva.cz>
AuthorDate: Thu Jul 2 23:48:46 2020 +0200
[NETBEANS-4509] PHP - code completion for function with return type
https://issues.apache.org/jira/browse/NETBEANS-4509
Fixed code completion of functions with return type "array" and specific
type in "@return" in DocBlock.
---
.../modules/php/editor/model/impl/VariousUtils.java | 12 ++++++++++--
.../unit/data/testfiles/completion/lib/arrays/arrays.php | 13 +++++++++++++
.../lib/arrays/arrays.php.testArrays_05.completion | 5 +++++
.../lib/arrays/arrays.php.testArrays_06.completion | 5 +++++
.../php/editor/completion/PHPArrayCodeCompletionTest.java | 8 ++++++++
5 files changed, 41 insertions(+), 2 deletions(-)
diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/VariousUtils.java b/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/VariousUtils.java
index b29a2ae..4cc8644 100644
--- a/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/VariousUtils.java
+++ b/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/VariousUtils.java
@@ -224,10 +224,18 @@ public final class VariousUtils {
if (returnType != null) {
QualifiedName name = QualifiedName.create(returnType);
assert name != null : returnType;
+ String typeName = name.toString();
+ if (Type.ARRAY.equals(typeName)) {
+ // For "array" type PHPDoc can contain more specific definition, i.e. MyClass[]
+ String typeFromPHPDoc = getReturnTypeFromPHPDoc(root, functionDeclaration);
+ if (typeFromPHPDoc != null) {
+ return typeFromPHPDoc;
+ }
+ }
if (returnType instanceof NullableType) {
- return CodeUtils.NULLABLE_TYPE_PREFIX + name.toString();
+ return CodeUtils.NULLABLE_TYPE_PREFIX + typeName;
}
- return name.toString();
+ return typeName;
}
return getReturnTypeFromPHPDoc(root, functionDeclaration);
}
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/arrays/arrays.php b/php/php.editor/test/unit/data/testfiles/completion/lib/arrays/arrays.php
index e52f521..676b68c 100644
--- a/php/php.editor/test/unit/data/testfiles/completion/lib/arrays/arrays.php
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/arrays/arrays.php
@@ -20,6 +20,14 @@ function arrayFunctionName() {
return array(new ArraysCc());
}
+/**
+ *
+ * @return ArraysCc[] foo
+ */
+function arrayFunctionTyped(): array {
+ return array(new ArraysCc());
+}
+
(new ArraysCc)->field[0]->field;
$a = array(new ArraysCc());
@@ -30,4 +38,9 @@ arrayFunctionName()[0]->field;
$b = arrayFunctionName();
$b[0]->field;
+arrayFunctionTyped()[0]->field;
+
+$c = arrayFunctionTyped();
+$c[0]->field;
+
?>
\ No newline at end of file
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/arrays/arrays.php.testArrays_05.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/arrays/arrays.php.testArrays_05.completion
new file mode 100644
index 0000000..0efacfc
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/arrays/arrays.php.testArrays_05.completion
@@ -0,0 +1,5 @@
+Code completion result for source line:
+arrayFunctionTyped()[0]->|field;
+(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true)
+METHOD method() [PUBLIC] ArraysCc
+VARIABLE ArraysCc[][int][string] field [PUBLIC] ArraysCc
diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/arrays/arrays.php.testArrays_06.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/arrays/arrays.php.testArrays_06.completion
new file mode 100644
index 0000000..f86f6f3
--- /dev/null
+++ b/php/php.editor/test/unit/data/testfiles/completion/lib/arrays/arrays.php.testArrays_06.completion
@@ -0,0 +1,5 @@
+Code completion result for source line:
+$c[0]->|field;
+(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true)
+METHOD method() [PUBLIC] ArraysCc
+VARIABLE ArraysCc[][int][string] field [PUBLIC] ArraysCc
diff --git a/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/completion/PHPArrayCodeCompletionTest.java b/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/completion/PHPArrayCodeCompletionTest.java
index f3b9493..f996661 100644
--- a/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/completion/PHPArrayCodeCompletionTest.java
+++ b/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/completion/PHPArrayCodeCompletionTest.java
@@ -53,6 +53,14 @@ public class PHPArrayCodeCompletionTest extends PHPCodeCompletionTestBase {
checkCompletion("testfiles/completion/lib/arrays/arrays.php", "$b[0]->^field;", false);
}
+ public void testArrays_05() throws Exception {
+ checkCompletion("testfiles/completion/lib/arrays/arrays.php", "arrayFunctionTyped()[0]->^field;", false);
+ }
+
+ public void testArrays_06() throws Exception {
+ checkCompletion("testfiles/completion/lib/arrays/arrays.php", "$c[0]->^field;", false);
+ }
+
@Override
protected Map<String, ClassPath> createClassPathsForTest() {
return Collections.singletonMap(
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists