[apex] Add parser support for EmptyReferenceExpression

This commit is contained in:
Andreas Dangel committed 2020-02-22 15:02:48 +01:00
1 parent 00c2d5cc6b
commit c090bfbd8b
6 files changed
+43 -1

No files matched your search

@@ -0,0 +1,22 @@
/*
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.lang.apex.ast;
import apex.jorje.semantic.ast.expression.EmptyReferenceExpression;
public class ASTEmptyReferenceExpression extends AbstractApexNode<EmptyReferenceExpression> {
ASTEmptyReferenceExpression(EmptyReferenceExpression node) {
super(node);
}
@Override
public Object jjtAccept(ApexParserVisitor visitor, Object data) {
return visitor.visit(this, data);
}
}
@@ -203,4 +203,6 @@ public interface ApexParserVisitor {
Object visit(ASTLiteralCase node, Object data);
Object visit(ASTIdentifierCase node, Object data);
Object visit(ASTEmptyReferenceExpression node, Object data);
}
@@ -498,4 +498,9 @@ public class ApexParserVisitorAdapter implements ApexParserVisitor {
public Object visit(ASTLiteralCase node, Object data) {
return visit((ApexNode<?>) node, data);
}
@Override
public Object visit(ASTEmptyReferenceExpression node, Object data) {
return visit((ApexNode<?>) node, data);
}
}
@@ -40,6 +40,7 @@ import apex.jorje.semantic.ast.expression.BindExpressions;
import apex.jorje.semantic.ast.expression.BooleanExpression;
import apex.jorje.semantic.ast.expression.CastExpression;
import apex.jorje.semantic.ast.expression.ClassRefExpression;
import apex.jorje.semantic.ast.expression.EmptyReferenceExpression;
import apex.jorje.semantic.ast.expression.Expression;
import apex.jorje.semantic.ast.expression.IllegalStoreExpression;
import apex.jorje.semantic.ast.expression.InstanceOfExpression;
@@ -221,6 +222,7 @@ public final class ApexTreeBuilder extends AstVisitor<AdditionalPassScope> {
register(ValueWhenBlock.class, ASTValueWhenBlock.class);
register(LiteralCase.class, ASTLiteralCase.class);
register(IdentifierCase.class, ASTIdentifierCase.class);
register(EmptyReferenceExpression.class, ASTEmptyReferenceExpression.class);
}
private static <T extends AstNode> void register(Class<T> nodeType,
@@ -849,4 +851,9 @@ public final class ApexTreeBuilder extends AstVisitor<AdditionalPassScope> {
public boolean visit(IdentifierCase node, AdditionalPassScope scope) {
return visit(node);
}
@Override
public boolean visit(EmptyReferenceExpression node, AdditionalPassScope scope) {
return visit(node);
}
}
@@ -37,6 +37,7 @@ import net.sourceforge.pmd.lang.apex.ast.ASTDmlUpdateStatement;
import net.sourceforge.pmd.lang.apex.ast.ASTDmlUpsertStatement;
import net.sourceforge.pmd.lang.apex.ast.ASTDoLoopStatement;
import net.sourceforge.pmd.lang.apex.ast.ASTElseWhenBlock;
import net.sourceforge.pmd.lang.apex.ast.ASTEmptyReferenceExpression;
import net.sourceforge.pmd.lang.apex.ast.ASTExpression;
import net.sourceforge.pmd.lang.apex.ast.ASTExpressionStatement;
import net.sourceforge.pmd.lang.apex.ast.ASTField;
@@ -640,4 +641,9 @@ public abstract class AbstractApexRule extends AbstractRule
public Object visit(ASTLiteralCase node, Object data) {
return visit((ApexNode<?>) node, data);
}
@Override
public Object visit(ASTEmptyReferenceExpression node, Object data) {
return visit((ApexNode<?>) node, data);
}
}
@@ -179,7 +179,7 @@ public class ApexParserTest extends ApexParserTestBase {
Assert.assertNotNull(rootNode);
int count = visitPosition(rootNode, 0);
Assert.assertEquals(427, count);
Assert.assertEquals(487, count);
}
private int visitPosition(Node node, int count) {