Rename nodes so they don't have the 'context' suffix

This commit is contained in:
Clément Fournier
2020-06-17 21:39:03 +02:00
parent 6c053b5edd
commit fbc93e43cb
6 changed files with 44 additions and 41 deletions

View File

@ -39,6 +39,7 @@
<property name="lang-name" value="Swift" />
<property name="lang-terse-name" value="swift" />
<property name="root-node-name" value="TopLevel" />
<property name="node-prefix" value="Sw" />
</ant>
</target>
</configuration>

View File

@ -6,7 +6,9 @@ package net.sourceforge.pmd.lang.swift;
import net.sourceforge.pmd.RuleContext;
import net.sourceforge.pmd.lang.ast.AstVisitor;
import net.sourceforge.pmd.lang.ast.Node;
import net.sourceforge.pmd.lang.ast.impl.antlr4.AntlrBaseRule;
import net.sourceforge.pmd.lang.swift.ast.SwiftInnerNode;
public abstract class AbstractSwiftRule extends AntlrBaseRule {
@ -14,6 +16,16 @@ public abstract class AbstractSwiftRule extends AntlrBaseRule {
// inheritance constructor
}
@Override
public void addRuleChainVisit(Class<? extends Node> nodeClass) {
// note that this is made unnecessary by #2490
if (SwiftInnerNode.class.isAssignableFrom(nodeClass)) {
addRuleChainVisit(nodeClass.getSimpleName().substring("Sw".length()));
return;
}
super.addRuleChainVisit(nodeClass);
}
@Override
public abstract AstVisitor<RuleContext, ?> buildVisitor();
}

View File

@ -10,19 +10,19 @@ import org.antlr.v4.runtime.Lexer;
import net.sourceforge.pmd.lang.ParserOptions;
import net.sourceforge.pmd.lang.ast.impl.antlr4.AntlrBaseParser;
import net.sourceforge.pmd.lang.swift.ast.SwiftParser.TopLevelContext;
import net.sourceforge.pmd.lang.swift.ast.SwiftParser.SwTopLevel;
/**
* Adapter for the SwiftParser.
*/
public final class PmdSwiftParser extends AntlrBaseParser<SwiftNode, TopLevelContext> {
public final class PmdSwiftParser extends AntlrBaseParser<SwiftNode, SwTopLevel> {
public PmdSwiftParser(final ParserOptions parserOptions) {
super(parserOptions);
}
@Override
protected TopLevelContext parse(final Lexer lexer) {
protected SwTopLevel parse(final Lexer lexer) {
SwiftParser parser = new SwiftParser(new CommonTokenStream(lexer));
return parser.topLevel();
}

View File

@ -9,9 +9,12 @@ import java.util.List;
import net.sourceforge.pmd.RuleContext;
import net.sourceforge.pmd.lang.ast.AstVisitor;
import net.sourceforge.pmd.lang.swift.AbstractSwiftRule;
import net.sourceforge.pmd.lang.swift.ast.SwiftParser;
import net.sourceforge.pmd.lang.swift.ast.SwiftParser.FunctionDeclarationContext;
import net.sourceforge.pmd.lang.swift.ast.SwiftParser.InitializerDeclarationContext;
import net.sourceforge.pmd.lang.swift.ast.SwiftParser.SwAttribute;
import net.sourceforge.pmd.lang.swift.ast.SwiftParser.SwAttributes;
import net.sourceforge.pmd.lang.swift.ast.SwiftParser.SwCodeBlock;
import net.sourceforge.pmd.lang.swift.ast.SwiftParser.SwFunctionDeclaration;
import net.sourceforge.pmd.lang.swift.ast.SwiftParser.SwInitializerDeclaration;
import net.sourceforge.pmd.lang.swift.ast.SwiftParser.SwStatement;
import net.sourceforge.pmd.lang.swift.ast.SwiftVisitorBase;
public class UnavailableFunctionRule extends AbstractSwiftRule {
@ -21,8 +24,8 @@ public class UnavailableFunctionRule extends AbstractSwiftRule {
public UnavailableFunctionRule() {
super();
addRuleChainVisit(FunctionDeclarationContext.class);
addRuleChainVisit(InitializerDeclarationContext.class);
addRuleChainVisit(SwFunctionDeclaration.class);
addRuleChainVisit(SwInitializerDeclaration.class);
}
@Override
@ -30,13 +33,13 @@ public class UnavailableFunctionRule extends AbstractSwiftRule {
return new SwiftVisitorBase<RuleContext, Void>() {
@Override
public Void visitFunctionDeclaration(final FunctionDeclarationContext ctx, RuleContext ruleCtx) {
public Void visitFunctionDeclaration(final SwFunctionDeclaration ctx, RuleContext ruleCtx) {
if (ctx == null) {
return null;
}
if (shouldIncludeUnavailableModifier(ctx.functionBody().codeBlock())) {
final SwiftParser.AttributesContext attributes = ctx.functionHead().attributes();
final SwAttributes attributes = ctx.functionHead().attributes();
if (attributes == null || !hasUnavailableModifier(attributes.attribute())) {
addViolation(ruleCtx, ctx);
}
@ -46,13 +49,13 @@ public class UnavailableFunctionRule extends AbstractSwiftRule {
}
@Override
public Void visitInitializerDeclaration(final InitializerDeclarationContext ctx, RuleContext ruleCtx) {
public Void visitInitializerDeclaration(final SwInitializerDeclaration ctx, RuleContext ruleCtx) {
if (ctx == null) {
return null;
}
if (shouldIncludeUnavailableModifier(ctx.initializerBody().codeBlock())) {
final SwiftParser.AttributesContext attributes = ctx.initializerHead().attributes();
final SwAttributes attributes = ctx.initializerHead().attributes();
if (attributes == null || !hasUnavailableModifier(attributes.attribute())) {
addViolation(ruleCtx, ctx);
}
@ -61,17 +64,17 @@ public class UnavailableFunctionRule extends AbstractSwiftRule {
return null;
}
private boolean shouldIncludeUnavailableModifier(final SwiftParser.CodeBlockContext ctx) {
private boolean shouldIncludeUnavailableModifier(final SwCodeBlock ctx) {
if (ctx == null || ctx.statements() == null) {
return false;
}
final List<SwiftParser.StatementContext> statements = ctx.statements().statement();
final List<SwStatement> statements = ctx.statements().statement();
return statements.size() == 1 && FATAL_ERROR.equals(statements.get(0).getFirstAntlrToken().getText());
}
private boolean hasUnavailableModifier(final List<SwiftParser.AttributeContext> attributes) {
private boolean hasUnavailableModifier(final List<SwAttribute> attributes) {
return attributes.stream().anyMatch(atr -> AVAILABLE_UNAVAILABLE.equals(atr.joinTokenText()));
}
};

View File

@ -8,18 +8,18 @@ import org.jetbrains.annotations.NotNull;
import net.sourceforge.pmd.lang.ast.test.BaseParsingHelper;
import net.sourceforge.pmd.lang.swift.SwiftLanguageModule;
import net.sourceforge.pmd.lang.swift.ast.SwiftParser.TopLevelContext;
import net.sourceforge.pmd.lang.swift.ast.SwiftParser.SwTopLevel;
/**
*
*/
public class SwiftParsingHelper extends BaseParsingHelper<SwiftParsingHelper, TopLevelContext> {
public class SwiftParsingHelper extends BaseParsingHelper<SwiftParsingHelper, SwTopLevel> {
public static final SwiftParsingHelper DEFAULT = new SwiftParsingHelper(Params.getDefaultNoProcess());
public SwiftParsingHelper(@NotNull Params params) {
super(SwiftLanguageModule.NAME, TopLevelContext.class, params);
super(SwiftLanguageModule.NAME, SwTopLevel.class, params);
}
@NotNull