Remove ImmutableLanguage

This commit is contained in:
Clément Fournier
2020-08-25 15:22:38 +02:00
parent 7a456e5b93
commit 5f8e5fc1ff
12 changed files with 19 additions and 45 deletions

View File

@ -12,10 +12,9 @@ import net.sourceforge.pmd.lang.apex.ApexParserOptions;
import net.sourceforge.pmd.lang.apex.ast.ApexParserVisitor;
import net.sourceforge.pmd.lang.ast.Node;
import net.sourceforge.pmd.lang.rule.AbstractRule;
import net.sourceforge.pmd.lang.rule.ImmutableLanguage;
public abstract class AbstractApexRule extends AbstractRule
implements ApexParserVisitor, ImmutableLanguage {
implements ApexParserVisitor {
public AbstractApexRule() {
super.setLanguage(LanguageRegistry.getLanguage(ApexLanguageModule.NAME));

View File

@ -31,7 +31,6 @@ import org.w3c.dom.Text;
import net.sourceforge.pmd.lang.Language;
import net.sourceforge.pmd.lang.LanguageVersion;
import net.sourceforge.pmd.lang.rule.ImmutableLanguage;
import net.sourceforge.pmd.lang.rule.RuleReference;
import net.sourceforge.pmd.lang.rule.XPathRule;
import net.sourceforge.pmd.properties.PropertyDescriptor;
@ -190,13 +189,13 @@ public class RuleSetWriter {
propertyDescriptors, propertiesByPropertyDescriptor, examples);
}
} else {
return createSingleRuleElement(rule instanceof ImmutableLanguage ? null : rule.getLanguage(),
rule.getMinimumLanguageVersion(), rule.getMaximumLanguageVersion(), rule.isDeprecated(),
rule.getName(), rule.getSince(), null, rule.getMessage(), rule.getExternalInfoUrl(),
rule.getRuleClass(),
rule.getDescription(),
rule.getPriority(), rule.getPropertyDescriptors(), rule.getPropertiesByPropertyDescriptor(),
rule.getExamples());
return createSingleRuleElement(rule.getLanguage(),
rule.getMinimumLanguageVersion(), rule.getMaximumLanguageVersion(), rule.isDeprecated(),
rule.getName(), rule.getSince(), null, rule.getMessage(), rule.getExternalInfoUrl(),
rule.getRuleClass(),
rule.getDescription(),
rule.getPriority(), rule.getPropertyDescriptors(), rule.getPropertiesByPropertyDescriptor(),
rule.getExamples());
}
}
@ -212,7 +211,8 @@ public class RuleSetWriter {
String description, RulePriority priority, List<PropertyDescriptor<?>> propertyDescriptors,
Map<PropertyDescriptor<?>, Object> propertiesByPropertyDescriptor, List<String> examples) {
Element ruleElement = createRuleElement();
if (language != null) {
// language is now a required attribute, unless this is a rule reference
if (clazz != null) {
ruleElement.setAttribute("language", language.getTerseName());
}
if (minimumLanguageVersion != null) {

View File

@ -93,7 +93,7 @@ public abstract class AbstractRule extends AbstractPropertySource implements Rul
@Override
public void setLanguage(Language language) {
if (this.language != null && this instanceof ImmutableLanguage && !this.language.equals(language)) {
if (this.language != null && !this.language.equals(language)) {
throw new UnsupportedOperationException("The Language for Rule class " + this.getClass().getName()
+ " is immutable and cannot be changed.");
}

View File

@ -1,17 +0,0 @@
/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.lang.rule;
/**
* This is a tag interface to indicate that a Rule implementation class does not
* support changes to it's Language. The Language is integral to the proper
* functioning of the Rule.
*
* @deprecated No rule supports a change to their language. This will
* be made the default behaviour with PMD 7.0.0.
*/
@Deprecated
public interface ImmutableLanguage {
}

View File

@ -18,7 +18,6 @@ import net.sourceforge.pmd.lang.java.ast.ASTImportDeclaration;
import net.sourceforge.pmd.lang.java.ast.JavaParserVisitor;
import net.sourceforge.pmd.lang.java.internal.JavaProcessingStage;
import net.sourceforge.pmd.lang.rule.AbstractRule;
import net.sourceforge.pmd.lang.rule.ImmutableLanguage;
/**
@ -28,7 +27,7 @@ import net.sourceforge.pmd.lang.rule.ImmutableLanguage;
* TODO add documentation
*
*/
public abstract class AbstractJavaRule extends AbstractRule implements JavaParserVisitor, ImmutableLanguage {
public abstract class AbstractJavaRule extends AbstractRule implements JavaParserVisitor {
public AbstractJavaRule() {
super.setLanguage(LanguageRegistry.getLanguage(JavaLanguageModule.NAME));

View File

@ -13,12 +13,11 @@ import net.sourceforge.pmd.lang.ecmascript.EcmascriptParserOptions;
import net.sourceforge.pmd.lang.ecmascript.EcmascriptParserOptions.Version;
import net.sourceforge.pmd.lang.ecmascript.ast.EcmascriptParserVisitor;
import net.sourceforge.pmd.lang.rule.AbstractRule;
import net.sourceforge.pmd.lang.rule.ImmutableLanguage;
import net.sourceforge.pmd.properties.PropertyDescriptor;
public abstract class AbstractEcmascriptRule extends AbstractRule
implements EcmascriptParserVisitor, ImmutableLanguage {
implements EcmascriptParserVisitor {
private static final PropertyDescriptor<Boolean> RECORDING_COMMENTS_DESCRIPTOR = EcmascriptParserOptions.RECORDING_COMMENTS_DESCRIPTOR;
private static final PropertyDescriptor<Boolean> RECORDING_LOCAL_JSDOC_COMMENTS_DESCRIPTOR = EcmascriptParserOptions.RECORDING_LOCAL_JSDOC_COMMENTS_DESCRIPTOR;

View File

@ -10,9 +10,8 @@ import net.sourceforge.pmd.lang.ast.Node;
import net.sourceforge.pmd.lang.jsp.JspLanguageModule;
import net.sourceforge.pmd.lang.jsp.ast.JspParserVisitor;
import net.sourceforge.pmd.lang.rule.AbstractRule;
import net.sourceforge.pmd.lang.rule.ImmutableLanguage;
public abstract class AbstractJspRule extends AbstractRule implements JspParserVisitor, ImmutableLanguage {
public abstract class AbstractJspRule extends AbstractRule implements JspParserVisitor {
public AbstractJspRule() {
super.setLanguage(LanguageRegistry.getLanguage(JspLanguageModule.NAME));

View File

@ -13,12 +13,11 @@ import net.sourceforge.pmd.lang.modelica.ast.ModelicaNode;
import net.sourceforge.pmd.lang.modelica.ast.ModelicaParserVisitor;
import net.sourceforge.pmd.lang.modelica.internal.ModelicaProcessingStage;
import net.sourceforge.pmd.lang.rule.AbstractRule;
import net.sourceforge.pmd.lang.rule.ImmutableLanguage;
/**
* Base class for rules for Modelica language.
*/
public abstract class AbstractModelicaRule extends AbstractRule implements ModelicaParserVisitor, ImmutableLanguage {
public abstract class AbstractModelicaRule extends AbstractRule implements ModelicaParserVisitor {
public AbstractModelicaRule() {
super.setLanguage(LanguageRegistry.getLanguage(ModelicaLanguageModule.NAME));
}

View File

@ -22,9 +22,8 @@ import net.sourceforge.pmd.lang.plsql.ast.ExecutableCode;
import net.sourceforge.pmd.lang.plsql.ast.PLSQLNode;
import net.sourceforge.pmd.lang.plsql.ast.PLSQLParserVisitor;
import net.sourceforge.pmd.lang.rule.AbstractRule;
import net.sourceforge.pmd.lang.rule.ImmutableLanguage;
public abstract class AbstractPLSQLRule extends AbstractRule implements PLSQLParserVisitor, ImmutableLanguage {
public abstract class AbstractPLSQLRule extends AbstractRule implements PLSQLParserVisitor {
private static final Logger LOGGER = Logger.getLogger(AbstractPLSQLRule.class.getName());
private static final String CLASS_NAME = AbstractPLSQLRule.class.getName();

View File

@ -8,12 +8,11 @@ import net.sourceforge.pmd.RuleContext;
import net.sourceforge.pmd.lang.LanguageRegistry;
import net.sourceforge.pmd.lang.ast.Node;
import net.sourceforge.pmd.lang.rule.AbstractRule;
import net.sourceforge.pmd.lang.rule.ImmutableLanguage;
import net.sourceforge.pmd.lang.vf.VfLanguageModule;
import net.sourceforge.pmd.lang.vf.ast.VfNode;
import net.sourceforge.pmd.lang.vf.ast.VfParserVisitor;
public abstract class AbstractVfRule extends AbstractRule implements VfParserVisitor, ImmutableLanguage {
public abstract class AbstractVfRule extends AbstractRule implements VfParserVisitor {
public AbstractVfRule() {
super.setLanguage(LanguageRegistry.getLanguage(VfLanguageModule.NAME));

View File

@ -8,12 +8,11 @@ import net.sourceforge.pmd.RuleContext;
import net.sourceforge.pmd.lang.LanguageRegistry;
import net.sourceforge.pmd.lang.ast.Node;
import net.sourceforge.pmd.lang.rule.AbstractRule;
import net.sourceforge.pmd.lang.rule.ImmutableLanguage;
import net.sourceforge.pmd.lang.vm.VmLanguageModule;
import net.sourceforge.pmd.lang.vm.ast.VmNode;
import net.sourceforge.pmd.lang.vm.ast.VmParserVisitor;
public abstract class AbstractVmRule extends AbstractRule implements VmParserVisitor, ImmutableLanguage {
public abstract class AbstractVmRule extends AbstractRule implements VmParserVisitor {
public AbstractVmRule() {
super.setLanguage(LanguageRegistry.getLanguage(VmLanguageModule.NAME));

View File

@ -10,7 +10,6 @@ import net.sourceforge.pmd.lang.LanguageRegistry;
import net.sourceforge.pmd.lang.ParserOptions;
import net.sourceforge.pmd.lang.ast.Node;
import net.sourceforge.pmd.lang.rule.AbstractRule;
import net.sourceforge.pmd.lang.rule.ImmutableLanguage;
import net.sourceforge.pmd.lang.xml.XmlLanguageModule;
import net.sourceforge.pmd.lang.xml.XmlParserOptions;
import net.sourceforge.pmd.lang.xml.ast.XmlNode;
@ -21,7 +20,7 @@ import net.sourceforge.pmd.properties.PropertyDescriptor;
* {@link #visit(XmlNode, RuleContext)} and can call <code>super</code> to visit
* children.
*/
public class AbstractXmlRule extends AbstractRule implements ImmutableLanguage {
public class AbstractXmlRule extends AbstractRule {
@Deprecated
public static final PropertyDescriptor<Boolean> COALESCING_DESCRIPTOR = XmlParserOptions.COALESCING_DESCRIPTOR;