This is an automated email from the ASF dual-hosted git repository. junichi11 pushed a commit to branch php-nb21-features in repository https://gitbox.apache.org/repos/asf/netbeans.git
commit 71d008672cad41afc4fdc36920349683f16859c4 Author: Junichi Yamamoto <junich...@apache.org> AuthorDate: Thu Oct 12 11:53:17 2023 +0900 PHP 8.2 Support: Disjunctive Normal Form Types (Part 5) - https://github.com/apache/netbeans/issues/4725 - https://wiki.php.net/rfc/dnf_types - Fix code completion for return, field, `@method`, `@property`, and `@var` DNF types - Fix the lexer to recognize DNF types of vardoc (`/** @var X|(Y&Z) $var */`) - Add unit tests --- .../org/netbeans/modules/php/editor/CodeUtils.java | 2 +- .../php/editor/api/elements/FieldElement.java | 1 + .../php/editor/completion/PHPCompletionItem.java | 4 + .../php/editor/elements/FieldElementImpl.java | 32 ++- .../php/editor/model/impl/FieldElementImpl.java | 2 +- .../php/editor/model/impl/FunctionScopeImpl.java | 4 +- .../modules/php/editor/model/impl/Type.java | 26 +- .../modules/php/editor/parser/ASTPHP5Scanner.java | 316 ++++++++++++--------- .../php/editor/parser/PHPVarCommentParser.java | 3 +- .../completion/lib/php82/testDNFTypes/dnfTypes.php | 215 ++++++++++++++ ...nfTypes.php.testDNFTypes_FieldType01.completion | 12 + ...fTypes.php.testDNFTypes_FieldType02a.completion | 12 + ...fTypes.php.testDNFTypes_FieldType02b.completion | 5 + ...nfTypes.php.testDNFTypes_FieldType03.completion | 18 ++ ...nfTypes.php.testDNFTypes_FieldType04.completion | 9 + ...nfTypes.php.testDNFTypes_FieldType05.completion | 13 + ...nfTypes.php.testDNFTypes_FieldType06.completion | 9 + ...nfTypes.php.testDNFTypes_FieldType07.completion | 9 + ...nfTypes.php.testDNFTypes_FieldType08.completion | 9 + ...nfTypes.php.testDNFTypes_FieldType09.completion | 13 + ...fTypes.php.testDNFTypes_FieldType10a.completion | 9 + ...fTypes.php.testDNFTypes_FieldType10b.completion | 4 + ...nfTypes.php.testDNFTypes_FieldType11.completion | 18 ++ ...nfTypes.php.testDNFTypes_FieldType12.completion | 12 + ...nfTypes.php.testDNFTypes_FieldType13.completion | 9 + ...hp.testDNFTypes_FunctionReturnType01.completion | 12 + ...hp.testDNFTypes_FunctionReturnType02.completion | 18 ++ ...hp.testDNFTypes_FunctionReturnType03.completion | 12 + ...p.testDNFTypes_FunctionReturnType04a.completion | 18 ++ ...p.testDNFTypes_FunctionReturnType04b.completion | 4 + ....php.testDNFTypes_MethodReturnType01.completion | 12 + ...php.testDNFTypes_MethodReturnType02a.completion | 12 + ...php.testDNFTypes_MethodReturnType02b.completion | 5 + ....php.testDNFTypes_MethodReturnType03.completion | 9 + ....php.testDNFTypes_MethodReturnType04.completion | 12 + ....php.testDNFTypes_MethodReturnType05.completion | 9 + ....php.testDNFTypes_MethodReturnType06.completion | 12 + ....php.testDNFTypes_MethodReturnType07.completion | 18 ++ ....php.testDNFTypes_MethodReturnType08.completion | 18 ++ ...php.testDNFTypes_MethodReturnType09a.completion | 12 + ...php.testDNFTypes_MethodReturnType09b.completion | 4 + ....php.testDNFTypes_MethodReturnType10.completion | 18 ++ ....php.testDNFTypes_MethodReturnType11.completion | 9 + ....php.testDNFTypes_MethodReturnType12.completion | 18 ++ ...php.testDNFTypes_MethodReturnType13a.completion | 18 ++ ...php.testDNFTypes_MethodReturnType13b.completion | 4 + ....php.testDNFTypes_MethodReturnType14.completion | 12 + ....php.testDNFTypes_MethodReturnType15.completion | 12 + ....php.testDNFTypes_MethodReturnType16.completion | 18 ++ ....php.testDNFTypes_MethodReturnType17.completion | 12 + ....php.testDNFTypes_MethodReturnType18.completion | 12 + ...Types.php.testDNFTypes_VarDocType01a.completion | 9 + ...Types.php.testDNFTypes_VarDocType01b.completion | 13 + ...Types.php.testDNFTypes_VarDocType02a.completion | 12 + ...Types.php.testDNFTypes_VarDocType02b.completion | 18 ++ ...Types.php.testDNFTypes_VarDocType03a.completion | 12 + ...Types.php.testDNFTypes_VarDocType03b.completion | 18 ++ ...Types.php.testDNFTypes_VarDocType04a.completion | 9 + ...Types.php.testDNFTypes_VarDocType04b.completion | 13 + ...Types.php.testDNFTypes_VarDocType05a.completion | 12 + ...Types.php.testDNFTypes_VarDocType05b.completion | 18 ++ ...Types.php.testDNFTypes_VarDocType06a.completion | 12 + ...Types.php.testDNFTypes_VarDocType06b.completion | 18 ++ .../editor/completion/PHP82CodeCompletionTest.java | 212 ++++++++++++++ .../modules/php/editor/model/impl/TypeTest.java | 101 +++++++ php/php.editor/tools/ASTPHP5Scanner.flex | 4 +- 66 files changed, 1411 insertions(+), 156 deletions(-) diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/CodeUtils.java b/php/php.editor/src/org/netbeans/modules/php/editor/CodeUtils.java index 746fecc67a..fb2c27caaa 100644 --- a/php/php.editor/src/org/netbeans/modules/php/editor/CodeUtils.java +++ b/php/php.editor/src/org/netbeans/modules/php/editor/CodeUtils.java @@ -90,7 +90,7 @@ public final class CodeUtils { public static final String ELLIPSIS = "..."; // NOI18N public static final Pattern WHITE_SPACES_PATTERN = Pattern.compile("\\s+"); // NOI18N - public static final Pattern SPLIT_TYPES_PATTERN = Pattern.compile("[()|&]"); // NOI18N + public static final Pattern SPLIT_TYPES_PATTERN = Pattern.compile("[()|&]+"); // NOI18N private static final Logger LOGGER = Logger.getLogger(CodeUtils.class.getName()); diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/api/elements/FieldElement.java b/php/php.editor/src/org/netbeans/modules/php/editor/api/elements/FieldElement.java index dbc7537a39..41c37908e5 100644 --- a/php/php.editor/src/org/netbeans/modules/php/editor/api/elements/FieldElement.java +++ b/php/php.editor/src/org/netbeans/modules/php/editor/api/elements/FieldElement.java @@ -30,4 +30,5 @@ public interface FieldElement extends TypedInstanceElement, TypeMemberElement { boolean isAnnotation(); boolean isUnionType(); boolean isIntersectionType(); + String getDeclaredType(); } 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 4315df71ff..53d7847960 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 @@ -981,6 +981,10 @@ public abstract class PHPCompletionItem implements CompletionProposal { @Override protected String getTypeName() { + String declaredType = getField().getDeclaredType(); + if (declaredType != null) { + return StringUtils.truncate(declaredType, 0, TYPE_NAME_MAX_LENGTH, CodeUtils.ELLIPSIS); + } Set<TypeResolver> types = getField().getInstanceTypes(); List<String> typeNames = new ArrayList<>(); for (TypeResolver type : types) { diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/elements/FieldElementImpl.java b/php/php.editor/src/org/netbeans/modules/php/editor/elements/FieldElementImpl.java index 490ccd25c5..fcff05d62a 100644 --- a/php/php.editor/src/org/netbeans/modules/php/editor/elements/FieldElementImpl.java +++ b/php/php.editor/src/org/netbeans/modules/php/editor/elements/FieldElementImpl.java @@ -22,6 +22,8 @@ import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; +import org.netbeans.api.annotations.common.CheckForNull; +import org.netbeans.api.annotations.common.NullAllowed; import org.netbeans.modules.parsing.spi.indexing.support.IndexResult; import org.netbeans.modules.php.api.editor.PhpType; import org.netbeans.modules.php.editor.api.ElementQuery; @@ -55,6 +57,8 @@ public final class FieldElementImpl extends PhpElementImpl implements FieldEleme private final Set<TypeResolver> instanceFQTypes; private final boolean isAnnotation; private final Type.Kind typeKind; + @NullAllowed + private final String declaredType; private FieldElementImpl( final TypeElement enclosingType, @@ -67,7 +71,8 @@ public final class FieldElementImpl extends PhpElementImpl implements FieldEleme final Set<TypeResolver> instanceFQTypes, final boolean isDeprecated, final boolean isAnnotation, - Type.Kind typeKind + Type.Kind typeKind, + String declaredType ) { super(FieldElementImpl.getName(fieldName, true), enclosingType.getName(), fileUrl, offset, elementQuery, isDeprecated); this.modifiers = PhpModifiers.fromBitMask(flags); @@ -76,6 +81,7 @@ public final class FieldElementImpl extends PhpElementImpl implements FieldEleme this.instanceFQTypes = instanceFQTypes; this.isAnnotation = isAnnotation; this.typeKind = typeKind; + this.declaredType = declaredType; } public static Set<FieldElement> fromSignature(final TypeElement type, @@ -105,7 +111,7 @@ public final class FieldElementImpl extends PhpElementImpl implements FieldEleme if (matchesQuery(query, signParser)) { retval = new FieldElementImpl(type, signParser.getFieldName(), signParser.getOffset(), signParser.getFlags(), signParser.getFileUrl(), - indexScopeQuery, signParser.getTypes(), signParser.getFQTypes(), signParser.isDeprecated(), signParser.isAnnotation(), signParser.getTypeKind()); + indexScopeQuery, signParser.getTypes(), signParser.getFQTypes(), signParser.isDeprecated(), signParser.isAnnotation(), signParser.getTypeKind(), signParser.getDeclaredType()); } return retval; @@ -122,7 +128,7 @@ public final class FieldElementImpl extends PhpElementImpl implements FieldEleme Set<TypeResolver> types = fieldType != null ? TypeResolverImpl.parseTypes(fieldType) : null; retval.add(new FieldElementImpl(type, info.getName(), info.getRange().getStart(), info.getAccessModifiers().toFlags(), fileQuery.getURL().toString(), fileQuery, - types, types, VariousUtils.isDeprecatedFromPHPDoc(fileQuery.getResult().getProgram(), node), false, Type.Kind.fromTypes(fieldType))); + types, types, VariousUtils.isDeprecatedFromPHPDoc(fileQuery.getResult().getProgram(), node), false, Type.Kind.fromTypes(fieldType), info.getFieldType())); } return retval; } @@ -145,7 +151,8 @@ public final class FieldElementImpl extends PhpElementImpl implements FieldEleme resolvers, VariousUtils.isDeprecatedFromPHPDoc(fileQuery.getResult().getProgram(), node), false, - Type.Kind.NORMAL + Type.Kind.NORMAL, + null ); } @@ -158,7 +165,7 @@ public final class FieldElementImpl extends PhpElementImpl implements FieldEleme ? Collections.<TypeResolver>singleton(new TypeResolverImpl(fldType.getFullyQualifiedName(), false)) : Collections.<TypeResolver>emptySet(); FieldElementImpl retval = new FieldElementImpl(type, field.getName(), field.getOffset(), - PhpModifiers.NO_FLAGS, null, elementQuery, typeResolvers, typeResolvers, false, false, Type.Kind.NORMAL); + PhpModifiers.NO_FLAGS, null, elementQuery, typeResolvers, typeResolvers, false, false, Type.Kind.NORMAL, null); retval.setFileObject(field.getFile()); return retval; } @@ -225,6 +232,11 @@ public final class FieldElementImpl extends PhpElementImpl implements FieldEleme return typeKind == Type.Kind.INTERSECTION; } + @Override + public String getDeclaredType() { + return declaredType; + } + private void checkSignature(StringBuilder sb) { boolean checkEnabled = false; assert checkEnabled = true; @@ -309,6 +321,16 @@ public final class FieldElementImpl extends PhpElementImpl implements FieldEleme return signature.integer(3); } + @CheckForNull + String getDeclaredType() { + return signature.string(4).isEmpty() ? null : signature.string(4); + } + + @CheckForNull + String getDeclaredFQType() { + return signature.string(5).isEmpty() ? null : signature.string(5); + } + Set<TypeResolver> getTypes() { return TypeResolverImpl.parseTypes(signature.string(4)); } diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/FieldElementImpl.java b/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/FieldElementImpl.java index e3d68b1494..a3f132b483 100644 --- a/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/FieldElementImpl.java +++ b/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/FieldElementImpl.java @@ -161,7 +161,7 @@ class FieldElementImpl extends ScopeImpl implements FieldElement { public Collection<? extends TypeScope> getDefaultTypes() { Collection<TypeScope> typeScopes = new HashSet<>(); if (defaultFQType != null && defaultFQType.length() > 0) { - String[] allTypeNames = defaultFQType.split("\\&|\\|"); // NOI18N + String[] allTypeNames = Type.splitTypes(defaultFQType); for (String typeName : allTypeNames) { String modifiedTypeName = typeName; if (typeName.indexOf("[") != -1) { diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/FunctionScopeImpl.java b/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/FunctionScopeImpl.java index 70e1bfdb98..51bead55cd 100644 --- a/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/FunctionScopeImpl.java +++ b/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/FunctionScopeImpl.java @@ -278,7 +278,7 @@ class FunctionScopeImpl extends ScopeImpl implements FunctionScope, VariableName // NETBEANS-5062 Scope inScope = getInScope(); Set<TypeScope> cTypes = new HashSet<>(); - List<String> typeNames = StringUtils.explode(types, Type.getTypeSeparator(isReturnIntersectionType)); + List<String> typeNames = Arrays.asList(Type.splitTypes(types)); if (typeNames.contains(Type.STATIC) && inScope instanceof TypeScope) { TypeScope typeScope = (TypeScope) inScope; @@ -318,7 +318,7 @@ class FunctionScopeImpl extends ScopeImpl implements FunctionScope, VariableName private ReturnTypesDescriptor getReturnTypesDescriptor(String types, boolean resolveSemiTypes, Collection<? extends TypeScope> callerTypes) { ReturnTypesDescriptor result = ReturnTypesDescriptor.NONE; if (StringUtils.hasText(types)) { - final String[] typeNames = types.split(isReturnIntersectionType ? TYPE_SEPARATOR_INTERSECTION_REGEXP : TYPE_SEPARATOR_REGEXP); + final String[] typeNames = Type.splitTypes(types); Collection<TypeScope> retval = new HashSet<>(); for (int i = 0; i < typeNames.length; i++) { String typeName = typeNames[i]; diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/Type.java b/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/Type.java index e7bbcc949d..3fb5f48e9c 100644 --- a/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/Type.java +++ b/php/php.editor/src/org/netbeans/modules/php/editor/model/impl/Type.java @@ -21,9 +21,9 @@ package org.netbeans.modules.php.editor.model.impl; import java.util.Arrays; import java.util.Collection; import java.util.List; -import java.util.regex.Pattern; import org.netbeans.api.annotations.common.NullAllowed; import org.netbeans.modules.php.api.util.StringUtils; +import org.netbeans.modules.php.editor.CodeUtils; /** * @@ -121,13 +121,13 @@ public final class Type { } return retval; } - + public static boolean isPrimitiveAlias(String typeName) { boolean retval = false; if (BOOLEAN.equals(typeName)) { retval = true; } - return retval; + return retval; } public static boolean isArray(String typeName) { @@ -237,4 +237,24 @@ public final class Type { public static String getTypeSeparator(boolean isIntersection) { return isIntersection ? SEPARATOR_INTERSECTION : SEPARATOR; } + + /** + * Get all types from the declared type. + * + * @param declaredType the declared type. can be {@code null} e.g. (X&Y)|Z + * @return all type names, if it's a nullable type, the type name with nullable type prefix("?") + */ + public static String[] splitTypes(@NullAllowed String declaredType) { + if (!StringUtils.hasText(declaredType)) { + return new String[0]; + } + String type = declaredType.trim(); + if (type.startsWith("(")) { // NOI18N + type = type.substring(1); + } + if (type.endsWith(")")) { // NOI18N + type = type.substring(0, type.length() - 1); + } + return CodeUtils.SPLIT_TYPES_PATTERN.split(type.replace(" ", "")); // NOI18N + } } diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/parser/ASTPHP5Scanner.java b/php/php.editor/src/org/netbeans/modules/php/editor/parser/ASTPHP5Scanner.java index 86ec1eaa90..fcf45a8ff4 100644 --- a/php/php.editor/src/org/netbeans/modules/php/editor/parser/ASTPHP5Scanner.java +++ b/php/php.editor/src/org/netbeans/modules/php/editor/parser/ASTPHP5Scanner.java @@ -1,4 +1,4 @@ -/* The following code was generated by JFlex 1.4.3 on 2023/06/19 14:22 */ +/* The following code was generated by JFlex 1.4.3 on 2023/10/12 11:50 */ /* * Licensed to the Apache Software Foundation (ASF) under one @@ -35,7 +35,7 @@ import org.netbeans.modules.web.common.api.ByteStack; /** * This class is a scanner generated by * <a href="http://www.jflex.de/">JFlex</a> 1.4.3 - * on 2023/06/19 14:22 from the specification file + * on 2023/10/12 11:50 from the specification file * <tt>/home/junichi11/NetBeansProjects/netbeans/php/php.editor/tools/ASTPHP5Scanner.flex</tt> */ public class ASTPHP5Scanner implements Scanner { @@ -156,7 +156,7 @@ public class ASTPHP5Scanner implements Scanner { "\7\15\1\0\7\15\1\0\7\15\1\0\7\15\1\0\7\15\120\0"+ "\1\15\u01d5\0\2\15\52\0\5\15\5\0\2\15\4\0\126\15\6\0"+ "\3\15\1\0\132\15\1\0\4\15\5\0\52\15\2\0\136\15\21\0"+ - "\33\15\65\0\20\15\u0200\0\u19b6\15\112\0\u51eb\15\25\0\u048d\15\103\0"+ + "\33\15\65\0\20\15\u0200\0\u19b6\15\112\0\u51f0\15\20\0\u048d\15\103\0"+ "\56\15\2\0\u010d\15\3\0\20\15\12\20\2\15\24\0\57\15\20\0"+ "\37\15\2\0\106\15\61\0\11\15\2\0\147\15\2\0\44\15\1\0"+ "\10\15\77\0\13\15\1\0\3\15\1\0\4\15\1\0\27\15\35\0"+ @@ -235,15 +235,15 @@ public class ASTPHP5Scanner implements Scanner { "\1\305\1\4\1\306\1\307\1\310\1\4\1\0\1\4"+ "\1\311\1\312\5\0\1\313\2\4\1\314\4\4\1\315"+ "\2\0\1\316\1\4\1\317\2\4\1\320\1\4\1\0"+ - "\1\321\6\0\2\4\1\322\1\4\1\323\1\324\2\0"+ - "\1\4\1\325\1\326\1\0\1\4\1\327\10\0\3\4"+ - "\2\0\1\4\1\330\1\4\6\0\1\331\2\4\1\332"+ - "\1\0\1\333\1\334\2\0\1\335\1\0\1\336\1\4"+ - "\6\0\1\4\2\0\1\337\1\0\1\4\7\0\1\340"+ + "\1\321\7\0\2\4\1\322\1\4\1\323\1\324\2\0"+ + "\1\4\1\325\1\326\1\0\1\4\1\327\12\0\3\4"+ + "\2\0\1\4\1\330\1\4\12\0\1\331\2\4\1\332"+ + "\1\0\1\333\1\334\4\0\1\335\4\0\1\336\1\4"+ + "\11\0\1\4\2\0\1\337\2\0\1\4\7\0\1\340"+ "\7\0\1\77\1\0"; private static int [] zzUnpackAction() { - int [] result = new int[842]; + int [] result = new int[858]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -363,20 +363,22 @@ public class ASTPHP5Scanner implements Scanner { "\0\u9664\0\u96aa\0\u087a\0\u96f0\0\u9736\0\u087a\0\u977c\0\u97c2"+ "\0\u9808\0\u984e\0\u087a\0\u9894\0\u98da\0\u087a\0\u9920\0\u087a"+ "\0\u9966\0\u99ac\0\u99f2\0\u9a38\0\u9a7e\0\u087a\0\u9ac4\0\u9b0a"+ - "\0\u9b50\0\u9b96\0\u9bdc\0\u9c22\0\u9c68\0\u9cae\0\u087a\0\u9cf4"+ - "\0\u087a\0\u087a\0\u9d3a\0\u9d80\0\u9dc6\0\u087a\0\u087a\0\u9e0c"+ - "\0\u9e52\0\u0578\0\u9e98\0\u9ede\0\u9f24\0\u9f6a\0\u9fb0\0\u9ff6"+ + "\0\u9b50\0\u9b96\0\u9bdc\0\u9c22\0\u9c68\0\u9cae\0\u9cf4\0\u087a"+ + "\0\u9d3a\0\u087a\0\u087a\0\u9d80\0\u9dc6\0\u9e0c\0\u087a\0\u087a"+ + "\0\u9e52\0\u9e98\0\u0578\0\u9ede\0\u9f24\0\u9f6a\0\u9fb0\0\u9ff6"+ "\0\ua03c\0\ua082\0\ua0c8\0\ua10e\0\ua154\0\ua19a\0\ua1e0\0\ua226"+ "\0\ua26c\0\ua2b2\0\ua2f8\0\ua33e\0\ua384\0\ua3ca\0\ua410\0\ua456"+ - "\0\u087a\0\ua49c\0\ua4e2\0\u0578\0\ua528\0\u087a\0\u087a\0\ua56e"+ - "\0\ua5b4\0\u0578\0\ua5fa\0\u087a\0\ua640\0\ua686\0\ua6cc\0\ua712"+ - "\0\ua758\0\ua79e\0\ua7e4\0\ua82a\0\ua870\0\ua8b6\0\ua6cc\0\ua8fc"+ - "\0\ua942\0\ua988\0\ua9ce\0\uaa14\0\uaa5a\0\uaaa0\0\uaae6\0\uab2c"+ - "\0\u0578\0\uab72\0\uabb8\0\uabfe\0\uac44\0\uac8a\0\uacd0\0\uad16"+ - "\0\u0578\0\uad5c"; + "\0\ua49c\0\ua4e2\0\ua528\0\ua56e\0\ua5b4\0\ua5fa\0\ua640\0\u087a"+ + "\0\ua686\0\ua6cc\0\u0578\0\ua712\0\u087a\0\u087a\0\ua758\0\ua79e"+ + "\0\ua7e4\0\ua82a\0\u0578\0\ua870\0\ua8b6\0\ua8fc\0\ua942\0\u087a"+ + "\0\ua988\0\ua9ce\0\uaa14\0\uaa5a\0\uaaa0\0\uaae6\0\uab2c\0\uab72"+ + "\0\uabb8\0\uabfe\0\uac44\0\uac8a\0\uacd0\0\uaa14\0\uad16\0\uad5c"+ + "\0\uada2\0\uade8\0\uae2e\0\uae74\0\uaeba\0\uaf00\0\uaf46\0\uaf8c"+ + "\0\u0578\0\uafd2\0\ub018\0\ub05e\0\ub0a4\0\ub0ea\0\ub130\0\ub176"+ + "\0\u0578\0\ub1bc"; private static int [] zzUnpackRowMap() { - int [] result = new int[842]; + int [] result = new int[858]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -1342,133 +1344,165 @@ public class ASTPHP5Scanner implements Scanner { "\23\0\3\u02de\32\0\1\346\30\0\1\u02f7\1\0\1\u02f7"+ "\2\0\3\u02f7\1\0\1\u02f7\1\0\3\u02f7\1\0\1\u02f8"+ "\3\u02df\6\0\11\u02f7\2\0\10\u02f7\2\0\1\u02f9\1\0"+ - "\1\u02f7\2\0\2\u02f7\15\0\1\u02f7\2\0\2\u02e0\1\0"+ - "\1\u02e0\1\0\13\u02e0\1\0\3\u02fa\6\0\11\u02e0\1\0"+ - "\1\u02fb\10\u02e0\4\0\1\u02e0\2\0\2\u02e0\15\0\1\u02e0"+ - "\3\0\1\u02e0\1\0\1\u02e0\2\0\3\u02e0\1\0\1\u02e0"+ - "\1\0\3\u02e0\13\0\11\u02e0\2\0\10\u02e0\4\0\1\u02e0"+ - "\2\0\2\u02e0\15\0\1\u02e0\11\0\1\u02fc\76\0\2\40"+ - "\1\0\1\40\1\0\13\40\1\237\11\0\4\40\1\u02fd"+ - "\4\40\2\0\10\40\4\0\1\40\2\0\2\40\15\0"+ - "\1\40\2\0\2\40\1\0\1\40\1\0\13\40\1\237"+ - "\11\0\6\40\1\u02fe\2\40\2\0\10\40\4\0\1\40"+ - "\2\0\2\40\15\0\1\40\2\0\1\40\1\u02ff\1\0"+ - "\1\40\1\0\13\40\1\237\11\0\11\40\2\0\10\40"+ - "\4\0\1\40\2\0\2\40\15\0\1\40\2\0\2\40"+ - "\1\0\1\40\1\0\13\40\1\237\11\0\11\40\2\0"+ - "\2\40\1\u0300\5\40\4\0\1\40\2\0\2\40\15\0"+ - "\1\40\2\0\2\40\1\0\1\u0301\1\0\13\40\1\237"+ - "\11\0\11\40\2\0\10\40\4\0\1\40\2\0\2\40"+ + "\1\u02f7\1\u02fa\1\0\2\u02f7\15\0\1\u02f7\2\0\2\u02e0"+ + "\1\0\1\u02e0\1\0\13\u02e0\1\0\3\u02fb\6\0\11\u02e0"+ + "\1\0\1\u02fc\10\u02e0\4\0\1\u02e0\2\0\2\u02e0\15\0"+ + "\1\u02e0\3\0\1\u02e0\1\0\1\u02e0\2\0\3\u02e0\1\0"+ + "\1\u02e0\1\0\3\u02e0\13\0\11\u02e0\2\0\10\u02e0\4\0"+ + "\1\u02e0\2\0\2\u02e0\15\0\1\u02e0\11\0\1\u02fd\76\0"+ + "\2\40\1\0\1\40\1\0\13\40\1\237\11\0\4\40"+ + "\1\u02fe\4\40\2\0\10\40\4\0\1\40\2\0\2\40"+ "\15\0\1\40\2\0\2\40\1\0\1\40\1\0\13\40"+ - "\1\237\11\0\11\40\2\0\3\40\1\u0302\4\40\4\0"+ - "\1\40\2\0\2\40\15\0\1\40\40\0\1\u0303\52\0"+ - "\1\u0304\102\0\2\40\1\0\1\40\1\0\13\40\1\237"+ - "\11\0\4\40\1\u0305\4\40\2\0\10\40\4\0\1\40"+ - "\2\0\2\40\15\0\1\40\2\0\2\40\1\0\1\40"+ - "\1\0\13\40\1\237\11\0\3\40\1\u0306\5\40\2\0"+ + "\1\237\11\0\6\40\1\u02ff\2\40\2\0\10\40\4\0"+ + "\1\40\2\0\2\40\15\0\1\40\2\0\1\40\1\u0300"+ + "\1\0\1\40\1\0\13\40\1\237\11\0\11\40\2\0"+ "\10\40\4\0\1\40\2\0\2\40\15\0\1\40\2\0"+ - "\2\40\1\0\1\40\1\0\13\40\1\237\11\0\7\40"+ - "\1\u0307\1\40\2\0\10\40\4\0\1\40\2\0\2\40"+ - "\15\0\1\u0307\2\0\2\40\1\0\1\40\1\0\13\40"+ - "\1\u0308\11\0\11\40\2\0\10\40\4\0\1\40\2\0"+ + "\2\40\1\0\1\40\1\0\13\40\1\237\11\0\11\40"+ + "\2\0\2\40\1\u0301\5\40\4\0\1\40\2\0\2\40"+ + "\15\0\1\40\2\0\2\40\1\0\1\u0302\1\0\13\40"+ + "\1\237\11\0\11\40\2\0\10\40\4\0\1\40\2\0"+ "\2\40\15\0\1\40\2\0\2\40\1\0\1\40\1\0"+ - "\13\40\1\237\11\0\4\40\1\u0309\4\40\2\0\10\40"+ - "\4\0\1\40\2\0\2\40\15\0\1\40\51\0\1\u030a"+ - "\36\0\2\u02f7\1\0\1\u02f7\1\0\13\u02f7\1\u02f8\3\u030b"+ - "\6\0\11\u02f7\1\0\1\u030c\10\u02f7\4\0\1\u02f7\2\0"+ - "\2\u02f7\6\0\1\u02f9\6\0\1\u02f7\3\0\1\u02f7\1\0"+ - "\1\u02f7\2\0\3\u02f7\1\0\1\u02f7\1\0\3\u02f7\13\0"+ - "\11\u02f7\2\0\10\u02f7\4\0\1\u02f7\2\0\2\u02f7\15\0"+ + "\13\40\1\237\11\0\11\40\2\0\3\40\1\u0303\4\40"+ + "\4\0\1\40\2\0\2\40\15\0\1\40\40\0\1\u0304"+ + "\52\0\1\u0305\102\0\2\40\1\0\1\40\1\0\13\40"+ + "\1\237\11\0\4\40\1\u0306\4\40\2\0\10\40\4\0"+ + "\1\40\2\0\2\40\15\0\1\40\2\0\2\40\1\0"+ + "\1\40\1\0\13\40\1\237\11\0\3\40\1\u0307\5\40"+ + "\2\0\10\40\4\0\1\40\2\0\2\40\15\0\1\40"+ + "\2\0\2\40\1\0\1\40\1\0\13\40\1\237\11\0"+ + "\7\40\1\u0308\1\40\2\0\10\40\4\0\1\40\2\0"+ + "\2\40\15\0\1\u0308\2\0\2\40\1\0\1\40\1\0"+ + "\13\40\1\u0309\11\0\11\40\2\0\10\40\4\0\1\40"+ + "\2\0\2\40\15\0\1\40\2\0\2\40\1\0\1\40"+ + "\1\0\13\40\1\237\11\0\4\40\1\u030a\4\40\2\0"+ + "\10\40\4\0\1\40\2\0\2\40\15\0\1\40\51\0"+ + "\1\u030b\36\0\2\u02f7\1\0\1\u02f7\1\0\13\u02f7\1\u02f8"+ + "\3\u030c\6\0\11\u02f7\1\0\1\u030d\10\u02f7\4\0\1\u02f7"+ + "\2\0\2\u02f7\5\0\2\u030e\6\0\1\u02f7\3\0\1\u02f7"+ + "\1\0\1\u02f7\2\0\3\u02f7\1\0\1\u02f7\1\0\3\u02f7"+ + "\13\0\11\u02f7\2\0\10\u02f7\4\0\1\u02f7\2\0\2\u02f7"+ + "\15\0\1\u02f7\3\0\1\u02f7\1\0\1\u02f7\2\0\3\u02f7"+ + "\1\0\1\u02f7\1\0\3\u02f7\1\0\1\u02f8\11\0\11\u02f7"+ + "\2\0\10\u02f7\4\0\1\u02f7\1\u02fa\1\0\2\u02f7\15\0"+ "\1\u02f7\3\0\1\u02f7\1\0\1\u02f7\2\0\3\u02f7\1\0"+ "\1\u02f7\1\0\3\u02f7\1\0\1\u02f8\11\0\11\u02f7\2\0"+ "\10\u02f7\4\0\1\u02f7\2\0\2\u02f7\15\0\1\u02f7\3\0"+ - "\1\u030d\1\0\1\u030d\2\0\3\u030d\1\0\1\u030d\1\0"+ - "\3\u030d\1\0\1\u030e\3\u02fa\6\0\11\u030d\2\0\10\u030d"+ - "\2\0\1\u030f\1\0\1\u030d\2\0\2\u030d\15\0\1\u030d"+ - "\3\0\1\u0310\1\0\1\u0310\2\0\3\u0310\1\0\1\u0310"+ - "\1\0\3\u0310\6\0\1\u02fb\4\0\11\u0310\2\0\10\u0310"+ - "\4\0\1\u0310\2\0\2\u0310\11\0\1\u0311\3\0\1\u0310"+ - "\1\u02fb\37\0\1\u0312\47\0\1\40\1\u0313\1\0\1\40"+ - "\1\0\13\40\1\237\11\0\11\40\2\0\10\40\4\0"+ - "\1\40\2\0\2\40\15\0\1\40\2\0\2\40\1\0"+ - "\1\u0314\1\0\13\40\1\237\11\0\11\40\2\0\10\40"+ + "\1\u030f\1\0\1\u030f\2\0\3\u030f\1\0\1\u030f\1\0"+ + "\3\u030f\1\0\1\u0310\3\u02fb\6\0\11\u030f\2\0\10\u030f"+ + "\2\0\1\u0311\1\0\1\u030f\1\u0312\1\0\2\u030f\15\0"+ + "\1\u030f\3\0\1\u0313\1\0\1\u0313\2\0\3\u0313\1\0"+ + "\1\u0313\1\0\3\u0313\6\0\1\u02fc\4\0\11\u0313\2\0"+ + "\10\u0313\4\0\1\u0313\2\0\2\u0313\11\0\1\u0314\3\0"+ + "\1\u0313\1\u02fc\37\0\1\u0315\47\0\1\40\1\u0316\1\0"+ + "\1\40\1\0\13\40\1\237\11\0\11\40\2\0\10\40"+ "\4\0\1\40\2\0\2\40\15\0\1\40\2\0\2\40"+ - "\1\0\1\40\1\0\13\40\1\237\11\0\11\40\2\0"+ - "\7\40\1\u0315\4\0\1\40\2\0\2\40\15\0\1\40"+ - "\36\0\1\u0316\120\0\1\u0317\36\0\2\40\1\0\1\40"+ - "\1\0\13\40\1\237\11\0\6\40\1\u0318\2\40\2\0"+ - "\10\40\4\0\1\40\2\0\2\40\15\0\1\40\3\0"+ - "\1\u0319\1\0\1\u0319\2\0\3\u0319\1\0\1\u0319\1\0"+ - "\3\u0319\13\0\11\u0319\2\0\10\u0319\4\0\1\u0319\2\0"+ - "\2\u0319\15\0\1\u0319\2\0\2\40\1\0\1\40\1\0"+ - "\13\40\1\237\11\0\6\40\1\u031a\2\40\2\0\10\40"+ - "\4\0\1\40\2\0\2\40\15\0\1\40\23\0\3\u030b"+ - "\1\u031b\160\0\1\u031c\6\0\2\u030d\1\0\1\u030d\1\0"+ - "\13\u030d\1\u030e\3\u031d\6\0\11\u030d\1\0\1\u031e\10\u030d"+ - "\4\0\1\u030d\2\0\2\u030d\2\0\1\u031f\3\0\1\u030f"+ - "\6\0\1\u030d\3\0\1\u030d\1\0\1\u030d\2\0\3\u030d"+ - "\1\0\1\u030d\1\0\3\u030d\13\0\11\u030d\2\0\10\u030d"+ - "\4\0\1\u030d\2\0\2\u030d\15\0\1\u030d\3\0\1\u030d"+ - "\1\0\1\u030d\2\0\3\u030d\1\0\1\u030d\1\0\3\u030d"+ - "\1\0\1\u030e\11\0\11\u030d\2\0\10\u030d\4\0\1\u030d"+ - "\2\0\2\u030d\15\0\1\u030d\2\0\2\u0310\1\0\1\u0310"+ - "\1\0\13\u0310\5\0\1\u02fb\4\0\11\u0310\2\0\10\u0310"+ - "\4\0\1\u0310\2\0\2\u0310\11\0\1\u0311\3\0\1\u0310"+ - "\1\u02fb\22\0\3\u02fa\20\0\1\u02fb\114\0\1\u0320\32\0"+ - "\1\40\1\u0321\1\0\1\40\1\0\13\40\1\237\11\0"+ - "\11\40\2\0\10\40\4\0\1\40\2\0\2\40\15\0"+ - "\1\40\2\0\1\40\1\u0322\1\0\1\40\1\0\13\40"+ - "\1\237\11\0\11\40\2\0\10\40\4\0\1\40\2\0"+ - "\2\40\15\0\1\40\2\0\2\40\1\0\1\40\1\0"+ - "\13\40\1\237\11\0\1\u0323\10\40\2\0\10\40\4\0"+ - "\1\40\2\0\2\40\15\0\1\40\43\0\1\u0324\41\0"+ - "\1\u0324\5\0\1\u0325\102\0\2\40\1\0\1\u0326\1\0"+ - "\13\40\1\237\11\0\11\40\2\0\10\40\4\0\1\40"+ - "\2\0\2\40\15\0\1\40\2\0\2\u0319\1\0\1\u0319"+ - "\1\0\13\u0319\1\u0308\11\0\11\u0319\2\0\10\u0319\4\0"+ - "\1\u0319\2\0\2\u0319\15\0\1\u0319\2\0\2\40\1\0"+ - "\1\u0327\1\0\13\40\1\237\11\0\11\40\2\0\10\40"+ - "\4\0\1\40\2\0\2\40\15\0\1\40\3\0\1\u0328"+ - "\1\0\1\u0328\2\0\3\u0328\1\0\1\u0328\1\0\3\u0328"+ - "\13\0\11\u0328\2\0\10\u0328\4\0\1\u0328\2\0\2\u0328"+ - "\15\0\1\u0328\23\0\3\u030b\20\0\1\u030c\27\0\1\u02f9"+ - "\32\0\3\u031d\44\0\1\u031f\114\0\1\u0329\77\0\1\u032a"+ - "\53\0\1\u032b\46\0\1\40\1\u032c\1\0\1\40\1\0"+ - "\13\40\1\237\11\0\11\40\2\0\10\40\4\0\1\40"+ - "\2\0\2\40\15\0\1\40\2\0\2\40\1\0\1\40"+ - "\1\0\13\40\1\237\11\0\11\40\2\0\1\40\1\u032d"+ - "\6\40\4\0\1\40\2\0\2\40\15\0\1\40\40\0"+ - "\1\u032e\46\0\1\u032f\2\u0328\1\u032f\1\u0328\1\u032f\13\u0328"+ - "\1\u032f\3\u0330\6\u032f\11\u0328\1\u032f\1\u0331\10\u0328\4\u032f"+ - "\1\u0328\2\u032f\2\u0328\2\u032f\1\u0332\12\u032f\1\u0328\1\u032f"+ - "\22\0\3\u031d\20\0\1\u031e\23\0\1\u031f\3\0\1\u030f"+ - "\20\0\1\u0333\76\0\2\40\1\0\1\u0334\1\0\13\40"+ + "\1\0\1\u0317\1\0\13\40\1\237\11\0\11\40\2\0"+ + "\10\40\4\0\1\40\2\0\2\40\15\0\1\40\2\0"+ + "\2\40\1\0\1\40\1\0\13\40\1\237\11\0\11\40"+ + "\2\0\7\40\1\u0318\4\0\1\40\2\0\2\40\15\0"+ + "\1\40\36\0\1\u0319\120\0\1\u031a\36\0\2\40\1\0"+ + "\1\40\1\0\13\40\1\237\11\0\6\40\1\u031b\2\40"+ + "\2\0\10\40\4\0\1\40\2\0\2\40\15\0\1\40"+ + "\3\0\1\u031c\1\0\1\u031c\2\0\3\u031c\1\0\1\u031c"+ + "\1\0\3\u031c\13\0\11\u031c\2\0\10\u031c\4\0\1\u031c"+ + "\2\0\2\u031c\15\0\1\u031c\2\0\2\40\1\0\1\40"+ + "\1\0\13\40\1\237\11\0\6\40\1\u031d\2\40\2\0"+ + "\10\40\4\0\1\40\2\0\2\40\15\0\1\40\23\0"+ + "\3\u030c\1\u031e\160\0\1\u031f\7\0\1\u0320\1\0\1\u0320"+ + "\2\0\3\u0320\1\0\1\u0320\1\0\3\u0320\1\0\1\u0321"+ + "\11\0\11\u0320\2\0\10\u0320\4\0\1\u0320\1\u0322\1\0"+ + "\2\u0320\15\0\1\u0320\2\0\2\u030f\1\0\1\u030f\1\0"+ + "\13\u030f\1\u0310\3\u0323\6\0\11\u030f\1\0\1\u0324\10\u030f"+ + "\4\0\1\u030f\2\0\2\u030f\2\0\1\u0325\2\0\2\u0326"+ + "\6\0\1\u030f\3\0\1\u030f\1\0\1\u030f\2\0\3\u030f"+ + "\1\0\1\u030f\1\0\3\u030f\13\0\11\u030f\2\0\10\u030f"+ + "\4\0\1\u030f\2\0\2\u030f\15\0\1\u030f\3\0\1\u030f"+ + "\1\0\1\u030f\2\0\3\u030f\1\0\1\u030f\1\0\3\u030f"+ + "\1\0\1\u0310\11\0\11\u030f\2\0\10\u030f\4\0\1\u030f"+ + "\1\u0312\1\0\2\u030f\15\0\1\u030f\3\0\1\u030f\1\0"+ + "\1\u030f\2\0\3\u030f\1\0\1\u030f\1\0\3\u030f\1\0"+ + "\1\u0310\11\0\11\u030f\2\0\10\u030f\4\0\1\u030f\2\0"+ + "\2\u030f\15\0\1\u030f\2\0\2\u0313\1\0\1\u0313\1\0"+ + "\13\u0313\5\0\1\u02fc\4\0\11\u0313\2\0\10\u0313\4\0"+ + "\1\u0313\2\0\2\u0313\11\0\1\u0314\3\0\1\u0313\1\u02fc"+ + "\22\0\3\u02fb\20\0\1\u02fc\114\0\1\u0327\32\0\1\40"+ + "\1\u0328\1\0\1\40\1\0\13\40\1\237\11\0\11\40"+ + "\2\0\10\40\4\0\1\40\2\0\2\40\15\0\1\40"+ + "\2\0\1\40\1\u0329\1\0\1\40\1\0\13\40\1\237"+ + "\11\0\11\40\2\0\10\40\4\0\1\40\2\0\2\40"+ + "\15\0\1\40\2\0\2\40\1\0\1\40\1\0\13\40"+ + "\1\237\11\0\1\u032a\10\40\2\0\10\40\4\0\1\40"+ + "\2\0\2\40\15\0\1\40\43\0\1\u032b\41\0\1\u032b"+ + "\5\0\1\u032c\102\0\2\40\1\0\1\u032d\1\0\13\40"+ "\1\237\11\0\11\40\2\0\10\40\4\0\1\40\2\0"+ - "\2\40\15\0\1\40\35\0\1\u0316\51\0\22\u032f\1\0"+ - "\1\u032f\1\0\44\u032f\1\u0332\36\u032f\3\u0330\44\u032f\1\u0332"+ - "\16\u032f\1\u0335\1\u032f\1\u0335\2\u032f\3\u0335\1\u032f\1\u0335"+ - "\1\u032f\3\u0335\2\u032f\1\0\1\u032f\1\0\1\u032f\1\u0331"+ - "\4\u032f\11\u0335\2\u032f\10\u0335\4\u032f\1\u0335\2\u032f\2\u0335"+ - "\2\u032f\1\u0332\6\u032f\1\u0336\3\u032f\1\u0335\1\u0331\22\u032f"+ - "\1\0\1\u032f\1\0\44\u032f\1\u0332\1\u0337\13\u032f\54\0"+ - "\1\u0338\32\0\2\40\1\0\1\40\1\0\13\40\1\237"+ - "\11\0\10\40\1\u0339\2\0\10\40\4\0\1\40\2\0"+ - "\2\40\15\0\1\40\1\0\1\u032f\2\u0335\1\u032f\1\u0335"+ - "\1\u032f\13\u0335\1\u032f\1\0\1\u032f\1\0\1\u032f\1\u0331"+ - "\4\u032f\11\u0335\2\u032f\10\u0335\4\u032f\1\u0335\2\u032f\2\u0335"+ - "\2\u032f\1\u0332\6\u032f\1\u0336\3\u032f\1\u0335\1\u0331\22\u032f"+ - "\3\u0330\20\u032f\1\u0331\23\u032f\1\u0332\14\u032f\4\0\1\u033a"+ + "\2\40\15\0\1\40\2\0\2\u031c\1\0\1\u031c\1\0"+ + "\13\u031c\1\u0309\11\0\11\u031c\2\0\10\u031c\4\0\1\u031c"+ + "\2\0\2\u031c\15\0\1\u031c\2\0\2\40\1\0\1\u032e"+ + "\1\0\13\40\1\237\11\0\11\40\2\0\10\40\4\0"+ + "\1\40\2\0\2\40\15\0\1\40\3\0\1\u032f\1\0"+ + "\1\u032f\2\0\3\u032f\1\0\1\u032f\1\0\3\u032f\13\0"+ + "\11\u032f\2\0\10\u032f\4\0\1\u032f\2\0\2\u032f\15\0"+ + "\1\u032f\23\0\3\u030c\20\0\1\u030d\26\0\2\u030e\11\0"+ + "\2\u0320\1\0\1\u0320\1\0\13\u0320\1\u0321\3\u030c\6\0"+ + "\11\u0320\1\0\1\u0330\10\u0320\4\0\1\u0320\1\0\1\u0331"+ + "\2\u0320\5\0\2\u030e\6\0\1\u0320\3\0\1\u0320\1\0"+ + "\1\u0320\2\0\3\u0320\1\0\1\u0320\1\0\3\u0320\13\0"+ + "\11\u0320\2\0\10\u0320\4\0\1\u0320\2\0\2\u0320\15\0"+ + "\1\u0320\3\0\1\u0320\1\0\1\u0320\2\0\3\u0320\1\0"+ + "\1\u0320\1\0\3\u0320\1\0\1\u0321\11\0\11\u0320\2\0"+ + "\10\u0320\4\0\1\u0320\2\0\2\u0320\15\0\1\u0320\23\0"+ + "\3\u0323\44\0\1\u0325\114\0\1\u0332\77\0\1\u0333\15\0"+ + "\1\u0334\1\0\1\u0334\2\0\3\u0334\1\0\1\u0334\1\0"+ + "\3\u0334\1\0\1\u0335\11\0\11\u0334\2\0\10\u0334\4\0"+ + "\1\u0334\1\u0336\1\0\2\u0334\15\0\1\u0334\41\0\1\u0337"+ + "\46\0\1\40\1\u0338\1\0\1\40\1\0\13\40\1\237"+ + "\11\0\11\40\2\0\10\40\4\0\1\40\2\0\2\40"+ + "\15\0\1\40\2\0\2\40\1\0\1\40\1\0\13\40"+ + "\1\237\11\0\11\40\2\0\1\40\1\u0339\6\40\4\0"+ + "\1\40\2\0\2\40\15\0\1\40\40\0\1\u033a\46\0"+ + "\1\u033b\2\u032f\1\u033b\1\u032f\1\u033b\13\u032f\1\u033b\3\u033c"+ + "\6\u033b\11\u032f\1\u033b\1\u033d\10\u032f\4\u033b\1\u032f\2\u033b"+ + "\2\u032f\2\u033b\1\u033e\12\u033b\1\u032f\1\u033b\100\0\1\u033f"+ + "\27\0\3\u030c\47\0\2\u030e\32\0\3\u0323\20\0\1\u0324"+ + "\23\0\1\u0325\2\0\2\u0326\11\0\2\u0334\1\0\1\u0334"+ + "\1\0\13\u0334\1\u0335\3\u0323\6\0\11\u0334\1\0\1\u0340"+ + "\10\u0334\4\0\1\u0334\1\0\1\u0341\2\u0334\2\0\1\u0325"+ + "\2\0\2\u0326\6\0\1\u0334\3\0\1\u0334\1\0\1\u0334"+ + "\2\0\3\u0334\1\0\1\u0334\1\0\3\u0334\13\0\11\u0334"+ + "\2\0\10\u0334\4\0\1\u0334\2\0\2\u0334\15\0\1\u0334"+ + "\3\0\1\u0334\1\0\1\u0334\2\0\3\u0334\1\0\1\u0334"+ + "\1\0\3\u0334\1\0\1\u0335\11\0\11\u0334\2\0\10\u0334"+ + "\4\0\1\u0334\2\0\2\u0334\15\0\1\u0334\11\0\1\u0342"+ + "\76\0\2\40\1\0\1\u0343\1\0\13\40\1\237\11\0"+ + "\11\40\2\0\10\40\4\0\1\40\2\0\2\40\15\0"+ + "\1\40\35\0\1\u0319\51\0\22\u033b\1\0\1\u033b\1\0"+ + "\44\u033b\1\u033e\36\u033b\3\u033c\44\u033b\1\u033e\16\u033b\1\u0344"+ + "\1\u033b\1\u0344\2\u033b\3\u0344\1\u033b\1\u0344\1\u033b\3\u0344"+ + "\2\u033b\1\0\1\u033b\1\0\1\u033b\1\u033d\4\u033b\11\u0344"+ + "\2\u033b\10\u0344\4\u033b\1\u0344\2\u033b\2\u0344\2\u033b\1\u033e"+ + "\6\u033b\1\u0345\3\u033b\1\u0344\1\u033d\22\u033b\1\0\1\u033b"+ + "\1\0\44\u033b\1\u033e\1\u0346\13\u033b\22\0\3\u030c\20\0"+ + "\1\u0330\16\0\1\u0331\7\0\2\u030e\110\0\1\u0347\27\0"+ + "\3\u0323\44\0\1\u0325\2\0\2\u0326\64\0\1\u0348\32\0"+ + "\2\40\1\0\1\40\1\0\13\40\1\237\11\0\10\40"+ + "\1\u0349\2\0\10\40\4\0\1\40\2\0\2\40\15\0"+ + "\1\40\1\0\1\u033b\2\u0344\1\u033b\1\u0344\1\u033b\13\u0344"+ + "\1\u033b\1\0\1\u033b\1\0\1\u033b\1\u033d\4\u033b\11\u0344"+ + "\2\u033b\10\u0344\4\u033b\1\u0344\2\u033b\2\u0344\2\u033b\1\u033e"+ + "\6\u033b\1\u0345\3\u033b\1\u0344\1\u033d\22\u033b\3\u033c\20\u033b"+ + "\1\u033d\23\u033b\1\u033e\14\u033b\22\0\3\u0323\20\0\1\u0340"+ + "\16\0\1\u0341\4\0\1\u0325\2\0\2\u0326\14\0\1\u034a"+ "\102\0\2\40\1\0\1\40\1\0\13\40\1\237\11\0"+ - "\11\40\2\0\10\40\4\0\1\40\1\u033b\1\0\2\40"+ - "\15\0\1\40\23\0\3\u033a\5\0\1\u033c\137\0\1\u033d"+ - "\43\0\3\u033c\1\0\1\u033e\26\0\1\u033f\27\0\1\u0340"+ - "\31\0\1\u0341\131\0\1\u0342\101\0\1\u0343\111\0\1\u0344"+ - "\101\0\1\u0345\111\0\1\u0346\101\0\1\u0347\111\0\1\u0348"+ - "\52\0\3\u0346\32\0\1\u0349\103\0\1\u034a\56\0\1\u0346"+ - "\164\0\1\u0346"; + "\11\40\2\0\10\40\4\0\1\40\1\u034b\1\0\2\40"+ + "\15\0\1\40\23\0\3\u034a\5\0\1\u034c\137\0\1\u034d"+ + "\43\0\3\u034c\1\0\1\u034e\26\0\1\u034f\27\0\1\u0350"+ + "\31\0\1\u0351\131\0\1\u0352\101\0\1\u0353\111\0\1\u0354"+ + "\101\0\1\u0355\111\0\1\u0356\101\0\1\u0357\111\0\1\u0358"+ + "\52\0\3\u0356\32\0\1\u0359\103\0\1\u035a\56\0\1\u0356"+ + "\164\0\1\u0356"; private static int [] zzUnpackTrans() { - int [] result = new int[44450]; + int [] result = new int[45570]; int offset = 0; offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result); return result; @@ -1530,14 +1564,14 @@ public class ASTPHP5Scanner implements Scanner { "\1\11\6\0\1\11\6\0\16\1\2\0\20\1\1\0"+ "\2\1\1\11\4\0\2\11\1\1\4\0\14\1\2\0"+ "\14\1\1\0\1\1\2\11\5\0\11\1\2\0\7\1"+ - "\1\0\1\1\6\0\6\1\2\0\3\1\1\0\1\1"+ - "\1\11\10\0\3\1\2\0\3\1\6\0\3\1\1\11"+ - "\1\0\2\1\2\0\1\11\1\0\2\1\6\0\1\1"+ - "\2\0\1\1\1\0\1\1\7\0\1\11\7\0\1\11"+ + "\1\0\1\1\7\0\6\1\2\0\3\1\1\0\1\1"+ + "\1\11\12\0\3\1\2\0\3\1\12\0\3\1\1\11"+ + "\1\0\2\1\4\0\1\11\4\0\2\1\11\0\1\1"+ + "\2\0\1\1\2\0\1\1\7\0\1\11\7\0\1\11"+ "\1\0"; private static int [] zzUnpackAttribute() { - int [] result = new int[842]; + int [] result = new int[858]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -3454,7 +3488,7 @@ public class ASTPHP5Scanner implements Scanner { return createSymbol(ASTPHP5Symbols.EOF); } } - case 843: break; + case 859: break; default: { return createSymbol(ASTPHP5Symbols.EOF); } diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/parser/PHPVarCommentParser.java b/php/php.editor/src/org/netbeans/modules/php/editor/parser/PHPVarCommentParser.java index 3ed38005b0..185a09f070 100644 --- a/php/php.editor/src/org/netbeans/modules/php/editor/parser/PHPVarCommentParser.java +++ b/php/php.editor/src/org/netbeans/modules/php/editor/parser/PHPVarCommentParser.java @@ -20,6 +20,7 @@ package org.netbeans.modules.php.editor.parser; import java.util.ArrayList; +import org.netbeans.modules.php.editor.model.impl.Type; import org.netbeans.modules.php.editor.parser.astnodes.PHPDocNode; import org.netbeans.modules.php.editor.parser.astnodes.PHPDocStaticAccessType; import org.netbeans.modules.php.editor.parser.astnodes.PHPDocTag; @@ -60,7 +61,7 @@ public class PHPVarCommentParser { if (isExpectedPartsLength(isPHPDoc, parts) && parts[variableIndex].charAt(0) == '$') { //NOI18N //counting types - String[] types = parts[typeIndex].split("[|]"); //NOI18N + String[] types = Type.splitTypes(parts[typeIndex]); int typePosition = startOffset + comment.indexOf(parts[typeIndex]); ArrayList<PHPDocTypeNode> typeNodes = new ArrayList<>(); for (String type: types) { diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php new file mode 100644 index 0000000000..fb7feb5048 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php @@ -0,0 +1,215 @@ +<?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 ClassX { + const IMPLICIT_X_CONSTANT = "implicit constant"; + public const PUBLIC_X_CONSTANT = "public constant"; + private const PRIVATE_X_CONSTANT = "private constant"; + protected const PROTECTED_X_CONSTANT = "protected constant"; + public (ClassY&ClassZ)|ClassX $publicXField; + private (ClassX&ClassZ)|(ClassY&ClassZ)|ClassX $privateXField; + protected ClassX|(ClassY&ClassZ)|ClassY $protectedXField; + public static (ClassY&ClassZ)|ClassX $publicStaticXField; + private static (ClassY&ClassZ)|ClassY $privateStaticXField; + protected static (ClassY&ClassZ)|ClassX|ClassY $protectedStaticXField; + + public function publicXMethod(): ClassX|(ClassY&ClassZ) {} + private function privateXMethod(): (ClassY&ClassZ)|ClassX {} + protected function protectedXMethod(): (ClassY&ClassZ)|(ClassX&ClassZ) {} + public static function publicStaticXMethod(): (ClassY&ClassZ)|ClassX {} + private static function privateStaticXMethod(): ClassX|(ClassY&ClassZ){} + protected static function protectedStaticXMethod(): (ClassY&ClassZ)|ClassX {} +} + +class ClassY { + const IMPLICIT_Y_CONSTANT = "implicit constant"; + public const PUBLIC_Y_CONSTANT = "public constant"; + private const PRIVATE_Y_CONSTANT = "private constant"; + protected const PROTECTED_Y_CONSTANT = "protected constant"; + public (ClassY&ClassZ)|ClassX $publicYField; + private (ClassX&ClassZ)|(ClassY&ClassZ)|ClassX $privateYField; + protected ClassX|(ClassY&ClassZ)|ClassY $protectedYField; + public static (ClassY&ClassZ)|ClassX $publicStaticYField; + private static (ClassY&ClassZ)|ClassY $privateStaticYField; + protected static (ClassY&ClassZ)|ClassX|ClassY $protectedStaticYField; + + public function publicYMethod(): ClassX|(ClassY&ClassX) {} + private function privateYMethod(): (ClassY&ClassZ)|ClassX {} + protected function protectedYMethod(): (ClassY&ClassZ)|(ClassX&ClassZ) {} + public static function publicStaticYMethod(): (ClassY&ClassZ)|ClassX {} + private static function privateStaticYMethod(): ClassX|(ClassY&ClassZ){} + protected static function protectedStaticYMethod(): (ClassY&ClassZ)|ClassX {} +} + +class ClassZ { + const IMPLICIT_Z_CONSTANT = "implicit constant"; + public const PUBLIC_Z_CONSTANT = "public constant"; + private const PRIVATE_Z_CONSTANT = "private constant"; + protected const PROTECTED_Z_CONSTANT = "protected constant"; + public (ClassY&ClassZ)|ClassX $publicZField; + private (ClassX&ClassZ)|(ClassY&ClassZ)|ClassX $privateZField; + protected ClassX|(ClassY&ClassZ)|ClassY $protectedZField; + public static (ClassY&ClassZ)|ClassX $publicStaticZField; + private static (ClassY&ClassZ)|ClassY $privateStaticZField; + protected static (ClassY&ClassZ)|ClassX|ClassY $protectedStaticZField; + + public function publicZMethod(): ClassX|(ClassY&ClassZ)|ClassY {} + private function privateZMethod(): (ClassY&ClassZ)|ClassX {} + protected function protectedZMethod(): (ClassY&ClassZ)|(ClassX&ClassZ) {} + public static function publicStaticZMethod(): (ClassX&ClassZ)|(ClassY&ClassZ)|ClassX {} + private static function privateStaticZMethod(): ClassX|(ClassY&ClassZ){} + protected static function protectedStaticZMethod(): (ClassY&ClassZ)|ClassX {} +} + +trait TestTrait { + const IMPLICIT_TRAIT_CONSTANT = "implicit constant"; + public const PUBLIC_TRAIT_CONSTANT = "public constant"; + private const PRIVATE_TRAIT_CONSTANT = "private constant"; + protected const PROTECTED_TRAIT_CONSTANT = "protected constant"; + public (ClassX&ClassY)|ClassY $publicTraitField; + private (ClassX&ClassY)|(ClassY&ClassZ) $privateTraitField; + protected ClassY|(ClassX&ClassY) $protectedTraitField; + public static ClassY|(ClassX&ClassY)|ClassX $publicStaticTraitField; + private static (ClassX&ClassZ)|ClassY $privateStaticTraitField; + protected static (ClassX&ClassY&ClassZ)|ClassX $protectedStaticTraitField; + + public function publicTraitMethod(): (ClassX&ClassY)|ClassZ {} + private function privateTraitMethod(): ClassZ|(ClassX&ClassY)|null {} + protected function protectedTraitMethod(): (ClassX&ClassY)|ClassZ {} + public static function publicStaticTraitMethod(): (ClassX&ClassY)|(ClassX&ClassY&ClassZ) {} + private static function privateStaticTraitMethod(): ClassX|(ClassX&ClassY)|ClassZ {} + protected static function protectedStaticTraitMethod(): ClassZ|(ClassX&ClassY) {} +} + +function testFunctionReturnType(): (ClassX&ClassY)|ClassZ { +} + +interface TestInterface { + + public function paramType(ClassX|(ClassY&ClassZ) $test): void; + public function returnType(): ClassX|(ClassY&ClassZ); + +} + +/** + * @method ClassX|(ClassX&ClassZ) methodTag() Description + * @property (ClassX&ClassY)|ClassY $propertyTag Description + */ +class TestClass implements TestInterface { + use TestTrait; + /** + * @var ClassX|(ClassX&ClassY) + */ + public $publicPhpdocField; + public (ClassX&ClassZ)|(ClassY&ClassZ) $publicFiled; + private ClassX|(ClassY&ClassZ) $privateFiled; + protected ClassZ|ClassX|(ClassY&ClassZ) $protectedFiled; + /** + * @var (ClassX&ClassY)|ClassZ + */ + public static $publicPhpdocStaticField; + public static (ClassX&ClassZ)|ClassZ $publicStaticField; + private static ClassZ|(ClassZ&ClassY) $privateStaticField; + protected static (ClassX&ClassZ)|ClassZ $protectedStaticField; + + public function __construct( + public ClassZ|(ClassZ&ClassY) $publicPromotedFiled, + private null|(ClassZ&ClassX) $privatePromotedFiled, + protected ClassZ|(ClassZ&ClassY)|ClassX $protectedPromotedFiled, + ) { + } + + public function paramType(ClassX|(ClassY&ClassZ) $param1): void { + } + + /** + * @return (ClassX&ClassZ)|(ClassX&ClassY) Description + */ + public function phpdocReturnType() { + } + + public function returnType(): ClassX|(ClassY&ClassZ) { + } + + public static function publicStaticMethod(): (ClassX&ClassZ)|(ClassX&ClassY) { + } + + public function test(): void { + // method return types + $this->returnType()->publicXField; // ClassX|(ClassY&ClassZ) + $this->returnType()->publicXMethod()->publicYField; // ClassX|(ClassY&ClassZ) + $this->returnType()?->publicYMethod()?->publicXField; // ClassX|(ClassY&ClassX) + $this->privateTraitMethod()->publicXField; // ClassZ|(ClassX&ClassY)|null + $this->protectedTraitMethod()->publicYMethod()->publicXField; // ClassX|(ClassY&ClassX) + $this->phpdocReturnType()->publicXField; // (ClassX&ClassZ)|(ClassX&ClassY) + $this->returnType()::IMPLICIT_X_CONSTANT; // ClassX|(ClassY&ClassZ) + $this->returnType()::publicStaticXMethod()::$publicStaticXField; // (ClassY&ClassZ)|ClassX + $this->returnType()::publicStaticXMethod()->publicXField; // (ClassY&ClassZ)|ClassX + $this->privateTraitMethod()::publicStaticXMethod(); // ClassZ|(ClassX&ClassY)|null + $this->methodTag()->publicXMethod(); // ClassX|(ClassX&ClassZ) + self::publicStaticMethod()::IMPLICIT_X_CONSTANT; // (ClassX&ClassZ)|(ClassX&ClassY) + self::publicStaticMethod()::publicStaticXMethod()::publicStaticYMethod(); // (ClassY&ClassZ)|ClassX + self::publicStaticMethod()::publicStaticXMethod()->publicXMethod(); // (ClassY&ClassZ)|ClassX + static::publicStaticMethod()->publicZMethod(); // (ClassX&ClassZ)|(ClassX&ClassY) + static::publicStaticMethod()->publicZMethod()::$publicStaticXField; // ClassX|(ClassY&ClassZ)|ClassY + static::publicStaticMethod()->publicZMethod()->publicYMethod(); // ClassX|(ClassY&ClassZ)|ClassY + static::publicStaticTraitMethod()->publicXMethod()->publicXField; // ClassX|(ClassY&ClassZ) + // field types + $this->privateFiled->publicXMethod(); // ClassX|(ClassY&ClassZ) + $this->publicFiled->publicXMethod()->publicYField; // ClassX|(ClassY&ClassZ) + $this->protectedFiled::PUBLIC_Z_CONSTANT; // ClassZ|ClassX|(ClassY&ClassZ) + $this->publicPhpdocField->publicXMethod(); // ClassX|(ClassX&ClassY) + $this->publicPhpdocField::$publicStaticXField; // ClassX|(ClassX&ClassY) + $this->protectedTraitField->publicXMethod(); // ClassY|(ClassX&ClassY) + $this->privatePromotedFiled->publicYMethod(); // null|(ClassZ&ClassX) + $this->propertyTag->publicYMethod(); // (ClassX&ClassY)|ClassY + static::$privateStaticField::IMPLICIT_Y_CONSTANT; // ClassZ|(ClassZ&ClassY) + static::$privateStaticField?->publicStaticZMethod(); // ClassZ|(ClassZ&ClassY) + self::$publicPhpdocStaticField::$publicStaticXField; // (ClassX&ClassY)|ClassZ + self::$publicPhpdocStaticField->publicZField; // (ClassX&ClassY)|ClassZ + self::$publicStaticTraitField->publicXMethod(); // ClassY|(ClassX&ClassY)|ClassX + } +} + +testFunctionReturnType()->publicXField; // (ClassX&ClassY)|ClassZ +testFunctionReturnType()::PUBLIC_X_CONSTANT; // (ClassX&ClassY)|ClassZ + +$testFunctionReturnType = testFunctionReturnType(); +$testFunctionReturnType->publicXMethod(); // (ClassX&ClassY)|ClassZ +$testFunctionReturnType::IMPLICIT_Z_CONSTANT(); // (ClassX&ClassY)|ClassZ + +/** @var (ClassX&ClassY)|null $vardoc1 */ +$vardoc1->publicXField; // (ClassX&ClassY)|null +$vardoc1::$publicStaticXField; // (ClassX&ClassY)|null +/** @var ClassZ|(ClassX&ClassY)|null $vardoc2 */ +$vardoc2->publicXField; // ClassZ|(ClassX&ClassY)|null +$vardoc2::$publicStaticXField; // ClassZ|(ClassX&ClassY)|null +/** @var ClassZ|(ClassX&ClassY)|(ClassX&ClassY&ClassZ) $vardoc3 */ +$vardoc3->publicXField; // ClassZ|(ClassX&ClassY)|(ClassX&ClassY&ClassZ) +$vardoc3::$publicStaticXField; // ClassZ|(ClassX&ClassY)|(ClassX&ClassY&ClassZ) + +/* @var $vardoc4 (ClassX&ClassY)|null */ +$vardoc4->publicXField; // (ClassX&ClassY)|null +$vardoc4::$publicStaticXField; // (ClassX&ClassY)|null +/* @var $vardoc5 ClassZ|(ClassX&ClassY)|null */ +$vardoc5->publicXField; // ClassZ|(ClassX&ClassY)|null +$vardoc5::$publicStaticXField; // ClassZ|(ClassX&ClassY)|null +/* @var $vardoc6 ClassZ|(ClassX&ClassY)|(ClassX&ClassY&ClassZ) */ +$vardoc6->publicXField; // ClassZ|(ClassX&ClassY)|(ClassX&ClassY&ClassZ) +$vardoc6::$publicStaticXField; // ClassZ|(ClassX&ClassY)|(ClassX&ClassY&ClassZ) diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType01.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType01.completion new file mode 100644 index 0000000000..4bf26c374e --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType01.completion @@ -0,0 +1,12 @@ +Code completion result for source line: +$this->privateFiled->|publicXMethod(); // ClassX|(ClassY&ClassZ) +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicYMethod() [PUBLIC] ClassY +METHOD publicZMethod() [PUBLIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicZ [PUBLIC] ClassZ diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType02a.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType02a.completion new file mode 100644 index 0000000000..c359cfc285 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType02a.completion @@ -0,0 +1,12 @@ +Code completion result for source line: +$this->publicFiled->publicXMethod()->|publicYField; // ClassX|(ClassY&ClassZ) +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicYMethod() [PUBLIC] ClassY +METHOD publicZMethod() [PUBLIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicZ [PUBLIC] ClassZ diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType02b.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType02b.completion new file mode 100644 index 0000000000..5a3fc4e6de --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType02b.completion @@ -0,0 +1,5 @@ +Code completion result for source line: +$this->publicFiled->publicXMethod()->publicY|Field; // ClassX|(ClassY&ClassZ) +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicYMethod() [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType03.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType03.completion new file mode 100644 index 0000000000..bdc7fcc4b7 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType03.completion @@ -0,0 +1,18 @@ +Code completion result for source line: +$this->protectedFiled::|PUBLIC_Z_CONSTANT; // ClassZ|ClassX|(ClassY&ClassZ) +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassZ +CONSTANT IMPLICIT_X_CONSTANT "implicit [PUBLIC] ClassX +CONSTANT IMPLICIT_Y_CONSTANT "implicit [PUBLIC] ClassY +CONSTANT IMPLICIT_Z_CONSTANT "implicit [PUBLIC] ClassZ +CONSTANT PUBLIC_X_CONSTANT "public cons [PUBLIC] ClassX +CONSTANT PUBLIC_Y_CONSTANT "public cons [PUBLIC] ClassY +CONSTANT PUBLIC_Z_CONSTANT "public cons [PUBLIC] ClassZ +CONSTANT class \ClassX [PUBLIC] Magic Constant +CONSTANT class \ClassY [PUBLIC] Magic Constant +CONSTANT class \ClassZ [PUBLIC] Magic Constant diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType04.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType04.completion new file mode 100644 index 0000000000..ea758c0dab --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType04.completion @@ -0,0 +1,9 @@ +Code completion result for source line: +$this->publicPhpdocField->|publicXMethod(); // ClassX|(ClassX&ClassY) +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicYMethod() [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType05.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType05.completion new file mode 100644 index 0000000000..3e46b7f0dd --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType05.completion @@ -0,0 +1,13 @@ +Code completion result for source line: +$this->publicPhpdocField::|$publicStaticXField; // ClassX|(ClassX&ClassY) +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassY +CONSTANT IMPLICIT_X_CONSTANT "implicit [PUBLIC] ClassX +CONSTANT IMPLICIT_Y_CONSTANT "implicit [PUBLIC] ClassY +CONSTANT PUBLIC_X_CONSTANT "public cons [PUBLIC] ClassX +CONSTANT PUBLIC_Y_CONSTANT "public cons [PUBLIC] ClassY +CONSTANT class \ClassX [PUBLIC] Magic Constant +CONSTANT class \ClassY [PUBLIC] Magic Constant diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType06.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType06.completion new file mode 100644 index 0000000000..83c0b4be4e --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType06.completion @@ -0,0 +1,9 @@ +Code completion result for source line: +$this->protectedTraitField->|publicXMethod(); // ClassY|(ClassX&ClassY) +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicYMethod() [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType07.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType07.completion new file mode 100644 index 0000000000..13f946288a --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType07.completion @@ -0,0 +1,9 @@ +Code completion result for source line: +$this->privatePromotedFiled->|publicYMethod(); // null|(ClassZ&ClassX) +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticZMethod() [STATIC] ClassZ +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicZMethod() [PUBLIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicZ [PUBLIC] ClassZ diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType08.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType08.completion new file mode 100644 index 0000000000..a4b8132f7a --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType08.completion @@ -0,0 +1,9 @@ +Code completion result for source line: +$this->propertyTag->|publicYMethod(); // (ClassX&ClassY)|ClassY +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicYMethod() [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType09.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType09.completion new file mode 100644 index 0000000000..62e2fb0e01 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType09.completion @@ -0,0 +1,13 @@ +Code completion result for source line: +static::$privateStaticField::|IMPLICIT_Y_CONSTANT; // ClassZ|(ClassZ&ClassY) +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassZ +CONSTANT IMPLICIT_Y_CONSTANT "implicit [PUBLIC] ClassY +CONSTANT IMPLICIT_Z_CONSTANT "implicit [PUBLIC] ClassZ +CONSTANT PUBLIC_Y_CONSTANT "public cons [PUBLIC] ClassY +CONSTANT PUBLIC_Z_CONSTANT "public cons [PUBLIC] ClassZ +CONSTANT class \ClassY [PUBLIC] Magic Constant +CONSTANT class \ClassZ [PUBLIC] Magic Constant diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType10a.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType10a.completion new file mode 100644 index 0000000000..d862c16ef6 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType10a.completion @@ -0,0 +1,9 @@ +Code completion result for source line: +static::$privateStaticField?->|publicStaticZMethod(); // ClassZ|(ClassZ&ClassY) +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +METHOD publicYMethod() [PUBLIC] ClassY +METHOD publicZMethod() [PUBLIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicZ [PUBLIC] ClassZ diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType10b.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType10b.completion new file mode 100644 index 0000000000..340b0efb04 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType10b.completion @@ -0,0 +1,4 @@ +Code completion result for source line: +static::$privateStaticField?->publicStaticZ|Method(); // ClassZ|(ClassZ&ClassY) +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticZMethod() [STATIC] ClassZ diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType11.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType11.completion new file mode 100644 index 0000000000..3dc96561cf --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType11.completion @@ -0,0 +1,18 @@ +Code completion result for source line: +self::$publicPhpdocStaticField::|$publicStaticXField; // (ClassX&ClassY)|ClassZ +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassZ +CONSTANT IMPLICIT_X_CONSTANT "implicit [PUBLIC] ClassX +CONSTANT IMPLICIT_Y_CONSTANT "implicit [PUBLIC] ClassY +CONSTANT IMPLICIT_Z_CONSTANT "implicit [PUBLIC] ClassZ +CONSTANT PUBLIC_X_CONSTANT "public cons [PUBLIC] ClassX +CONSTANT PUBLIC_Y_CONSTANT "public cons [PUBLIC] ClassY +CONSTANT PUBLIC_Z_CONSTANT "public cons [PUBLIC] ClassZ +CONSTANT class \ClassX [PUBLIC] Magic Constant +CONSTANT class \ClassY [PUBLIC] Magic Constant +CONSTANT class \ClassZ [PUBLIC] Magic Constant diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType12.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType12.completion new file mode 100644 index 0000000000..09a4091451 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType12.completion @@ -0,0 +1,12 @@ +Code completion result for source line: +self::$publicPhpdocStaticField->|publicZField; // (ClassX&ClassY)|ClassZ +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicYMethod() [PUBLIC] ClassY +METHOD publicZMethod() [PUBLIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicZ [PUBLIC] ClassZ diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType13.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType13.completion new file mode 100644 index 0000000000..aa1ad3a6f4 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FieldType13.completion @@ -0,0 +1,9 @@ +Code completion result for source line: +self::$publicStaticTraitField->|publicXMethod(); // ClassY|(ClassX&ClassY)|ClassX +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicYMethod() [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FunctionReturnType01.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FunctionReturnType01.completion new file mode 100644 index 0000000000..e83c10f70f --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FunctionReturnType01.completion @@ -0,0 +1,12 @@ +Code completion result for source line: +testFunctionReturnType()->|publicXField; // (ClassX&ClassY)|ClassZ +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicYMethod() [PUBLIC] ClassY +METHOD publicZMethod() [PUBLIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicZ [PUBLIC] ClassZ diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FunctionReturnType02.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FunctionReturnType02.completion new file mode 100644 index 0000000000..e4cad00dd1 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FunctionReturnType02.completion @@ -0,0 +1,18 @@ +Code completion result for source line: +testFunctionReturnType()::|PUBLIC_X_CONSTANT; // (ClassX&ClassY)|ClassZ +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassZ +CONSTANT IMPLICIT_X_CONSTANT "implicit [PUBLIC] ClassX +CONSTANT IMPLICIT_Y_CONSTANT "implicit [PUBLIC] ClassY +CONSTANT IMPLICIT_Z_CONSTANT "implicit [PUBLIC] ClassZ +CONSTANT PUBLIC_X_CONSTANT "public cons [PUBLIC] ClassX +CONSTANT PUBLIC_Y_CONSTANT "public cons [PUBLIC] ClassY +CONSTANT PUBLIC_Z_CONSTANT "public cons [PUBLIC] ClassZ +CONSTANT class \ClassX [PUBLIC] Magic Constant +CONSTANT class \ClassY [PUBLIC] Magic Constant +CONSTANT class \ClassZ [PUBLIC] Magic Constant diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FunctionReturnType03.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FunctionReturnType03.completion new file mode 100644 index 0000000000..b2ddef96a9 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FunctionReturnType03.completion @@ -0,0 +1,12 @@ +Code completion result for source line: +$testFunctionReturnType->|publicXMethod(); // (ClassX&ClassY)|ClassZ +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicYMethod() [PUBLIC] ClassY +METHOD publicZMethod() [PUBLIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicZ [PUBLIC] ClassZ diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FunctionReturnType04a.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FunctionReturnType04a.completion new file mode 100644 index 0000000000..47d825aa6b --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FunctionReturnType04a.completion @@ -0,0 +1,18 @@ +Code completion result for source line: +$testFunctionReturnType::|IMPLICIT_Z_CONSTANT(); // (ClassX&ClassY)|ClassZ +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassZ +CONSTANT IMPLICIT_X_CONSTANT "implicit [PUBLIC] ClassX +CONSTANT IMPLICIT_Y_CONSTANT "implicit [PUBLIC] ClassY +CONSTANT IMPLICIT_Z_CONSTANT "implicit [PUBLIC] ClassZ +CONSTANT PUBLIC_X_CONSTANT "public cons [PUBLIC] ClassX +CONSTANT PUBLIC_Y_CONSTANT "public cons [PUBLIC] ClassY +CONSTANT PUBLIC_Z_CONSTANT "public cons [PUBLIC] ClassZ +CONSTANT class \ClassX [PUBLIC] Magic Constant +CONSTANT class \ClassY [PUBLIC] Magic Constant +CONSTANT class \ClassZ [PUBLIC] Magic Constant diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FunctionReturnType04b.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FunctionReturnType04b.completion new file mode 100644 index 0000000000..17eae8a03f --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_FunctionReturnType04b.completion @@ -0,0 +1,4 @@ +Code completion result for source line: +$testFunctionReturnType::IMPLICIT_Z_|CONSTANT(); // (ClassX&ClassY)|ClassZ +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +CONSTANT IMPLICIT_Z_CONSTANT "implicit [PUBLIC] ClassZ diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType01.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType01.completion new file mode 100644 index 0000000000..77604cc938 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType01.completion @@ -0,0 +1,12 @@ +Code completion result for source line: +$this->returnType()->|publicXField; // ClassX|(ClassY&ClassZ) +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicYMethod() [PUBLIC] ClassY +METHOD publicZMethod() [PUBLIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicZ [PUBLIC] ClassZ diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType02a.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType02a.completion new file mode 100644 index 0000000000..9d458314ee --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType02a.completion @@ -0,0 +1,12 @@ +Code completion result for source line: +$this->returnType()->publicXMethod()->|publicYField; // ClassX|(ClassY&ClassZ) +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicYMethod() [PUBLIC] ClassY +METHOD publicZMethod() [PUBLIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicZ [PUBLIC] ClassZ diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType02b.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType02b.completion new file mode 100644 index 0000000000..822d23bd42 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType02b.completion @@ -0,0 +1,5 @@ +Code completion result for source line: +$this->returnType()->publicXMethod()->publicY|Field; // ClassX|(ClassY&ClassZ) +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicYMethod() [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType03.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType03.completion new file mode 100644 index 0000000000..e2c2e8a1bf --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType03.completion @@ -0,0 +1,9 @@ +Code completion result for source line: +$this->returnType()?->publicYMethod()?->|publicXField; // ClassX|(ClassY&ClassX) +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicYMethod() [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType04.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType04.completion new file mode 100644 index 0000000000..30c07458a0 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType04.completion @@ -0,0 +1,12 @@ +Code completion result for source line: +$this->privateTraitMethod()->|publicXField; // ClassZ|(ClassX&ClassY)|null +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicYMethod() [PUBLIC] ClassY +METHOD publicZMethod() [PUBLIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicZ [PUBLIC] ClassZ diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType05.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType05.completion new file mode 100644 index 0000000000..02a5bd1408 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType05.completion @@ -0,0 +1,9 @@ +Code completion result for source line: +$this->protectedTraitMethod()->publicYMethod()->|publicXField; // ClassX|(ClassY&ClassX) +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicYMethod() [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType06.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType06.completion new file mode 100644 index 0000000000..e33d72546d --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType06.completion @@ -0,0 +1,12 @@ +Code completion result for source line: +$this->phpdocReturnType()->|publicXField; // (ClassX&ClassZ)|(ClassX&ClassY) +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicYMethod() [PUBLIC] ClassY +METHOD publicZMethod() [PUBLIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicZ [PUBLIC] ClassZ diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType07.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType07.completion new file mode 100644 index 0000000000..6ad5fced4f --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType07.completion @@ -0,0 +1,18 @@ +Code completion result for source line: +$this->returnType()::|IMPLICIT_X_CONSTANT; // ClassX|(ClassY&ClassZ) +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassZ +CONSTANT IMPLICIT_X_CONSTANT "implicit [PUBLIC] ClassX +CONSTANT IMPLICIT_Y_CONSTANT "implicit [PUBLIC] ClassY +CONSTANT IMPLICIT_Z_CONSTANT "implicit [PUBLIC] ClassZ +CONSTANT PUBLIC_X_CONSTANT "public cons [PUBLIC] ClassX +CONSTANT PUBLIC_Y_CONSTANT "public cons [PUBLIC] ClassY +CONSTANT PUBLIC_Z_CONSTANT "public cons [PUBLIC] ClassZ +CONSTANT class \ClassX [PUBLIC] Magic Constant +CONSTANT class \ClassY [PUBLIC] Magic Constant +CONSTANT class \ClassZ [PUBLIC] Magic Constant diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType08.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType08.completion new file mode 100644 index 0000000000..125b571a9c --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType08.completion @@ -0,0 +1,18 @@ +Code completion result for source line: +$this->returnType()::publicStaticXMethod()::|$publicStaticXField; // (ClassY&ClassZ)|ClassX +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassZ +CONSTANT IMPLICIT_X_CONSTANT "implicit [PUBLIC] ClassX +CONSTANT IMPLICIT_Y_CONSTANT "implicit [PUBLIC] ClassY +CONSTANT IMPLICIT_Z_CONSTANT "implicit [PUBLIC] ClassZ +CONSTANT PUBLIC_X_CONSTANT "public cons [PUBLIC] ClassX +CONSTANT PUBLIC_Y_CONSTANT "public cons [PUBLIC] ClassY +CONSTANT PUBLIC_Z_CONSTANT "public cons [PUBLIC] ClassZ +CONSTANT class \ClassX [PUBLIC] Magic Constant +CONSTANT class \ClassY [PUBLIC] Magic Constant +CONSTANT class \ClassZ [PUBLIC] Magic Constant diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType09a.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType09a.completion new file mode 100644 index 0000000000..669848745a --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType09a.completion @@ -0,0 +1,12 @@ +Code completion result for source line: +$this->returnType()::publicStaticXMethod()->|publicXField; // (ClassY&ClassZ)|ClassX +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicYMethod() [PUBLIC] ClassY +METHOD publicZMethod() [PUBLIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicZ [PUBLIC] ClassZ diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType09b.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType09b.completion new file mode 100644 index 0000000000..d9b06a75f9 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType09b.completion @@ -0,0 +1,4 @@ +Code completion result for source line: +$this->returnType()::publicStaticXMethod()->publicXField|; // (ClassY&ClassZ)|ClassX +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType10.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType10.completion new file mode 100644 index 0000000000..1f63e22306 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType10.completion @@ -0,0 +1,18 @@ +Code completion result for source line: +$this->privateTraitMethod()::|publicStaticXMethod(); // ClassZ|(ClassX&ClassY)|null +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassZ +CONSTANT IMPLICIT_X_CONSTANT "implicit [PUBLIC] ClassX +CONSTANT IMPLICIT_Y_CONSTANT "implicit [PUBLIC] ClassY +CONSTANT IMPLICIT_Z_CONSTANT "implicit [PUBLIC] ClassZ +CONSTANT PUBLIC_X_CONSTANT "public cons [PUBLIC] ClassX +CONSTANT PUBLIC_Y_CONSTANT "public cons [PUBLIC] ClassY +CONSTANT PUBLIC_Z_CONSTANT "public cons [PUBLIC] ClassZ +CONSTANT class \ClassX [PUBLIC] Magic Constant +CONSTANT class \ClassY [PUBLIC] Magic Constant +CONSTANT class \ClassZ [PUBLIC] Magic Constant diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType11.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType11.completion new file mode 100644 index 0000000000..3e23caca0e --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType11.completion @@ -0,0 +1,9 @@ +Code completion result for source line: +$this->methodTag()->|publicXMethod(); // ClassX|(ClassX&ClassZ) +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticZMethod() [STATIC] ClassZ +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicZMethod() [PUBLIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicZ [PUBLIC] ClassZ diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType12.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType12.completion new file mode 100644 index 0000000000..7f27f9ee9f --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType12.completion @@ -0,0 +1,18 @@ +Code completion result for source line: +self::publicStaticMethod()::|IMPLICIT_X_CONSTANT; // (ClassX&ClassZ)|(ClassX&ClassY) +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassZ +CONSTANT IMPLICIT_X_CONSTANT "implicit [PUBLIC] ClassX +CONSTANT IMPLICIT_Y_CONSTANT "implicit [PUBLIC] ClassY +CONSTANT IMPLICIT_Z_CONSTANT "implicit [PUBLIC] ClassZ +CONSTANT PUBLIC_X_CONSTANT "public cons [PUBLIC] ClassX +CONSTANT PUBLIC_Y_CONSTANT "public cons [PUBLIC] ClassY +CONSTANT PUBLIC_Z_CONSTANT "public cons [PUBLIC] ClassZ +CONSTANT class \ClassX [PUBLIC] Magic Constant +CONSTANT class \ClassY [PUBLIC] Magic Constant +CONSTANT class \ClassZ [PUBLIC] Magic Constant diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType13a.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType13a.completion new file mode 100644 index 0000000000..fa64616f50 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType13a.completion @@ -0,0 +1,18 @@ +Code completion result for source line: +self::publicStaticMethod()::publicStaticXMethod()::|publicStaticYMethod(); // (ClassY&ClassZ)|ClassX +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassZ +CONSTANT IMPLICIT_X_CONSTANT "implicit [PUBLIC] ClassX +CONSTANT IMPLICIT_Y_CONSTANT "implicit [PUBLIC] ClassY +CONSTANT IMPLICIT_Z_CONSTANT "implicit [PUBLIC] ClassZ +CONSTANT PUBLIC_X_CONSTANT "public cons [PUBLIC] ClassX +CONSTANT PUBLIC_Y_CONSTANT "public cons [PUBLIC] ClassY +CONSTANT PUBLIC_Z_CONSTANT "public cons [PUBLIC] ClassZ +CONSTANT class \ClassX [PUBLIC] Magic Constant +CONSTANT class \ClassY [PUBLIC] Magic Constant +CONSTANT class \ClassZ [PUBLIC] Magic Constant diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType13b.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType13b.completion new file mode 100644 index 0000000000..a6278f66aa --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType13b.completion @@ -0,0 +1,4 @@ +Code completion result for source line: +self::publicStaticMethod()::publicStaticXMethod()::publicStaticYM|ethod(); // (ClassY&ClassZ)|ClassX +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticYMethod() [STATIC] ClassY diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType14.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType14.completion new file mode 100644 index 0000000000..6648e11878 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType14.completion @@ -0,0 +1,12 @@ +Code completion result for source line: +self::publicStaticMethod()::publicStaticXMethod()->|publicXMethod(); // (ClassY&ClassZ)|ClassX +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicYMethod() [PUBLIC] ClassY +METHOD publicZMethod() [PUBLIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicZ [PUBLIC] ClassZ diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType15.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType15.completion new file mode 100644 index 0000000000..06ec5a212d --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType15.completion @@ -0,0 +1,12 @@ +Code completion result for source line: +static::publicStaticMethod()->|publicZMethod(); // (ClassX&ClassZ)|(ClassX&ClassY) +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicYMethod() [PUBLIC] ClassY +METHOD publicZMethod() [PUBLIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicZ [PUBLIC] ClassZ diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType16.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType16.completion new file mode 100644 index 0000000000..8927f5bf55 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType16.completion @@ -0,0 +1,18 @@ +Code completion result for source line: +static::publicStaticMethod()->publicZMethod()::|$publicStaticXField; // ClassX|(ClassY&ClassZ)|ClassY +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassZ +CONSTANT IMPLICIT_X_CONSTANT "implicit [PUBLIC] ClassX +CONSTANT IMPLICIT_Y_CONSTANT "implicit [PUBLIC] ClassY +CONSTANT IMPLICIT_Z_CONSTANT "implicit [PUBLIC] ClassZ +CONSTANT PUBLIC_X_CONSTANT "public cons [PUBLIC] ClassX +CONSTANT PUBLIC_Y_CONSTANT "public cons [PUBLIC] ClassY +CONSTANT PUBLIC_Z_CONSTANT "public cons [PUBLIC] ClassZ +CONSTANT class \ClassX [PUBLIC] Magic Constant +CONSTANT class \ClassY [PUBLIC] Magic Constant +CONSTANT class \ClassZ [PUBLIC] Magic Constant diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType17.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType17.completion new file mode 100644 index 0000000000..b95fe4bd24 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType17.completion @@ -0,0 +1,12 @@ +Code completion result for source line: +static::publicStaticMethod()->publicZMethod()->|publicYMethod(); // ClassX|(ClassY&ClassZ)|ClassY +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicYMethod() [PUBLIC] ClassY +METHOD publicZMethod() [PUBLIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicZ [PUBLIC] ClassZ diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType18.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType18.completion new file mode 100644 index 0000000000..086280c2d0 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_MethodReturnType18.completion @@ -0,0 +1,12 @@ +Code completion result for source line: +static::publicStaticTraitMethod()->publicXMethod()->|publicXField; // ClassX|(ClassY&ClassZ) +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicYMethod() [PUBLIC] ClassY +METHOD publicZMethod() [PUBLIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicZ [PUBLIC] ClassZ diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType01a.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType01a.completion new file mode 100644 index 0000000000..ca1b755887 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType01a.completion @@ -0,0 +1,9 @@ +Code completion result for source line: +$vardoc1->|publicXField; // (ClassX&ClassY)|null +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicYMethod() [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType01b.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType01b.completion new file mode 100644 index 0000000000..b88839cbaf --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType01b.completion @@ -0,0 +1,13 @@ +Code completion result for source line: +$vardoc1::|$publicStaticXField; // (ClassX&ClassY)|null +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassY +CONSTANT IMPLICIT_X_CONSTANT "implicit [PUBLIC] ClassX +CONSTANT IMPLICIT_Y_CONSTANT "implicit [PUBLIC] ClassY +CONSTANT PUBLIC_X_CONSTANT "public cons [PUBLIC] ClassX +CONSTANT PUBLIC_Y_CONSTANT "public cons [PUBLIC] ClassY +CONSTANT class \ClassX [PUBLIC] Magic Constant +CONSTANT class \ClassY [PUBLIC] Magic Constant diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType02a.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType02a.completion new file mode 100644 index 0000000000..e9e3755ed4 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType02a.completion @@ -0,0 +1,12 @@ +Code completion result for source line: +$vardoc2->|publicXField; // ClassZ|(ClassX&ClassY)|null +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicYMethod() [PUBLIC] ClassY +METHOD publicZMethod() [PUBLIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicZ [PUBLIC] ClassZ diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType02b.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType02b.completion new file mode 100644 index 0000000000..320d0e345c --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType02b.completion @@ -0,0 +1,18 @@ +Code completion result for source line: +$vardoc2::|$publicStaticXField; // ClassZ|(ClassX&ClassY)|null +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassZ +CONSTANT IMPLICIT_X_CONSTANT "implicit [PUBLIC] ClassX +CONSTANT IMPLICIT_Y_CONSTANT "implicit [PUBLIC] ClassY +CONSTANT IMPLICIT_Z_CONSTANT "implicit [PUBLIC] ClassZ +CONSTANT PUBLIC_X_CONSTANT "public cons [PUBLIC] ClassX +CONSTANT PUBLIC_Y_CONSTANT "public cons [PUBLIC] ClassY +CONSTANT PUBLIC_Z_CONSTANT "public cons [PUBLIC] ClassZ +CONSTANT class \ClassX [PUBLIC] Magic Constant +CONSTANT class \ClassY [PUBLIC] Magic Constant +CONSTANT class \ClassZ [PUBLIC] Magic Constant diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType03a.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType03a.completion new file mode 100644 index 0000000000..b89c65cfef --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType03a.completion @@ -0,0 +1,12 @@ +Code completion result for source line: +$vardoc3->|publicXField; // ClassZ|(ClassX&ClassY)|(ClassX&ClassY&ClassZ) +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicYMethod() [PUBLIC] ClassY +METHOD publicZMethod() [PUBLIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicZ [PUBLIC] ClassZ diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType03b.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType03b.completion new file mode 100644 index 0000000000..f4cdb23df0 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType03b.completion @@ -0,0 +1,18 @@ +Code completion result for source line: +$vardoc3::|$publicStaticXField; // ClassZ|(ClassX&ClassY)|(ClassX&ClassY&ClassZ) +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassZ +CONSTANT IMPLICIT_X_CONSTANT "implicit [PUBLIC] ClassX +CONSTANT IMPLICIT_Y_CONSTANT "implicit [PUBLIC] ClassY +CONSTANT IMPLICIT_Z_CONSTANT "implicit [PUBLIC] ClassZ +CONSTANT PUBLIC_X_CONSTANT "public cons [PUBLIC] ClassX +CONSTANT PUBLIC_Y_CONSTANT "public cons [PUBLIC] ClassY +CONSTANT PUBLIC_Z_CONSTANT "public cons [PUBLIC] ClassZ +CONSTANT class \ClassX [PUBLIC] Magic Constant +CONSTANT class \ClassY [PUBLIC] Magic Constant +CONSTANT class \ClassZ [PUBLIC] Magic Constant diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType04a.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType04a.completion new file mode 100644 index 0000000000..8872b4d893 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType04a.completion @@ -0,0 +1,9 @@ +Code completion result for source line: +$vardoc4->|publicXField; // (ClassX&ClassY)|null +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicYMethod() [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType04b.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType04b.completion new file mode 100644 index 0000000000..80d5c66443 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType04b.completion @@ -0,0 +1,13 @@ +Code completion result for source line: +$vardoc4::|$publicStaticXField; // (ClassX&ClassY)|null +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassY +CONSTANT IMPLICIT_X_CONSTANT "implicit [PUBLIC] ClassX +CONSTANT IMPLICIT_Y_CONSTANT "implicit [PUBLIC] ClassY +CONSTANT PUBLIC_X_CONSTANT "public cons [PUBLIC] ClassX +CONSTANT PUBLIC_Y_CONSTANT "public cons [PUBLIC] ClassY +CONSTANT class \ClassX [PUBLIC] Magic Constant +CONSTANT class \ClassY [PUBLIC] Magic Constant diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType05a.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType05a.completion new file mode 100644 index 0000000000..d26ec9c2cb --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType05a.completion @@ -0,0 +1,12 @@ +Code completion result for source line: +$vardoc5->|publicXField; // ClassZ|(ClassX&ClassY)|null +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicYMethod() [PUBLIC] ClassY +METHOD publicZMethod() [PUBLIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicZ [PUBLIC] ClassZ diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType05b.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType05b.completion new file mode 100644 index 0000000000..83272cb980 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType05b.completion @@ -0,0 +1,18 @@ +Code completion result for source line: +$vardoc5::|$publicStaticXField; // ClassZ|(ClassX&ClassY)|null +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassZ +CONSTANT IMPLICIT_X_CONSTANT "implicit [PUBLIC] ClassX +CONSTANT IMPLICIT_Y_CONSTANT "implicit [PUBLIC] ClassY +CONSTANT IMPLICIT_Z_CONSTANT "implicit [PUBLIC] ClassZ +CONSTANT PUBLIC_X_CONSTANT "public cons [PUBLIC] ClassX +CONSTANT PUBLIC_Y_CONSTANT "public cons [PUBLIC] ClassY +CONSTANT PUBLIC_Z_CONSTANT "public cons [PUBLIC] ClassZ +CONSTANT class \ClassX [PUBLIC] Magic Constant +CONSTANT class \ClassY [PUBLIC] Magic Constant +CONSTANT class \ClassZ [PUBLIC] Magic Constant diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType06a.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType06a.completion new file mode 100644 index 0000000000..442cde1e87 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType06a.completion @@ -0,0 +1,12 @@ +Code completion result for source line: +$vardoc6->|publicXField; // ClassZ|(ClassX&ClassY)|(ClassX&ClassY&ClassZ) +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +METHOD publicXMethod() [PUBLIC] ClassX +METHOD publicYMethod() [PUBLIC] ClassY +METHOD publicZMethod() [PUBLIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX publicX [PUBLIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX publicY [PUBLIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX publicZ [PUBLIC] ClassZ diff --git a/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType06b.completion b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType06b.completion new file mode 100644 index 0000000000..1411a47294 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/completion/lib/php82/testDNFTypes/dnfTypes.php.testDNFTypes_VarDocType06b.completion @@ -0,0 +1,18 @@ +Code completion result for source line: +$vardoc6::|$publicStaticXField; // ClassZ|(ClassX&ClassY)|(ClassX&ClassY&ClassZ) +(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true) +METHOD publicStaticXMethod() [STATIC] ClassX +METHOD publicStaticYMethod() [STATIC] ClassY +METHOD publicStaticZMethod() [STATIC] ClassZ +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassX +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassY +VARIABLE (ClassY&ClassZ)|ClassX $public [STATIC] ClassZ +CONSTANT IMPLICIT_X_CONSTANT "implicit [PUBLIC] ClassX +CONSTANT IMPLICIT_Y_CONSTANT "implicit [PUBLIC] ClassY +CONSTANT IMPLICIT_Z_CONSTANT "implicit [PUBLIC] ClassZ +CONSTANT PUBLIC_X_CONSTANT "public cons [PUBLIC] ClassX +CONSTANT PUBLIC_Y_CONSTANT "public cons [PUBLIC] ClassY +CONSTANT PUBLIC_Z_CONSTANT "public cons [PUBLIC] ClassZ +CONSTANT class \ClassX [PUBLIC] Magic Constant +CONSTANT class \ClassY [PUBLIC] Magic Constant +CONSTANT class \ClassZ [PUBLIC] Magic Constant diff --git a/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/completion/PHP82CodeCompletionTest.java b/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/completion/PHP82CodeCompletionTest.java index ba901e3cb0..40fd8def75 100644 --- a/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/completion/PHP82CodeCompletionTest.java +++ b/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/completion/PHP82CodeCompletionTest.java @@ -293,4 +293,216 @@ public class PHP82CodeCompletionTest extends PHPCodeCompletionTestBase { checkCompletion("constantsInTraits", "$c::^PUBLIC_TRAIT;"); } + public void testDNFTypes_MethodReturnType01() throws Exception { + checkCompletion("dnfTypes", " $this->returnType()->^publicXField;"); + } + + public void testDNFTypes_MethodReturnType02a() throws Exception { + checkCompletion("dnfTypes", " $this->returnType()->publicXMethod()->^publicYField;"); + } + + public void testDNFTypes_MethodReturnType02b() throws Exception { + checkCompletion("dnfTypes", " $this->returnType()->publicXMethod()->publicY^Field;"); + } + + public void testDNFTypes_MethodReturnType03() throws Exception { + checkCompletion("dnfTypes", " $this->returnType()?->publicYMethod()?->^publicXField;"); + } + + public void testDNFTypes_MethodReturnType04() throws Exception { + checkCompletion("dnfTypes", " $this->privateTraitMethod()->^publicXField;"); + } + + public void testDNFTypes_MethodReturnType05() throws Exception { + checkCompletion("dnfTypes", " $this->protectedTraitMethod()->publicYMethod()->^publicXField;"); + } + + public void testDNFTypes_MethodReturnType06() throws Exception { + checkCompletion("dnfTypes", " $this->phpdocReturnType()->^publicXField;"); + } + + public void testDNFTypes_MethodReturnType07() throws Exception { + checkCompletion("dnfTypes", " $this->returnType()::^IMPLICIT_X_CONSTANT;"); + } + + public void testDNFTypes_MethodReturnType08() throws Exception { + checkCompletion("dnfTypes", " $this->returnType()::publicStaticXMethod()::^$publicStaticXField;"); + } + + public void testDNFTypes_MethodReturnType09a() throws Exception { + checkCompletion("dnfTypes", " $this->returnType()::publicStaticXMethod()->^publicXField;"); + } + + public void testDNFTypes_MethodReturnType09b() throws Exception { + checkCompletion("dnfTypes", " $this->returnType()::publicStaticXMethod()->publicXField^;"); + } + + public void testDNFTypes_MethodReturnType10() throws Exception { + checkCompletion("dnfTypes", " $this->privateTraitMethod()::^publicStaticXMethod();"); + } + + public void testDNFTypes_MethodReturnType11() throws Exception { + checkCompletion("dnfTypes", " $this->methodTag()->^publicXMethod();"); + } + + public void testDNFTypes_MethodReturnType12() throws Exception { + checkCompletion("dnfTypes", " self::publicStaticMethod()::^IMPLICIT_X_CONSTANT;"); + } + + public void testDNFTypes_MethodReturnType13a() throws Exception { + checkCompletion("dnfTypes", " self::publicStaticMethod()::publicStaticXMethod()::^publicStaticYMethod();"); + } + + public void testDNFTypes_MethodReturnType13b() throws Exception { + checkCompletion("dnfTypes", " self::publicStaticMethod()::publicStaticXMethod()::publicStaticYM^ethod();"); + } + + public void testDNFTypes_MethodReturnType14() throws Exception { + checkCompletion("dnfTypes", " self::publicStaticMethod()::publicStaticXMethod()->^publicXMethod();"); + } + + public void testDNFTypes_MethodReturnType15() throws Exception { + checkCompletion("dnfTypes", " static::publicStaticMethod()->^publicZMethod();"); + } + + public void testDNFTypes_MethodReturnType16() throws Exception { + checkCompletion("dnfTypes", " static::publicStaticMethod()->publicZMethod()::^$publicStaticXField;"); + } + + public void testDNFTypes_MethodReturnType17() throws Exception { + checkCompletion("dnfTypes", " static::publicStaticMethod()->publicZMethod()->^publicYMethod();"); + } + + public void testDNFTypes_MethodReturnType18() throws Exception { + checkCompletion("dnfTypes", " static::publicStaticTraitMethod()->publicXMethod()->^publicXField;"); + } + + public void testDNFTypes_FieldType01() throws Exception { + checkCompletion("dnfTypes", " $this->privateFiled->^publicXMethod();"); + } + + public void testDNFTypes_FieldType02a() throws Exception { + checkCompletion("dnfTypes", " $this->publicFiled->publicXMethod()->^publicYField;"); + } + + public void testDNFTypes_FieldType02b() throws Exception { + checkCompletion("dnfTypes", " $this->publicFiled->publicXMethod()->publicY^Field;"); + } + + public void testDNFTypes_FieldType03() throws Exception { + checkCompletion("dnfTypes", " $this->protectedFiled::^PUBLIC_Z_CONSTANT;"); + } + + public void testDNFTypes_FieldType04() throws Exception { + checkCompletion("dnfTypes", " $this->publicPhpdocField->^publicXMethod();"); + } + + public void testDNFTypes_FieldType05() throws Exception { + checkCompletion("dnfTypes", " $this->publicPhpdocField::^$publicStaticXField;"); + } + + public void testDNFTypes_FieldType06() throws Exception { + checkCompletion("dnfTypes", " $this->protectedTraitField->^publicXMethod();"); + } + + public void testDNFTypes_FieldType07() throws Exception { + checkCompletion("dnfTypes", " $this->privatePromotedFiled->^publicYMethod();"); + } + + public void testDNFTypes_FieldType08() throws Exception { + checkCompletion("dnfTypes", " $this->propertyTag->^publicYMethod();"); + } + + public void testDNFTypes_FieldType09() throws Exception { + checkCompletion("dnfTypes", " static::$privateStaticField::^IMPLICIT_Y_CONSTANT;"); + } + + public void testDNFTypes_FieldType10a() throws Exception { + checkCompletion("dnfTypes", " static::$privateStaticField?->^publicStaticZMethod();"); + } + + public void testDNFTypes_FieldType10b() throws Exception { + checkCompletion("dnfTypes", " static::$privateStaticField?->publicStaticZ^Method();"); + } + + public void testDNFTypes_FieldType11() throws Exception { + checkCompletion("dnfTypes", " self::$publicPhpdocStaticField::^$publicStaticXField;"); + } + + public void testDNFTypes_FieldType12() throws Exception { + checkCompletion("dnfTypes", " self::$publicPhpdocStaticField->^publicZField;"); + } + + public void testDNFTypes_FieldType13() throws Exception { + checkCompletion("dnfTypes", " self::$publicStaticTraitField->^publicXMethod();"); + } + + public void testDNFTypes_FunctionReturnType01() throws Exception { + checkCompletion("dnfTypes", "testFunctionReturnType()->^publicXField;"); + } + + public void testDNFTypes_FunctionReturnType02() throws Exception { + checkCompletion("dnfTypes", "testFunctionReturnType()::^PUBLIC_X_CONSTANT;"); + } + + public void testDNFTypes_FunctionReturnType03() throws Exception { + checkCompletion("dnfTypes", "$testFunctionReturnType->^publicXMethod();"); + } + + public void testDNFTypes_FunctionReturnType04a() throws Exception { + checkCompletion("dnfTypes", "$testFunctionReturnType::^IMPLICIT_Z_CONSTANT();"); + } + + public void testDNFTypes_FunctionReturnType04b() throws Exception { + checkCompletion("dnfTypes", "$testFunctionReturnType::IMPLICIT_Z_^CONSTANT();"); + } + + public void testDNFTypes_VarDocType01a() throws Exception { + checkCompletion("dnfTypes", "$vardoc1->^publicXField;"); + } + + public void testDNFTypes_VarDocType01b() throws Exception { + checkCompletion("dnfTypes", "$vardoc1::^$publicStaticXField;"); + } + + public void testDNFTypes_VarDocType02a() throws Exception { + checkCompletion("dnfTypes", "$vardoc2->^publicXField;"); + } + + public void testDNFTypes_VarDocType02b() throws Exception { + checkCompletion("dnfTypes", "$vardoc2::^$publicStaticXField;"); + } + + public void testDNFTypes_VarDocType03a() throws Exception { + checkCompletion("dnfTypes", "$vardoc3->^publicXField;"); + } + + public void testDNFTypes_VarDocType03b() throws Exception { + checkCompletion("dnfTypes", "$vardoc3::^$publicStaticXField;"); + } + + public void testDNFTypes_VarDocType04a() throws Exception { + checkCompletion("dnfTypes", "$vardoc4->^publicXField;"); + } + + public void testDNFTypes_VarDocType04b() throws Exception { + checkCompletion("dnfTypes", "$vardoc4::^$publicStaticXField;"); + } + + public void testDNFTypes_VarDocType05a() throws Exception { + checkCompletion("dnfTypes", "$vardoc5->^publicXField;"); + } + + public void testDNFTypes_VarDocType05b() throws Exception { + checkCompletion("dnfTypes", "$vardoc5::^$publicStaticXField;"); + } + + public void testDNFTypes_VarDocType06a() throws Exception { + checkCompletion("dnfTypes", "$vardoc6->^publicXField;"); + } + + public void testDNFTypes_VarDocType06b() throws Exception { + checkCompletion("dnfTypes", "$vardoc6::^$publicStaticXField;"); + } + } diff --git a/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/model/impl/TypeTest.java b/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/model/impl/TypeTest.java index 1f7f5a4571..ae2c69d344 100644 --- a/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/model/impl/TypeTest.java +++ b/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/model/impl/TypeTest.java @@ -19,6 +19,8 @@ package org.netbeans.modules.php.editor.model.impl; +import static org.junit.Assert.assertArrayEquals; + /** * * @author Ondrej Brejla <obre...@netbeans.org> @@ -42,4 +44,103 @@ public class TypeTest extends ModelTestBase { assertFalse(Type.isArray("\\Foo\\Bar")); } + public void testSplitTypes_01() throws Exception { + String declaredTypes = "Foo"; + assertArrayEquals(new String[]{"Foo"}, Type.splitTypes(declaredTypes)); + } + + public void testSplitTypes_02() throws Exception { + String declaredTypes = "\\Foo"; + assertArrayEquals(new String[]{"\\Foo"}, Type.splitTypes(declaredTypes)); + } + + public void testSplitTypes_03() throws Exception { + String declaredTypes = " \\Foo\\Bar "; + assertArrayEquals(new String[]{"\\Foo\\Bar"}, Type.splitTypes(declaredTypes)); + } + + public void testSplitTypesNullableType_01() throws Exception { + String declaredTypes = "?Foo"; + assertArrayEquals(new String[]{"?Foo"}, Type.splitTypes(declaredTypes)); + } + + public void testSplitTypesNullableType_02() throws Exception { + String declaredTypes = "?\\Foo\\Bar"; + assertArrayEquals(new String[]{"?\\Foo\\Bar"}, Type.splitTypes(declaredTypes)); + } + + public void testSplitTypesUnionType_01() throws Exception { + String declaredTypes = "string|int|null"; + assertArrayEquals(new String[]{"string", "int", "null"}, Type.splitTypes(declaredTypes)); + } + + public void testSplitTypesUnionType_02() throws Exception { + String declaredTypes = "\\Foo\\Bar|\\Baz|null"; + assertArrayEquals(new String[]{"\\Foo\\Bar", "\\Baz", "null"}, Type.splitTypes(declaredTypes)); + } + + public void testSplitTypesUnionType_03() throws Exception { + String declaredTypes = "\\Foo\\Bar | \\Baz | null"; + assertArrayEquals(new String[]{"\\Foo\\Bar", "\\Baz", "null"}, Type.splitTypes(declaredTypes)); + } + + public void testSplitTypesIntersectionType_01() throws Exception { + String declaredTypes = "string&int&null"; + assertArrayEquals(new String[]{"string", "int", "null"}, Type.splitTypes(declaredTypes)); + } + + public void testSplitTypesIntersectionType_02() throws Exception { + String declaredTypes = "\\Foo\\Bar&\\Baz&null"; + assertArrayEquals(new String[]{"\\Foo\\Bar", "\\Baz", "null"}, Type.splitTypes(declaredTypes)); + } + + public void testSplitTypesIntersectionType_03() throws Exception { + String declaredTypes = "\\Foo\\Bar & \\Baz & null"; + assertArrayEquals(new String[]{"\\Foo\\Bar", "\\Baz", "null"}, Type.splitTypes(declaredTypes)); + } + + public void testSplitTypesDNFType_01() throws Exception { + String declaredTypes = "(X&Y)|Z"; + assertArrayEquals(new String[]{"X", "Y", "Z"}, Type.splitTypes(declaredTypes)); + } + + public void testSplitTypesDNFType_02() throws Exception { + String declaredTypes = "X|(Y&Z)"; + assertArrayEquals(new String[]{"X", "Y", "Z"}, Type.splitTypes(declaredTypes)); + } + + public void testSplitTypesDNFType_03() throws Exception { + String declaredTypes = "(X&Y)|(Y&Z)"; + assertArrayEquals(new String[]{"X", "Y", "Y", "Z"}, Type.splitTypes(declaredTypes)); + } + + public void testSplitTypesDNFType_04() throws Exception { + String declaredTypes = "X|(Y&Z)|Z"; + assertArrayEquals(new String[]{"X", "Y", "Z", "Z"}, Type.splitTypes(declaredTypes)); + } + + public void testSplitTypesDNFType_05() throws Exception { + String declaredTypes = "(\\NS1\\Test1&\\NS2\\Test2)|\\Test3"; + assertArrayEquals(new String[]{"\\NS1\\Test1", "\\NS2\\Test2", "\\Test3"}, Type.splitTypes(declaredTypes)); + } + + public void testSplitTypesDNFType_06() throws Exception { + String declaredTypes = "\\NS3\\Test3 | (\\NS1\\Test1&\\NS2\\Test2)"; + assertArrayEquals(new String[]{"\\NS3\\Test3","\\NS1\\Test1", "\\NS2\\Test2"}, Type.splitTypes(declaredTypes)); + } + + public void testSplitTypesDNFType_07() throws Exception { + String declaredTypes = "(\\NS3\\Test3&Test1) | (\\NS1\\Test1&\\NS2\\Test2)"; + assertArrayEquals(new String[]{"\\NS3\\Test3", "Test1", "\\NS1\\Test1", "\\NS2\\Test2"}, Type.splitTypes(declaredTypes)); + } + + public void testSplitTypesDNFType_08() throws Exception { + String declaredTypes = "(\\NS3\\Test3&Test1)|(\\NS1\\Test1&\\NS2\\Test2)"; + assertArrayEquals(new String[]{"\\NS3\\Test3", "Test1", "\\NS1\\Test1", "\\NS2\\Test2"}, Type.splitTypes(declaredTypes)); + } + + public void testSplitTypesDNFType_09() throws Exception { + String declaredTypes = " (\\NS3\\Test3&Test1)|(\\NS1\\Test1&\\NS2\\Test2) "; + assertArrayEquals(new String[]{"\\NS3\\Test3", "Test1", "\\NS1\\Test1", "\\NS2\\Test2"}, Type.splitTypes(declaredTypes)); + } } diff --git a/php/php.editor/tools/ASTPHP5Scanner.flex b/php/php.editor/tools/ASTPHP5Scanner.flex index cba1092442..3d128d1d0c 100644 --- a/php/php.editor/tools/ASTPHP5Scanner.flex +++ b/php/php.editor/tools/ASTPHP5Scanner.flex @@ -1203,7 +1203,7 @@ NOWDOC_CHARS=({NEWLINE}*(([^a-zA-Z_\x7f-\xff\n\r][^\n\r]*)|({LABEL}[^a-zA-Z0-9_\ } } -<ST_IN_SCRIPTING>"/*"{WHITESPACE}*"@var"{WHITESPACE}("$"?){LABEL}("["({LABEL} | "\"" | "'")*"]")*{WHITESPACE}("?"?){QUALIFIED_LABEL}("[""]")*([|]{QUALIFIED_LABEL}("[""]")*)*{WHITESPACE}?"*/" { +<ST_IN_SCRIPTING>"/*"{WHITESPACE}*"@var"{WHITESPACE}("$"?){LABEL}("["({LABEL} | "\"" | "'")*"]")*{WHITESPACE}("?"?)("("?){QUALIFIED_LABEL}("[""]")*([|&]("("?){QUALIFIED_LABEL}("[""]")*(")"?))*{WHITESPACE}?"*/" { comment = yytext(); handleVarComment(); // if we want to handle the var comment in ast, then return the T_VAR_Comment symbol @@ -1211,7 +1211,7 @@ NOWDOC_CHARS=({NEWLINE}*(([^a-zA-Z_\x7f-\xff\n\r][^\n\r]*)|({LABEL}[^a-zA-Z0-9_\ //return createFullSymbol(ASTPHP5Symbols.T_VAR_COMMENT); } -<ST_IN_SCRIPTING>"/**"{WHITESPACE}*"@var"{WHITESPACE}("?"?){QUALIFIED_LABEL}("[""]")*([|]{QUALIFIED_LABEL}("[""]")*)*{WHITESPACE}("$"){LABEL}("["({LABEL} | "\"" | "'")*"]")*{WHITESPACE}?[^\n\r]*"*/" { +<ST_IN_SCRIPTING>"/**"{WHITESPACE}*"@var"{WHITESPACE}("?"?)("("?){QUALIFIED_LABEL}("[""]")*([|&]("("?){QUALIFIED_LABEL}("[""]")*(")"?))*{WHITESPACE}("$"){LABEL}("["({LABEL} | "\"" | "'")*"]")*{WHITESPACE}?[^\n\r]*"*/" { comment = yytext(); handleVarComment(); } --------------------------------------------------------------------- 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