This is an automated email from the ASF dual-hosted git repository. junichi11 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push: new 064e9e3b84 Fixed detection of duplicate types new c12e495692 Merge pull request #5534 from KacerCZ/fix-duplicate-type-hint 064e9e3b84 is described below commit 064e9e3b84667fe7faae8c0ee5b68abbabd3dc5c Author: Tomas Prochazka <ka...@razdva.cz> AuthorDate: Sun Feb 19 15:21:38 2023 +0100 Fixed detection of duplicate types Goes through all types and does not return on first error. Partial fix for #5072 --- .../verification/UnusableTypesHintError.java | 3 - .../testDuplicateTypes_01.php | 99 ++++++++++++++++++ ...plicateTypes_01.php.testDuplicateTypes_01.hints | 114 +++++++++++++++++++++ .../verification/UnusableTypesHintErrorTest.java | 4 + 4 files changed, 217 insertions(+), 3 deletions(-) diff --git a/php/php.editor/src/org/netbeans/modules/php/editor/verification/UnusableTypesHintError.java b/php/php.editor/src/org/netbeans/modules/php/editor/verification/UnusableTypesHintError.java index b777a168d6..227b7efe82 100644 --- a/php/php.editor/src/org/netbeans/modules/php/editor/verification/UnusableTypesHintError.java +++ b/php/php.editor/src/org/netbeans/modules/php/editor/verification/UnusableTypesHintError.java @@ -430,18 +430,15 @@ public class UnusableTypesHintError extends HintErrorRule { } if (checkedTypes.contains(name)) { createDuplicateTypeError(type, typeName); - return; } else if (checkedTypes.contains(Type.BOOL)) { // bool|false bool|true if (Type.FALSE.equals(name) || Type.TRUE.equals(name)) { createDuplicateTypeError(type, typeName); - return; } } else if (checkedTypes.contains(Type.FALSE) || checkedTypes.contains(Type.TRUE)) { // false|bool true|bool if (Type.BOOL.equals(name)) { createDuplicateTypeError(type, typeName); - return; } } checkedTypes.add(name); diff --git a/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testDuplicateTypes_01.php b/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testDuplicateTypes_01.php new file mode 100644 index 0000000000..74eb42c6b6 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testDuplicateTypes_01.php @@ -0,0 +1,99 @@ +<?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 DuplicateTypes { + + private First|First $union; + private First&First $intersection; + private First|Second|First|Second $twoUnions; + private First&Second&First&Second $twoIntersections; + + private bool|true|bool $unionBoolAndTrue; + private bool|false|bool $unionBoolAndFalse; + + private bool|true|First|First $unionAfterBoolAndTrue; + private bool|false|First|First $unionAfterBoolAndFalse; + private true|bool|First|First $unionAfterTrueAndBool; + private false|bool|First|First $unionAfterFalseAndBool; + + public function returnUnion(): First|First { + } + + public function returnIntersection(): First&First { + } + + public function returnTwoUnions(): First|Second|First|Second { + } + + public function returnTwoIntersections(): First&Second&First&Second { + } + + public function returnUnionBoolAndTrue(): bool|true|bool { + } + + public function returnUnionBoolAndFalse(): bool|false|bool { + } + + public function returnUnionAfterBoolAndTrue(): bool|true|First|First { + } + + public function returnUnionAfterBoolAndFalse(): bool|false|First|First { + } + + public function returnUnionAfterTrueAndBool(): true|bool|First|First { + } + + public function returnUnionAfterFalseAndBool(): false|bool|First|First { + } + + public function parameterUnion(First|First $union) { + } + + public function parameterIntersection(First&First $intersection) { + } + + public function parameterTwoUnions(First|Second|First|Second $twoUnions) { + } + + public function parameterTwoIntersections(First&Second&First&Second $twoIntersections) { + } + + public function parameterUnionBoolAndTrue(bool|true|bool $union) { + } + + public function parameterUnionBoolAndFalse(bool|false|bool $union) { + } + + public function parameterUnionAfterBoolAndTrue(bool|true|First|First $union) { + } + + public function parameterUnionAfterBoolAndFalse(bool|false|First|First $union) { + } + + public function parameterUnionAfterTrueAndBool(true|bool|First|First $union) { + } + + public function parameterUnionAfterFalseAndBool(false|bool|First|First $union) { + } +} + +class First {} + +class Second {} diff --git a/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testDuplicateTypes_01.php.testDuplicateTypes_01.hints b/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testDuplicateTypes_01.php.testDuplicateTypes_01.hints new file mode 100644 index 0000000000..7956ae6927 --- /dev/null +++ b/php/php.editor/test/unit/data/testfiles/verification/UnusableTypesHintError/testDuplicateTypes_01.php.testDuplicateTypes_01.hints @@ -0,0 +1,114 @@ + private First|First $union; + ----- +HINT:Type "First" is duplicated. + private First&First $intersection; + ----- +HINT:Type "First" is duplicated. + private First|Second|First|Second $twoUnions; + ------ +HINT:Type "First" is duplicated. +HINT:Type "Second" is duplicated. + private First&Second&First&Second $twoIntersections; + ------ +HINT:Type "First" is duplicated. +HINT:Type "Second" is duplicated. + private bool|true|bool $unionBoolAndTrue; + ---- +HINT:Type "bool" is duplicated. +HINT:Type "true" is duplicated. + private bool|false|bool $unionBoolAndFalse; + ---- +HINT:Type "bool" is duplicated. +HINT:Type "false" is duplicated. + private bool|true|First|First $unionAfterBoolAndTrue; + ----- +HINT:Type "First" is duplicated. +HINT:Type "true" is duplicated. + private bool|false|First|First $unionAfterBoolAndFalse; + ----- +HINT:Type "First" is duplicated. +HINT:Type "false" is duplicated. + private true|bool|First|First $unionAfterTrueAndBool; + ----- +HINT:Type "First" is duplicated. +HINT:Type "bool" is duplicated. + private false|bool|First|First $unionAfterFalseAndBool; + ----- +HINT:Type "First" is duplicated. +HINT:Type "bool" is duplicated. + public function returnUnion(): First|First { + ----- +HINT:Type "First" is duplicated. + public function returnIntersection(): First&First { + ----- +HINT:Type "First" is duplicated. + public function returnTwoUnions(): First|Second|First|Second { + ------ +HINT:Type "First" is duplicated. +HINT:Type "Second" is duplicated. + public function returnTwoIntersections(): First&Second&First&Second { + ------ +HINT:Type "First" is duplicated. +HINT:Type "Second" is duplicated. + public function returnUnionBoolAndTrue(): bool|true|bool { + ---- +HINT:Type "bool" is duplicated. +HINT:Type "true" is duplicated. + public function returnUnionBoolAndFalse(): bool|false|bool { + ---- +HINT:Type "bool" is duplicated. +HINT:Type "false" is duplicated. + public function returnUnionAfterBoolAndTrue(): bool|true|First|First { + ----- +HINT:Type "First" is duplicated. +HINT:Type "true" is duplicated. + public function returnUnionAfterBoolAndFalse(): bool|false|First|First { + ----- +HINT:Type "First" is duplicated. +HINT:Type "false" is duplicated. + public function returnUnionAfterTrueAndBool(): true|bool|First|First { + ----- +HINT:Type "First" is duplicated. +HINT:Type "bool" is duplicated. + public function returnUnionAfterFalseAndBool(): false|bool|First|First { + ----- +HINT:Type "First" is duplicated. +HINT:Type "bool" is duplicated. + public function parameterUnion(First|First $union) { + ----- +HINT:Type "First" is duplicated. + public function parameterIntersection(First&First $intersection) { + ----- +HINT:Type "First" is duplicated. + public function parameterTwoUnions(First|Second|First|Second $twoUnions) { + ------ +HINT:Type "First" is duplicated. +HINT:Type "Second" is duplicated. + public function parameterTwoIntersections(First&Second&First&Second $twoIntersections) { + ------ +HINT:Type "First" is duplicated. +HINT:Type "Second" is duplicated. + public function parameterUnionBoolAndTrue(bool|true|bool $union) { + ---- +HINT:Type "bool" is duplicated. +HINT:Type "true" is duplicated. + public function parameterUnionBoolAndFalse(bool|false|bool $union) { + ---- +HINT:Type "bool" is duplicated. +HINT:Type "false" is duplicated. + public function parameterUnionAfterBoolAndTrue(bool|true|First|First $union) { + ----- +HINT:Type "First" is duplicated. +HINT:Type "true" is duplicated. + public function parameterUnionAfterBoolAndFalse(bool|false|First|First $union) { + ----- +HINT:Type "First" is duplicated. +HINT:Type "false" is duplicated. + public function parameterUnionAfterTrueAndBool(true|bool|First|First $union) { + ----- +HINT:Type "First" is duplicated. +HINT:Type "bool" is duplicated. + public function parameterUnionAfterFalseAndBool(false|bool|First|First $union) { + ----- +HINT:Type "First" is duplicated. +HINT:Type "bool" is duplicated. diff --git a/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/verification/UnusableTypesHintErrorTest.java b/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/verification/UnusableTypesHintErrorTest.java index 9b7a7d3d98..81b375a6e2 100644 --- a/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/verification/UnusableTypesHintErrorTest.java +++ b/php/php.editor/test/unit/src/org/netbeans/modules/php/editor/verification/UnusableTypesHintErrorTest.java @@ -71,6 +71,10 @@ public class UnusableTypesHintErrorTest extends PHPHintsTestBase { checkHints(new UnusableTypesHintError(), "testDnfTypes_01.php"); } + public void testDuplicateTypes_01() throws Exception { + checkHints(new UnusableTypesHintError(), "testDuplicateTypes_01.php"); + } + @Override protected String getTestDirectory() { return TEST_DIRECTORY + "UnusableTypesHintError/"; --------------------------------------------------------------------- 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