Fix child index

This commit is contained in:
Clément Fournier
2020-05-02 22:29:23 +02:00
parent 42308da047
commit 473ae2ef19
3 changed files with 16 additions and 3 deletions

View File

@ -10,6 +10,7 @@ import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.RecognitionException;
import org.antlr.v4.runtime.RuleContext;
import org.antlr.v4.runtime.Token;
import org.antlr.v4.runtime.tree.ParseTree;
import org.antlr.v4.runtime.tree.ParseTreeListener;
import org.antlr.v4.runtime.tree.ParseTreeVisitor;
import org.antlr.v4.runtime.tree.RuleNode;
@ -138,6 +139,14 @@ public abstract class BaseAntlrInnerNode<N extends GenericNode<N>> extends BaseA
return (AntlrToPmdParseTreeAdapter<N>) super.getChild(i);
}
@Override
public <T extends ParseTree> T addAnyChild(T t) {
assert t instanceof AntlrToPmdParseTreeAdapter;
BaseAntlrNode<?, ?> pmdNode = ((AntlrToPmdParseTreeAdapter<?>) t).getPmdNode();
pmdNode.setIndexInParent(getChildCount());
return super.addAnyChild(t);
}
@Override
public void setParent(RuleContext parent) {
assert parent instanceof PmdAsAntlrInnerNode;

View File

@ -64,6 +64,10 @@ public abstract class BaseAntlrNode<A extends AntlrToPmdParseTreeAdapter<N>, N e
public abstract Token getLastAntlrToken();
void setIndexInParent(int indexInParent) {
this.indexInParent = indexInParent;
}
@Override
public N getParent() {
return (N) asAntlrNode().getParent().getPmdNode();

View File

@ -1853,7 +1853,7 @@
| | | | | | | | +- BinaryOperator
| | | | | | | | | +- Operator
| | | | | | | | | +- OperatorHead
| | | | | | | | | +- T-133
| | | | | | | | | +- T-double-amp
| | | | | | | | +- PrefixExpression
| | | | | | | | +- PostfixExpression
| | | | | | | | +- PrimaryExpression
@ -2853,7 +2853,7 @@
| | | | | | | | +- PostfixOperator
| | | | | | | | +- Operator
| | | | | | | | +- OperatorHead
| | | | | | | | +- T-133
| | | | | | | | +- T-double-amp
| | | | | | | +- FunctionCallArgumentClause
| | | | | | | +- T-lparen
| | | | | | | +- FunctionCallArgumentList
@ -2877,7 +2877,7 @@
| | | | | | | | | +- BinaryOperator
| | | | | | | | | | +- Operator
| | | | | | | | | | +- OperatorHead
| | | | | | | | | | +- T-134
| | | | | | | | | | +- T-double-pipe
| | | | | | | | | +- PrefixExpression
| | | | | | | | | +- PostfixExpression
| | | | | | | | | +- PostfixExpression