diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/model/nodes/ASTNodeInfo.java b/php/php.editor/src/org/netbeans/modules/php/editor/model/nodes/ASTNodeInfo.java index 9f6af3b8fc32..13320d02d5a1 100644 --- a/php/php.editor/src/org/netbeans/modules/php/editor/model/nodes/ASTNodeInfo.java +++ b/php/php.editor/src/org/netbeans/modules/php/editor/model/nodes/ASTNodeInfo.java @@ -31,6 +31,7 @@ import org.netbeans.modules.php.editor.parser.astnodes.ArrayAccess; import org.netbeans.modules.php.editor.parser.astnodes.ArrayCreation; import org.netbeans.modules.php.editor.parser.astnodes.ArrowFunctionDeclaration; +import org.netbeans.modules.php.editor.parser.astnodes.Block; import org.netbeans.modules.php.editor.parser.astnodes.ClassInstanceCreation; import org.netbeans.modules.php.editor.parser.astnodes.ClassName; import org.netbeans.modules.php.editor.parser.astnodes.Expression; @@ -48,10 +49,12 @@ import org.netbeans.modules.php.editor.parser.astnodes.ReturnStatement; import org.netbeans.modules.php.editor.parser.astnodes.Scalar; import org.netbeans.modules.php.editor.parser.astnodes.SingleUseStatementPart; +import org.netbeans.modules.php.editor.parser.astnodes.Statement; import org.netbeans.modules.php.editor.parser.astnodes.StaticConstantAccess; import org.netbeans.modules.php.editor.parser.astnodes.StaticDispatch; import org.netbeans.modules.php.editor.parser.astnodes.StaticFieldAccess; import org.netbeans.modules.php.editor.parser.astnodes.StaticMethodInvocation; +import org.netbeans.modules.php.editor.parser.astnodes.UseTraitStatement; import org.netbeans.modules.php.editor.parser.astnodes.UseTraitStatementPart; import org.netbeans.modules.php.editor.parser.astnodes.Variable; import org.netbeans.modules.php.editor.parser.astnodes.Variadic; @@ -454,8 +457,14 @@ static class UsedTraitsVisitor extends DefaultVisitor { private final List useParts = new LinkedList<>(); @Override - public void visit(UseTraitStatementPart node) { - useParts.add(node); + public void visit(Block node) { + for (Statement statement : node.getStatements()) { + if (statement instanceof UseTraitStatement useTraitStatement) { + for (UseTraitStatementPart parts : useTraitStatement.getParts()) { + useParts.add(parts); + } + } + } } public Collection getUsedTraits() { diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/model/nodes/ClassInstanceCreationInfo.java b/php/php.editor/src/org/netbeans/modules/php/editor/model/nodes/ClassInstanceCreationInfo.java index 6563e45146ef..59669fe75368 100644 --- a/php/php.editor/src/org/netbeans/modules/php/editor/model/nodes/ClassInstanceCreationInfo.java +++ b/php/php.editor/src/org/netbeans/modules/php/editor/model/nodes/ClassInstanceCreationInfo.java @@ -20,7 +20,6 @@ import java.util.Collection; import java.util.HashSet; -import java.util.LinkedList; import java.util.List; import java.util.Set; import org.netbeans.modules.csl.api.OffsetRange; @@ -31,8 +30,6 @@ import org.netbeans.modules.php.editor.parser.astnodes.ClassInstanceCreation; import org.netbeans.modules.php.editor.parser.astnodes.ClassName; import org.netbeans.modules.php.editor.parser.astnodes.Expression; -import org.netbeans.modules.php.editor.parser.astnodes.UseTraitStatementPart; -import org.netbeans.modules.php.editor.parser.astnodes.visitors.DefaultVisitor; /** * Info for anonymous classes. @@ -106,25 +103,4 @@ public List getAttributes() { return getOriginalNode().getAttributes(); } - //~ Inner classes - private static final class UsedTraitsVisitor extends DefaultVisitor { - - private final List useParts = new LinkedList<>(); - - - @Override - public void visit(UseTraitStatementPart node) { - useParts.add(node); - } - - public Collection getUsedTraits() { - Collection retval = new HashSet<>(); - for (UseTraitStatementPart useTraitStatementPart : useParts) { - retval.add(QualifiedName.create(useTraitStatementPart.getName())); - } - return retval; - } - - } - } diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/csl/NavigatorTest/structure/anonymousClassInClassScope.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/csl/NavigatorTest/structure/anonymousClassInClassScope.pass index d7652a6c3c1a..1348b6ac1dd5 100644 --- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/csl/NavigatorTest/structure/anonymousClassInClassScope.pass +++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/csl/NavigatorTest/structure/anonymousClassInClassScope.pass @@ -1,6 +1,6 @@ |-ClassScopeTestInterface [16, 48] : ESCAPED{ClassScopeTestInterface} |-ClassScopeTestTrait [56, 84] : ESCAPED{ClassScopeTestTrait} -|-ClassScopeTest [92, 1512] : ESCAPED{ClassScopeTest}#ESCAPED{ClassScopeTestTrait} +|-ClassScopeTest [92, 1512] : ESCAPED{ClassScopeTest} |--test1 [130, 1059] : ESCAPED{test1}ESCAPED{(}ESCAPED{)} |--test2 [1081, 1256] : ESCAPED{test2}ESCAPED{(}ESCAPED{)} |--test3 [1278, 1510] : ESCAPED{test3}ESCAPED{(}ESCAPED{)} diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/csl/NavigatorTest/structure/anonymousClassInTraitScope.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/csl/NavigatorTest/structure/anonymousClassInTraitScope.pass index ae838dffb821..71260cebab3b 100644 --- a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/csl/NavigatorTest/structure/anonymousClassInTraitScope.pass +++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/csl/NavigatorTest/structure/anonymousClassInTraitScope.pass @@ -1,7 +1,7 @@ |-TraitScopeTestInterface [16, 48] : ESCAPED{TraitScopeTestInterface} |-TraitScopeTestTrait [56, 84] : ESCAPED{TraitScopeTestTrait} |-TraitScopeClass [92, 116] : ESCAPED{TraitScopeClass} -|-TraitScopeTest [124, 1544] : ESCAPED{TraitScopeTest}#ESCAPED{TraitScopeTestTrait} +|-TraitScopeTest [124, 1544] : ESCAPED{TraitScopeTest} |--test1 [162, 1091] : ESCAPED{test1}ESCAPED{(}ESCAPED{)} |--test2 [1113, 1288] : ESCAPED{test2}ESCAPED{(}ESCAPED{)} |--test3 [1310, 1542] : ESCAPED{test3}ESCAPED{(}ESCAPED{)} diff --git a/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/csl/NavigatorTest/structure/gh8527.pass b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/csl/NavigatorTest/structure/gh8527.pass new file mode 100644 index 000000000000..7ed1f5f84e9b --- /dev/null +++ b/php/php.editor/test/unit/data/goldenfiles/org/netbeans/modules/php/editor/csl/NavigatorTest/structure/gh8527.pass @@ -0,0 +1,9 @@ +|-MyTrait [13, 107] : ESCAPED{MyTrait} +|--doSomething [45, 56] : ESCAPED{doSomething}ESCAPED{(}ESCAPED{)} +|--doNothing [81, 105] : ESCAPED{doNothing}ESCAPED{(}ESCAPED{)} +|-MysClass [115, 510] : ESCAPED{MysClass} +|--getObject [146, 508] : ESCAPED{getObject}ESCAPED{(}ESCAPED{)} +|-#anon#gh8527_php#2 [183, 501] : ESCAPED{{}} +|--getMyTraitAwareObject [222, 491] : ESCAPED{getMyTraitAwareObject}ESCAPED{(}ESCAPED{)} +|-#anon#gh8527_php#1 [287, 476] : ESCAPED{{}}#ESCAPED{MyTrait} +|--doSomething [400, 458] : ESCAPED{doSomething}ESCAPED{(}ESCAPED{)} diff --git a/php/php.editor/test/unit/data/testfiles/structure/gh8527.php b/php/php.editor/test/unit/data/testfiles/structure/gh8527.php new file mode 100644 index 000000000000..50d92d68ffc2 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/structure/gh8527.php @@ -0,0 +1,33 @@ +