File tree Expand file tree Collapse file tree 2 files changed +31
-2
lines changed
delphi-frontend/src/main/java/au/com/integradev/delphi Expand file tree Collapse file tree 2 files changed +31
-2
lines changed Original file line number Diff line number Diff line change 102102import org .sonar .plugins .communitydelphi .api .ast .PointerTypeNode ;
103103import org .sonar .plugins .communitydelphi .api .ast .PrimaryExpressionNode ;
104104import org .sonar .plugins .communitydelphi .api .ast .ProcedureTypeHeadingNode ;
105+ import org .sonar .plugins .communitydelphi .api .ast .PropertyImplementsSpecifierNode ;
105106import org .sonar .plugins .communitydelphi .api .ast .PropertyNode ;
107+ import org .sonar .plugins .communitydelphi .api .ast .PropertyReadSpecifierNode ;
108+ import org .sonar .plugins .communitydelphi .api .ast .PropertyWriteSpecifierNode ;
106109import org .sonar .plugins .communitydelphi .api .ast .RecordTypeNode ;
107110import org .sonar .plugins .communitydelphi .api .ast .RecordVariantTagNode ;
108111import org .sonar .plugins .communitydelphi .api .ast .RepeatStatementNode ;
@@ -517,6 +520,24 @@ public Data visit(PropertyNode node, Data data) {
517520 return createDeclarationScope (node , data );
518521 }
519522
523+ @ Override
524+ public Data visit (PropertyReadSpecifierNode node , Data data ) {
525+ // Already resolved by the PropertyNode visit.
526+ return data ;
527+ }
528+
529+ @ Override
530+ public Data visit (PropertyWriteSpecifierNode node , Data data ) {
531+ // Already resolved by the PropertyNode visit.
532+ return data ;
533+ }
534+
535+ @ Override
536+ public Data visit (PropertyImplementsSpecifierNode node , Data data ) {
537+ // Already resolved by the PropertyNode visit.
538+ return data ;
539+ }
540+
520541 @ Nullable
521542 private static PropertyNameDeclaration findConcretePropertyDeclaration (PropertyNode property ) {
522543 if (!property .getType ().isUnknown ()) {
Original file line number Diff line number Diff line change @@ -253,15 +253,19 @@ public void resolve(PropertyNode property) {
253253 if (read != null ) {
254254 NameResolver readResolver = createNameResolver ();
255255 readResolver .readPrimaryExpression (read .getExpression ());
256- readResolver .disambiguateParameters (getGetterParameterTypes (property ));
256+ if (isResolvingRoutine (readResolver )) {
257+ readResolver .disambiguateParameters (getGetterParameterTypes (property ));
258+ }
257259 readResolver .addToSymbolTable ();
258260 }
259261
260262 PropertyWriteSpecifierNode write = property .getWriteSpecifier ();
261263 if (write != null ) {
262264 NameResolver writeResolver = createNameResolver ();
263265 writeResolver .readPrimaryExpression (write .getExpression ());
264- writeResolver .disambiguateParameters (getSetterParameterTypes (property ));
266+ if (isResolvingRoutine (writeResolver )) {
267+ writeResolver .disambiguateParameters (getSetterParameterTypes (property ));
268+ }
265269 writeResolver .addToSymbolTable ();
266270 }
267271
@@ -271,6 +275,10 @@ public void resolve(PropertyNode property) {
271275 }
272276 }
273277
278+ private static boolean isResolvingRoutine (NameResolver resolver ) {
279+ return resolver .getDeclarations ().stream ().anyMatch (RoutineNameDeclaration .class ::isInstance );
280+ }
281+
274282 private List <Type > getGetterParameterTypes (PropertyNode property ) {
275283 if (property .getIndexSpecifier () == null ) {
276284 return property .getParameterTypes ();
You can’t perform that action at this time.
0 commit comments