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 3f73d67  [NETBEANS-3108] PHP: Some features(e.g. Go to declaration) do 
not work after "new"
     new 5a97c54  Merge pull request #1516 from 
junichi11/netbeans-3108-gotodeclaration-after-new
3f73d67 is described below

commit 3f73d6746bd326ea1e6c93e75484940c013067a8
Author: Junichi Yamamoto <junich...@apache.org>
AuthorDate: Wed Sep 18 22:20:15 2019 +0900

    [NETBEANS-3108] PHP: Some features(e.g. Go to declaration) do not work 
after "new"
---
 .../php/editor/model/impl/ModelVisitor.java        |  4 +-
 .../gotodeclaration/testNb3108/testNb3108.php      | 37 ++++++++++++++
 .../markoccurences/testNb3108/testNb3108.php       | 37 ++++++++++++++
 .../testNb3108.php.testNb3108_01a.occurrences      |  2 +
 .../testNb3108.php.testNb3108_01b.occurrences      |  2 +
 .../testNb3108.php.testNb3108_02a.occurrences      |  2 +
 .../testNb3108.php.testNb3108_02b.occurrences      |  2 +
 .../testNb3108.php.testNb3108_03a.occurrences      |  3 ++
 .../testNb3108.php.testNb3108_03b.occurrences      |  3 ++
 .../testNb3108.php.testNb3108_03c.occurrences      |  2 +
 .../php/editor/csl/GotoDeclarationNb3108Test.java  | 43 +++++++++++++++++
 .../csl/OccurrencesFinderImplNb3108Test.java       | 56 ++++++++++++++++++++++
 12 files changed, 192 insertions(+), 1 deletion(-)

diff --git 
a/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/ModelVisitor.java
 
b/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/ModelVisitor.java
index c9e38ae..ae278d4 100644
--- 
a/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/ModelVisitor.java
+++ 
b/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/ModelVisitor.java
@@ -575,7 +575,9 @@ public final class ModelVisitor extends 
DefaultTreePathVisitor {
             }
         } else {
             Expression name = node.getClassName().getName();
-            if (name instanceof Variable) {
+            if (name instanceof Variable
+                    || name instanceof StaticFieldAccess // NETBEANS-3108 e.g. 
new self::staticProperty[self::getIndex()];
+                    || name instanceof FieldAccess) { // NETBEANS-3108 e.g. 
new $this->property[$this->getIndex()];
                 scan(name);
             } else {
                 ScopeImpl currentScope = modelBuilder.getCurrentScope();
diff --git 
a/php/php.editor/test/unit/data/testfiles/gotodeclaration/testNb3108/testNb3108.php
 
b/php/php.editor/test/unit/data/testfiles/gotodeclaration/testNb3108/testNb3108.php
new file mode 100644
index 0000000..2e3be7f
--- /dev/null
+++ 
b/php/php.editor/test/unit/data/testfiles/gotodeclaration/testNb3108/testNb3108.php
@@ -0,0 +1,37 @@
+<?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 Class3108 {
+
+    private $property = [
+        Class3108::class,
+    ];
+    private static $staticProperty = [
+        Class3108::class,
+    ];
+
+    private static function getIndex() {
+        return 0;
+    }
+
+    public static function test() {
+        $instance1 = new self::$staticProperty[self::getIndex()];
+        $instance2 = new $this->property[$this->getIndex()];
+    }
+}
diff --git 
a/php/php.editor/test/unit/data/testfiles/markoccurences/testNb3108/testNb3108.php
 
b/php/php.editor/test/unit/data/testfiles/markoccurences/testNb3108/testNb3108.php
new file mode 100644
index 0000000..2e3be7f
--- /dev/null
+++ 
b/php/php.editor/test/unit/data/testfiles/markoccurences/testNb3108/testNb3108.php
@@ -0,0 +1,37 @@
+<?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 Class3108 {
+
+    private $property = [
+        Class3108::class,
+    ];
+    private static $staticProperty = [
+        Class3108::class,
+    ];
+
+    private static function getIndex() {
+        return 0;
+    }
+
+    public static function test() {
+        $instance1 = new self::$staticProperty[self::getIndex()];
+        $instance2 = new $this->property[$this->getIndex()];
+    }
+}
diff --git 
a/php/php.editor/test/unit/data/testfiles/testNb3108.php.testNb3108_01a.occurrences
 
b/php/php.editor/test/unit/data/testfiles/testNb3108.php.testNb3108_01a.occurrences
new file mode 100644
index 0000000..eefcb80
--- /dev/null
+++ 
b/php/php.editor/test/unit/data/testfiles/testNb3108.php.testNb3108_01a.occurrences
@@ -0,0 +1,2 @@
+    private $|>MARK_OCCURRENCES:pro^perty<| = [
+        $instance2 = new 
$this->|>MARK_OCCURRENCES:property<|[$this->getIndex()];
diff --git 
a/php/php.editor/test/unit/data/testfiles/testNb3108.php.testNb3108_01b.occurrences
 
b/php/php.editor/test/unit/data/testfiles/testNb3108.php.testNb3108_01b.occurrences
new file mode 100644
index 0000000..591ea3c
--- /dev/null
+++ 
b/php/php.editor/test/unit/data/testfiles/testNb3108.php.testNb3108_01b.occurrences
@@ -0,0 +1,2 @@
+    private $|>MARK_OCCURRENCES:property<| = [
+        $instance2 = new 
$this->|>MARK_OCCURRENCES:pr^operty<|[$this->getIndex()];
diff --git 
a/php/php.editor/test/unit/data/testfiles/testNb3108.php.testNb3108_02a.occurrences
 
b/php/php.editor/test/unit/data/testfiles/testNb3108.php.testNb3108_02a.occurrences
new file mode 100644
index 0000000..54ba4dd
--- /dev/null
+++ 
b/php/php.editor/test/unit/data/testfiles/testNb3108.php.testNb3108_02a.occurrences
@@ -0,0 +1,2 @@
+    private static $^|>MARK_OCCURRENCES:staticProperty<| = [
+        $instance1 = new 
self::$|>MARK_OCCURRENCES:staticProperty<|[self::getIndex()];
diff --git 
a/php/php.editor/test/unit/data/testfiles/testNb3108.php.testNb3108_02b.occurrences
 
b/php/php.editor/test/unit/data/testfiles/testNb3108.php.testNb3108_02b.occurrences
new file mode 100644
index 0000000..466e2a1
--- /dev/null
+++ 
b/php/php.editor/test/unit/data/testfiles/testNb3108.php.testNb3108_02b.occurrences
@@ -0,0 +1,2 @@
+    private static $|>MARK_OCCURRENCES:staticProperty<| = [
+        $instance1 = new 
self::$|>MARK_OCCURRENCES:stati^cProperty<|[self::getIndex()];
diff --git 
a/php/php.editor/test/unit/data/testfiles/testNb3108.php.testNb3108_03a.occurrences
 
b/php/php.editor/test/unit/data/testfiles/testNb3108.php.testNb3108_03a.occurrences
new file mode 100644
index 0000000..035f2cf
--- /dev/null
+++ 
b/php/php.editor/test/unit/data/testfiles/testNb3108.php.testNb3108_03a.occurrences
@@ -0,0 +1,3 @@
+    private static function |>MARK_OCCURRENCES:ge^tIndex<|() {
+        $instance1 = new 
self::$staticProperty[self::|>MARK_OCCURRENCES:getIndex<|()];
+        $instance2 = new 
$this->property[$this->|>MARK_OCCURRENCES:getIndex<|()];
diff --git 
a/php/php.editor/test/unit/data/testfiles/testNb3108.php.testNb3108_03b.occurrences
 
b/php/php.editor/test/unit/data/testfiles/testNb3108.php.testNb3108_03b.occurrences
new file mode 100644
index 0000000..0f8211f
--- /dev/null
+++ 
b/php/php.editor/test/unit/data/testfiles/testNb3108.php.testNb3108_03b.occurrences
@@ -0,0 +1,3 @@
+    private static function |>MARK_OCCURRENCES:getIndex<|() {
+        $instance1 = new 
self::$staticProperty[self::|>MARK_OCCURRENCES:get^Index<|()];
+        $instance2 = new 
$this->property[$this->|>MARK_OCCURRENCES:getIndex<|()];
diff --git 
a/php/php.editor/test/unit/data/testfiles/testNb3108.php.testNb3108_03c.occurrences
 
b/php/php.editor/test/unit/data/testfiles/testNb3108.php.testNb3108_03c.occurrences
new file mode 100644
index 0000000..9d3a227
--- /dev/null
+++ 
b/php/php.editor/test/unit/data/testfiles/testNb3108.php.testNb3108_03c.occurrences
@@ -0,0 +1,2 @@
+    private static function |>MARK_OCCURRENCES:getIndex<|() {
+        $instance2 = new 
$this->property[$this->|>MARK_OCCURRENCES:getI^ndex<|()];
diff --git 
a/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/csl/GotoDeclarationNb3108Test.java
 
b/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/csl/GotoDeclarationNb3108Test.java
new file mode 100644
index 0000000..eedd97d
--- /dev/null
+++ 
b/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/csl/GotoDeclarationNb3108Test.java
@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+package org.netbeans.modules.php.editor.csl;
+
+
+public class GotoDeclarationNb3108Test extends GotoDeclarationTestBase {
+
+    public GotoDeclarationNb3108Test(String testName) {
+        super(testName);
+    }
+
+    public void testNb3108_01() throws Exception {
+        checkDeclaration(getTestPath(), "        $instance1 = new 
self::$static^Property[self::getIndex()];", "    private static 
$^staticProperty = [");
+    }
+
+    public void testNb3108_02() throws Exception {
+        checkDeclaration(getTestPath(), "        $instance2 = new 
$this->pr^operty[$this->getIndex()];", "    private $^property = [");
+    }
+
+    public void testNb3108_03a() throws Exception {
+        checkDeclaration(getTestPath(), "        $instance1 = new 
self::$staticProperty[self::getIn^dex()];", "    private static function 
^getIndex() {");
+    }
+
+    public void testNb3108_03b() throws Exception {
+        checkDeclaration(getTestPath(), "        $instance2 = new 
$this->property[$this->g^etIndex()];", "    private static function ^getIndex() 
{");
+    }
+}
diff --git 
a/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/csl/OccurrencesFinderImplNb3108Test.java
 
b/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/csl/OccurrencesFinderImplNb3108Test.java
new file mode 100644
index 0000000..fc95573
--- /dev/null
+++ 
b/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/csl/OccurrencesFinderImplNb3108Test.java
@@ -0,0 +1,56 @@
+/*
+ * 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.
+ */
+package org.netbeans.modules.php.editor.csl;
+
+
+public class OccurrencesFinderImplNb3108Test extends 
OccurrencesFinderImplTestBase {
+
+    public OccurrencesFinderImplNb3108Test(String testName) {
+        super(testName);
+    }
+
+    public void testNb3108_01a() throws Exception {
+        checkOccurrences(getTestPath(), "    private $pro^perty = [", true);
+    }
+
+    public void testNb3108_01b() throws Exception {
+        checkOccurrences(getTestPath(), "        $instance2 = new 
$this->pr^operty[$this->getIndex()];", true);
+    }
+
+    public void testNb3108_02a() throws Exception {
+        checkOccurrences(getTestPath(), "    private static $^staticProperty = 
[", true);
+    }
+
+    public void testNb3108_02b() throws Exception {
+        checkOccurrences(getTestPath(), "        $instance1 = new 
self::$stati^cProperty[self::getIndex()];", true);
+    }
+
+    public void testNb3108_03a() throws Exception {
+        checkOccurrences(getTestPath(), "    private static function 
ge^tIndex() {", true);
+    }
+
+    public void testNb3108_03b() throws Exception {
+        checkOccurrences(getTestPath(), "        $instance1 = new 
self::$staticProperty[self::get^Index()];", true);
+    }
+
+    public void testNb3108_03c() throws Exception {
+        checkOccurrences(getTestPath(), "        $instance2 = new 
$this->property[$this->getI^ndex()];", true);
+    }
+
+}


---------------------------------------------------------------------
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

Reply via email to