Skip to content

Commit bc1893c

Browse files
Revert "SONARPHP-1583 Constructor promoted properties should generate class member symbol (#1330)" (#1332)
1 parent f18ccb9 commit bc1893c

File tree

7 files changed

+11
-70
lines changed

7 files changed

+11
-70
lines changed

its/ruling/src/integrationTest/resources/expected/PHP_CodeSniffer/php-S1068.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@
66
61,
77
64,
88
67,
9-
73,
10-
78
9+
73
1110
],
1211
"PHP_CodeSniffer:src/Standards/PEAR/Tests/NamingConventions/ValidVariableNameUnitTest.inc": [
1312
19,

php-checks/src/main/java/org/sonar/php/checks/UnusedPrivateFieldCheck.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,10 @@
3232
import org.sonar.plugins.php.api.tree.expression.NameIdentifierTree;
3333
import org.sonar.plugins.php.api.visitors.PHPVisitorCheck;
3434

35-
@Rule(key = "S1068")
35+
@Rule(key = UnusedPrivateFieldCheck.KEY)
3636
public class UnusedPrivateFieldCheck extends PHPVisitorCheck {
3737

38+
public static final String KEY = "S1068";
3839
private static final String MESSAGE = "Remove this unused \"%s\" private field.";
3940

4041
private static final Set<String> constantUsedBeforeInit = new HashSet<>();

php-checks/src/test/java/org/sonar/php/checks/UnusedPrivateFieldCheckTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
class UnusedPrivateFieldCheckTest {
2323

2424
@Test
25-
void shouldRaiseExpectedIssues() {
25+
void test() throws Exception {
2626
CheckVerifier.verify(new UnusedPrivateFieldCheck(), "UnusedPrivateFieldCheck.php");
2727
}
2828
}

php-checks/src/test/resources/checks/UnusedPrivateFieldCheck.php

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,13 @@ class C {
99
private static $field4; // OK
1010
private static $field5; // OK
1111

12-
public function __construct(
13-
public $promotedPublic,
14-
private $promotedPrivateUsed,
15-
private $promotedPrivateUnused // Noncompliant
16-
) {}
17-
1812
public function f($field1) {
19-
return $field1 + $this->field2 + $this->promotedPrivateUsed;
13+
return $field1 + $this->field2;
2014
}
2115

2216
public function g() {
2317
return $this->myArray[0] + self::$field4 + static::$field5;
2418
}
25-
2619
}
2720

2821
class D {

php-frontend/src/main/java/org/sonar/php/tree/symbols/SymbolVisitor.java

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,7 @@
2222
import java.util.HashMap;
2323
import java.util.Locale;
2424
import java.util.Map;
25-
import java.util.Objects;
2625
import java.util.Set;
27-
import java.util.stream.Stream;
2826
import javax.annotation.Nullable;
2927
import org.sonar.api.utils.Preconditions;
3028
import org.sonar.php.api.PHPKeyword;
@@ -263,16 +261,8 @@ public void visitAnonymousClass(AnonymousClassTree tree) {
263261
private void createMemberSymbols(ClassTree tree, @Nullable TypeSymbolImpl classSymbol) {
264262
for (ClassMemberTree member : tree.members()) {
265263
if (member.is(Kind.METHOD_DECLARATION)) {
266-
var method = (MethodDeclarationTree) member;
267-
var name = method.name();
268-
269-
SymbolImpl symbol = createMemberSymbol(classSymbol, name, Symbol.Kind.FUNCTION);
270-
symbol.addModifiers(method.modifiers());
271-
272-
if ("__construct".equals(name.text())) {
273-
createMemberSymbolsForPromotedProperties(method, classSymbol);
274-
}
275-
264+
SymbolImpl symbol = createMemberSymbol(classSymbol, ((MethodDeclarationTree) member).name(), Symbol.Kind.FUNCTION);
265+
symbol.addModifiers(((MethodDeclarationTree) member).modifiers());
276266
} else if (member.is(Kind.CLASS_CONSTANT_PROPERTY_DECLARATION, Kind.CLASS_PROPERTY_DECLARATION)) {
277267
ClassPropertyDeclarationTree classPropertyDeclaration = (ClassPropertyDeclarationTree) member;
278268
for (VariableDeclarationTree field : classPropertyDeclaration.declarations()) {
@@ -287,20 +277,6 @@ private void createMemberSymbols(ClassTree tree, @Nullable TypeSymbolImpl classS
287277
}
288278
}
289279

290-
private void createMemberSymbolsForPromotedProperties(MethodDeclarationTree method, @Nullable TypeSymbolImpl classSymbol) {
291-
method.parameters().parameters().stream()
292-
.filter(ParameterTree::isPropertyPromotion)
293-
.forEach(param -> {
294-
SymbolImpl fieldSymbol = createMemberSymbol(classSymbol, param.variableIdentifier(), Symbol.Kind.FIELD);
295-
var modifiers = Stream.of(param.visibility(), param.readonlyToken()).filter(Objects::nonNull).toList();
296-
fieldSymbol.addModifiers(modifiers);
297-
ExpressionTree initValue = param.initValue();
298-
if (initValue != null) {
299-
initValue.accept(this);
300-
}
301-
});
302-
}
303-
304280
private SymbolImpl createMemberSymbol(@Nullable TypeSymbolImpl classSymbol, IdentifierTree identifier, Symbol.Kind kind) {
305281
SymbolImpl symbol;
306282
if (classSymbol != null) {

php-frontend/src/test/java/org/sonar/php/tree/symbols/SymbolTableImplTest.java

Lines changed: 4 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package org.sonar.php.tree.symbols;
1818

1919
import java.util.List;
20-
import java.util.Objects;
2120
import java.util.stream.Stream;
2221
import org.junit.jupiter.api.Test;
2322
import org.junit.jupiter.params.ParameterizedTest;
@@ -29,7 +28,6 @@
2928
import org.sonar.php.tree.impl.PHPTree;
3029
import org.sonar.php.tree.impl.expression.FunctionCallTreeImpl;
3130
import org.sonar.plugins.php.api.symbols.MemberSymbol;
32-
import org.sonar.plugins.php.api.symbols.QualifiedName;
3331
import org.sonar.plugins.php.api.symbols.Symbol;
3432
import org.sonar.plugins.php.api.symbols.Symbol.Kind;
3533
import org.sonar.plugins.php.api.symbols.TypeSymbol;
@@ -102,12 +100,12 @@ void caseSensitivity() {
102100

103101
@Test
104102
void symbolsFiltering() {
105-
assertThat(SYMBOL_MODEL.getSymbols()).hasSize(26);
103+
assertThat(SYMBOL_MODEL.getSymbols()).hasSize(20);
106104

107-
assertThat(SYMBOL_MODEL.getSymbols(Symbol.Kind.FUNCTION)).hasSize(3);
105+
assertThat(SYMBOL_MODEL.getSymbols(Symbol.Kind.FUNCTION)).hasSize(2);
108106
assertThat(SYMBOL_MODEL.getSymbols(Symbol.Kind.CLASS)).hasSize(1);
109-
assertThat(SYMBOL_MODEL.getSymbols(Symbol.Kind.FIELD)).hasSize(5);
110-
assertThat(SYMBOL_MODEL.getSymbols(Symbol.Kind.PARAMETER)).hasSize(4);
107+
assertThat(SYMBOL_MODEL.getSymbols(Symbol.Kind.FIELD)).hasSize(3);
108+
assertThat(SYMBOL_MODEL.getSymbols(Symbol.Kind.PARAMETER)).hasSize(1);
111109
assertThat(SYMBOL_MODEL.getSymbols(Symbol.Kind.VARIABLE)).hasSize(13);
112110

113111
assertThat(SYMBOL_MODEL.getSymbols("$a")).hasSize(3);
@@ -139,30 +137,6 @@ void testClassFields() {
139137
assertThat(constantField.is(Symbol.Kind.FIELD)).isTrue();
140138
}
141139

142-
@Test
143-
void promotedPropertiesShouldGenerateSymbols() {
144-
assertThat(SYMBOL_MODEL.getSymbols())
145-
.map(Symbol::qualifiedName)
146-
.filteredOn(Objects::nonNull)
147-
.map(QualifiedName::toString)
148-
.contains("a::$promoted1", "a::$promoted2");
149-
}
150-
151-
@Test
152-
void promotedPropertyShouldGenerateFieldAndParamSymbol() {
153-
var symbols = SYMBOL_MODEL.getSymbols("$promoted1");
154-
155-
assertThat(symbols).hasSize(2);
156-
157-
var fieldSymbol = symbols.get(0);
158-
assertThat(fieldSymbol.qualifiedName()).hasToString("a::$promoted1");
159-
assertThat(fieldSymbol.kind()).isEqualTo(Kind.FIELD);
160-
161-
var paramSymbol = symbols.get(1);
162-
assertThat(paramSymbol.qualifiedName()).isNull();
163-
assertThat(paramSymbol.kind()).isEqualTo(Kind.PARAMETER);
164-
}
165-
166140
@Test
167141
void testGlobalConstant() {
168142
Symbol constant = SYMBOL_MODEL.getSymbols("CONSTANT").get(0);

php-frontend/src/test/resources/symbols/symbolTable.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ class A { // A
2222

2323
public function f($p = 12) { // f, $p
2424
}
25-
26-
public function __construct(public $promoted1 = 1, private $promoted2, $param) {}
2725
}
2826

2927
$x = function () use($a) {

0 commit comments

Comments
 (0)