This is an automated email from the ASF dual-hosted git repository. neilcsmith pushed a commit to branch delivery in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/delivery by this push: new 55a2b6af0e5 Fixed detection of magic methods new 5acab1abe61 Merge pull request #5344 from KacerCZ/php-magic-method-fix 55a2b6af0e5 is described below commit 55a2b6af0e58c3227dfd87aeb094b1b38927289e Author: Tomas Prochazka <ka...@razdva.cz> AuthorDate: Sun Jan 22 17:28:57 2023 +0100 Fixed detection of magic methods In PHP method names are case insensitive. Method isMagic() did not work for methods __callStatic, __toString and __debugInfo. Method isConstructor() should compare whole string even though this is already guarded by isMagic(). --- .../php/editor/model/impl/MethodScopeImpl.java | 30 ++++++++++++++-------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/MethodScopeImpl.java b/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/MethodScopeImpl.java index ffb28d497f6..ee642fabee9 100644 --- a/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/MethodScopeImpl.java +++ b/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/MethodScopeImpl.java @@ -19,6 +19,7 @@ package org.netbeans.modules.php.editor.model.impl; import java.util.Collection; +import java.util.HashSet; import java.util.List; import java.util.Set; import org.netbeans.modules.parsing.spi.indexing.support.IndexDocument; @@ -50,11 +51,20 @@ import org.netbeans.modules.php.editor.parser.astnodes.Variable; * @author Radek Matous */ final class MethodScopeImpl extends FunctionScopeImpl implements MethodScope, VariableNameFactory, LazyBuild { + + private static final Set<String> MAGIC_METHODS = new HashSet<>(); + private final String classNormName; private boolean scanned; private MethodDeclaration originalNode; private ModelVisitor visitor; + static { + for (String methodName : PredefinedSymbols.MAGIC_METHODS) { + MAGIC_METHODS.add(methodName.toLowerCase()); + } + } + //new contructors MethodScopeImpl(Scope inScope, String returnType, MethodDeclarationInfo nodeInfo, ModelVisitor visitor, boolean isDeprecated) { super(inScope, nodeInfo, returnType, isDeprecated); @@ -141,7 +151,7 @@ final class MethodScopeImpl extends FunctionScopeImpl implements MethodScope, Va @Override public boolean isMagic() { - return PredefinedSymbols.MAGIC_METHODS.contains(getName().toLowerCase()); + return MAGIC_METHODS.contains(getName().toLowerCase()); } @Override @@ -151,7 +161,7 @@ final class MethodScopeImpl extends FunctionScopeImpl implements MethodScope, Va @Override public boolean isConstructor() { - return isMagic() ? getName().contains("__construct") : false; //NOI18N + return isMagic() ? getName().equalsIgnoreCase("__construct") : false; //NOI18N } @Override @@ -177,16 +187,16 @@ final class MethodScopeImpl extends FunctionScopeImpl implements MethodScope, Va sb.append(", "); //NOI18N } final ParameterElement param = parameterList.get(i); - if (param.hasDeclaredType()) { - Set<TypeResolver> types = param.getTypes(); - if (types.size() == 1) { - for (TypeResolver typeResolver : types) { - if (typeResolver.isResolved()) { - sb.append(typeResolver.getTypeName(false)).append(' '); //NOI18N - } + if (param.hasDeclaredType()) { + Set<TypeResolver> types = param.getTypes(); + if (types.size() == 1) { + for (TypeResolver typeResolver : types) { + if (typeResolver.isResolved()) { + sb.append(typeResolver.getTypeName(false)).append(' '); //NOI18N } } } + } sb.append(param.getName()); if (!param.isMandatory()) { @@ -285,7 +295,7 @@ final class MethodScopeImpl extends FunctionScopeImpl implements MethodScope, Va @Override public void scan() { if (!scanned && visitor != null) { - scanned = true; + scanned = true; visitor.scanNoLazy(originalNode, this); } --------------------------------------------------------------------- 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