diff --git a/CHANGELOG.md b/CHANGELOG.md index b52bb5614..8a37fc3c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- **API:** `AnonymousMethodNode::getDeclarationSection` method. - **API:** `AnonymousMethodNode::getStatementBlock` method. - **API:** `AnonymousMethodNode::isEmpty` method. diff --git a/delphi-frontend/src/main/java/au/com/integradev/delphi/antlr/ast/node/AnonymousMethodNodeImpl.java b/delphi-frontend/src/main/java/au/com/integradev/delphi/antlr/ast/node/AnonymousMethodNodeImpl.java index cebae9566..6239a8b72 100644 --- a/delphi-frontend/src/main/java/au/com/integradev/delphi/antlr/ast/node/AnonymousMethodNodeImpl.java +++ b/delphi-frontend/src/main/java/au/com/integradev/delphi/antlr/ast/node/AnonymousMethodNodeImpl.java @@ -25,10 +25,12 @@ import java.util.Set; import java.util.stream.Collectors; import javax.annotation.Nonnull; +import javax.annotation.Nullable; import org.antlr.runtime.Token; import org.sonar.plugins.communitydelphi.api.ast.AnonymousMethodHeadingNode; import org.sonar.plugins.communitydelphi.api.ast.AnonymousMethodNode; import org.sonar.plugins.communitydelphi.api.ast.CompoundStatementNode; +import org.sonar.plugins.communitydelphi.api.ast.LocalDeclarationSectionNode; import org.sonar.plugins.communitydelphi.api.ast.RoutineParametersNode; import org.sonar.plugins.communitydelphi.api.ast.RoutineReturnTypeNode; import org.sonar.plugins.communitydelphi.api.symbol.declaration.RoutineDirective; @@ -99,9 +101,15 @@ public boolean isProcedure() { return getRoutineKind() == RoutineKind.PROCEDURE; } + @Override + @Nullable + public LocalDeclarationSectionNode getDeclarationSection() { + return getFirstChildOfType(LocalDeclarationSectionNode.class); + } + @Override public CompoundStatementNode getStatementBlock() { - return (CompoundStatementNode) getChild(1); + return getFirstChildOfType(CompoundStatementNode.class); } @Override diff --git a/delphi-frontend/src/main/java/org/sonar/plugins/communitydelphi/api/ast/AnonymousMethodNode.java b/delphi-frontend/src/main/java/org/sonar/plugins/communitydelphi/api/ast/AnonymousMethodNode.java index 8b25dd36f..3bbad2028 100644 --- a/delphi-frontend/src/main/java/org/sonar/plugins/communitydelphi/api/ast/AnonymousMethodNode.java +++ b/delphi-frontend/src/main/java/org/sonar/plugins/communitydelphi/api/ast/AnonymousMethodNode.java @@ -19,6 +19,7 @@ package org.sonar.plugins.communitydelphi.api.ast; import java.util.Set; +import javax.annotation.Nullable; import org.sonar.plugins.communitydelphi.api.symbol.declaration.RoutineDirective; import org.sonar.plugins.communitydelphi.api.symbol.declaration.RoutineKind; import org.sonar.plugins.communitydelphi.api.type.Type; @@ -42,6 +43,9 @@ public interface AnonymousMethodNode extends ExpressionNode { boolean isProcedure(); + @Nullable + LocalDeclarationSectionNode getDeclarationSection(); + CompoundStatementNode getStatementBlock(); boolean isEmpty();