• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pmd / pmd / 486

23 Apr 2026 06:56PM UTC coverage: 79.035% (-0.01%) from 79.047%
486

push

github

adangel
[doc] basic.xml has been gone for a long time (#6607)

18603 of 24433 branches covered (76.14%)

Branch coverage included in aggregate %.

40592 of 50464 relevant lines covered (80.44%)

0.81 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

40.0
/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/impl/antlr4/BaseAntlrTerminalNode.java
1
/*
2
 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3
 */
4

5
package net.sourceforge.pmd.lang.ast.impl.antlr4;
6

7
import org.antlr.v4.runtime.RuleContext;
8
import org.antlr.v4.runtime.Token;
9
import org.antlr.v4.runtime.tree.ErrorNode;
10
import org.antlr.v4.runtime.tree.ParseTreeVisitor;
11
import org.antlr.v4.runtime.tree.TerminalNode;
12
import org.antlr.v4.runtime.tree.TerminalNodeImpl;
13
import org.checkerframework.checker.nullness.qual.NonNull;
14

15
import net.sourceforge.pmd.lang.ast.impl.antlr4.BaseAntlrTerminalNode.AntlrTerminalPmdAdapter;
16

17
/**
18
 * Base class for terminal nodes (they wrap a {@link TerminalNode}).
19
 */
20
public abstract class BaseAntlrTerminalNode<N extends AntlrNode<N>>
21
    extends BaseAntlrNode<AntlrTerminalPmdAdapter<N>, N> {
22

23
    private final AntlrTerminalPmdAdapter<N> antlrNode;
24

25
    protected BaseAntlrTerminalNode(Token symbol) {
26
        this(symbol, false);
1✔
27
    }
1✔
28

29
    BaseAntlrTerminalNode(Token symbol, boolean isError) {
1✔
30
        if (isError) {
1!
31
            this.antlrNode = new AntlrErrorPmdAdapter<>(this, symbol);
×
32
        } else {
33
            this.antlrNode = new AntlrTerminalPmdAdapter<>(this, symbol);
1✔
34
        }
35
    }
1✔
36

37
    /**
38
     * Returns the text of the token.
39
     *
40
     * @implNote This should use {@link AntlrNameDictionary#getConstantImageOfToken(Token)},
41
     *     or default to {@link Token#getText()}
42
     */
43
    public abstract @NonNull String getText();
44

45
    @Override
46
    protected AntlrTerminalPmdAdapter<N> asAntlrNode() {
47
        return antlrNode;
×
48
    }
49

50
    @Override
51
    public Token getFirstAntlrToken() {
52
        return antlrNode.symbol;
×
53
    }
54

55
    @Override
56
    public Token getLastAntlrToken() {
57
        return antlrNode.symbol;
×
58
    }
59

60
    @Override
61
    public int getNumChildren() {
62
        return 0;
×
63
    }
64

65
    protected int getTokenKind() {
66
        return antlrNode.symbol.getType();
1✔
67
    }
68

69
    @Override
70
    public N getChild(int index) {
71
        throw new IndexOutOfBoundsException("Index " + index + " for terminal node");
×
72
    }
73

74
    protected static class AntlrTerminalPmdAdapter<N extends AntlrNode<N>> extends TerminalNodeImpl implements BaseAntlrNode.AntlrToPmdParseTreeAdapter<N> {
1✔
75

76
        private final BaseAntlrTerminalNode<N> pmdNode;
77

78
        public AntlrTerminalPmdAdapter(BaseAntlrTerminalNode<N> pmdNode, Token symbol) {
79
            super(symbol);
1✔
80
            this.pmdNode = pmdNode;
1✔
81
        }
1✔
82

83
        @Override
84
        public AntlrToPmdParseTreeAdapter<N> getParent() {
85
            return (AntlrToPmdParseTreeAdapter<N>) super.getParent();
×
86
        }
87

88
        @Override
89
        public void setParent(RuleContext parent) {
90
            assert parent instanceof BaseAntlrNode.AntlrToPmdParseTreeAdapter;
×
91
            super.setParent(parent);
×
92
        }
×
93

94
        @Override
95
        public BaseAntlrNode<?, N> getPmdNode() {
96
            return pmdNode;
×
97
        }
98

99
        @Override
100
        public String toString() {
101
            return String.valueOf(pmdNode);
×
102
        }
103
    }
104

105
    protected static class AntlrErrorPmdAdapter<N extends AntlrNode<N>> extends AntlrTerminalPmdAdapter<N> implements ErrorNode {
106

107
        public AntlrErrorPmdAdapter(BaseAntlrTerminalNode<N> pmdNode, Token symbol) {
108
            super(pmdNode, symbol);
×
109
        }
×
110

111
        @Override
112
        public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
113
            return visitor.visitErrorNode(this);
×
114
        }
115
    }
116

117
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc