From fa31d54bd7b38bd1f54ebecc26d44523238de825 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fournier?= Date: Thu, 8 Jul 2021 19:04:29 +0200 Subject: [PATCH] Fix tests --- .../net/sourceforge/pmd/lang/ast/Parser.java | 28 ++++++++++++++++--- .../pmd/processor/PmdRunnable.java | 1 + .../sourceforge/pmd/cpd/CppBlockSkipper.java | 2 +- .../pmd/cpd/CppEscapeTranslator.java | 3 +- .../sourceforge/pmd/cpd/JavaTokenizer.java | 3 +- .../pmd/lang/java/ast/ASTCompilationUnit.java | 2 +- .../pmd/lang/modelica/ast/ModelicaParser.java | 4 +-- .../sourceforge/pmd/cpd/PythonTokenizer.java | 3 -- 8 files changed, 31 insertions(+), 15 deletions(-) diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/Parser.java b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/Parser.java index 4aeddec9ce..61d8479b62 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/Parser.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/lang/ast/Parser.java @@ -48,14 +48,17 @@ public interface Parser { private final TextDocument textDoc; private final SemanticErrorReporter reporter; - private final PropertySource propertySource; + private final ParserTaskProperties propertySource; public ParserTask(TextDocument textDoc, SemanticErrorReporter reporter) { + this(textDoc, reporter, new ParserTaskProperties()); + } + + private ParserTask(TextDocument textDoc, SemanticErrorReporter reporter, ParserTaskProperties source) { this.textDoc = Objects.requireNonNull(textDoc, "Text document was null"); this.reporter = Objects.requireNonNull(reporter, "reporter was null"); - this.propertySource = new ParserTaskProperties(); - propertySource.definePropertyDescriptor(COMMENT_MARKER); + this.propertySource = new ParserTaskProperties(source); } public static final PropertyDescriptor COMMENT_MARKER = @@ -114,12 +117,29 @@ public interface Parser { * Replace the text document with another. */ public ParserTask withTextDocument(TextDocument doc) { - return new ParserTask(doc, this.reporter); + return new ParserTask(doc, this.reporter, this.propertySource); } private static final class ParserTaskProperties extends AbstractPropertySource { + ParserTaskProperties() { + definePropertyDescriptor(COMMENT_MARKER); + } + + ParserTaskProperties(ParserTaskProperties toCopy) { + for (PropertyDescriptor prop : toCopy.getPropertyDescriptors()) { + definePropertyDescriptor(prop); + } + toCopy.getOverriddenPropertyDescriptors().forEach( + prop -> copyProperty(prop, toCopy, this) + ); + } + + static void copyProperty(PropertyDescriptor prop, PropertySource source, PropertySource target) { + target.setProperty(prop, source.getProperty(prop)); + } + @Override protected String getPropertySourceType() { return "ParserOptions"; diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/processor/PmdRunnable.java b/pmd-core/src/main/java/net/sourceforge/pmd/processor/PmdRunnable.java index 4f2ee96385..1f0b25ac7b 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/processor/PmdRunnable.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/processor/PmdRunnable.java @@ -123,6 +123,7 @@ abstract class PmdRunnable implements Runnable { handler.declareParserTaskProperties(task.getProperties()); task.getProperties().setProperty(ParserTask.COMMENT_MARKER, configuration.getSuppressMarker()); + assert task.getCommentMarker().equals(configuration.getSuppressMarker()); Parser parser = handler.getParser(); diff --git a/pmd-cpp/src/main/java/net/sourceforge/pmd/cpd/CppBlockSkipper.java b/pmd-cpp/src/main/java/net/sourceforge/pmd/cpd/CppBlockSkipper.java index 4770579f60..4dcb9273db 100644 --- a/pmd-cpp/src/main/java/net/sourceforge/pmd/cpd/CppBlockSkipper.java +++ b/pmd-cpp/src/main/java/net/sourceforge/pmd/cpd/CppBlockSkipper.java @@ -24,7 +24,7 @@ class CppBlockSkipper extends EscapeTranslator { return Pattern.compile("^(?i)" + Pattern.quote(marker), Pattern.MULTILINE); } - public CppBlockSkipper(TextDocument original, Pattern skipStartMarker, Pattern skipEndMarker) { + CppBlockSkipper(TextDocument original, Pattern skipStartMarker, Pattern skipEndMarker) { super(original); skipStart = skipStartMarker; skipEnd = skipEndMarker; diff --git a/pmd-cpp/src/main/java/net/sourceforge/pmd/cpd/CppEscapeTranslator.java b/pmd-cpp/src/main/java/net/sourceforge/pmd/cpd/CppEscapeTranslator.java index 5a4f0257aa..90bfd3576a 100644 --- a/pmd-cpp/src/main/java/net/sourceforge/pmd/cpd/CppEscapeTranslator.java +++ b/pmd-cpp/src/main/java/net/sourceforge/pmd/cpd/CppEscapeTranslator.java @@ -24,7 +24,8 @@ public class CppEscapeTranslator extends BackslashEscapeTranslator { if (input.charAt(off) == NEWLINE) { return recordEscape(backSlashOff, off + 1, Chars.EMPTY); } else if (input.charAt(off) == CARRIAGE_RETURN) { - if (input.charAt(++off) == NEWLINE) { + off++; + if (input.charAt(off) == NEWLINE) { return recordEscape(backSlashOff, off + 1, Chars.EMPTY); } } diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/cpd/JavaTokenizer.java b/pmd-java/src/main/java/net/sourceforge/pmd/cpd/JavaTokenizer.java index 39d1eb3699..5d769e12c8 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/cpd/JavaTokenizer.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/cpd/JavaTokenizer.java @@ -13,12 +13,11 @@ import net.sourceforge.pmd.cpd.internal.JavaCCTokenizer; import net.sourceforge.pmd.cpd.token.JavaCCTokenFilter; import net.sourceforge.pmd.cpd.token.TokenFilter; import net.sourceforge.pmd.lang.TokenManager; +import net.sourceforge.pmd.lang.ast.impl.javacc.CharStream; import net.sourceforge.pmd.lang.ast.impl.javacc.JavaccToken; import net.sourceforge.pmd.lang.ast.impl.javacc.JavaccTokenDocument; -import net.sourceforge.pmd.lang.ast.impl.javacc.CharStream; import net.sourceforge.pmd.lang.java.ast.InternalApiBridge; import net.sourceforge.pmd.lang.java.ast.JavaTokenKinds; -import net.sourceforge.pmd.util.document.TextDocument; public class JavaTokenizer extends JavaCCTokenizer { diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/ASTCompilationUnit.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/ASTCompilationUnit.java index ae476de730..1b6ba66f57 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/ASTCompilationUnit.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/ast/ASTCompilationUnit.java @@ -43,7 +43,7 @@ public final class ASTCompilationUnit extends AbstractJavaTypeNode implements Ja return astInfo; } - void setComments(List comments) { + void setComments(List comments) { this.comments = comments; } diff --git a/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/ast/ModelicaParser.java b/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/ast/ModelicaParser.java index 560602b46a..27144242b5 100644 --- a/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/ast/ModelicaParser.java +++ b/pmd-modelica/src/main/java/net/sourceforge/pmd/lang/modelica/ast/ModelicaParser.java @@ -4,10 +4,8 @@ package net.sourceforge.pmd.lang.modelica.ast; -import org.checkerframework.checker.nullness.qual.Nullable; - -import net.sourceforge.pmd.lang.ast.impl.javacc.CharStream; import net.sourceforge.pmd.lang.ast.ParseException; +import net.sourceforge.pmd.lang.ast.impl.javacc.CharStream; import net.sourceforge.pmd.lang.ast.impl.javacc.JavaccTokenDocument.TokenDocumentBehavior; import net.sourceforge.pmd.lang.ast.impl.javacc.JjtreeParserAdapter; diff --git a/pmd-python/src/main/java/net/sourceforge/pmd/cpd/PythonTokenizer.java b/pmd-python/src/main/java/net/sourceforge/pmd/cpd/PythonTokenizer.java index 3ebcd5a7e1..c80d572f67 100644 --- a/pmd-python/src/main/java/net/sourceforge/pmd/cpd/PythonTokenizer.java +++ b/pmd-python/src/main/java/net/sourceforge/pmd/cpd/PythonTokenizer.java @@ -6,8 +6,6 @@ package net.sourceforge.pmd.cpd; import java.util.regex.Pattern; -import org.checkerframework.checker.nullness.qual.Nullable; - import net.sourceforge.pmd.cpd.internal.JavaCCTokenizer; import net.sourceforge.pmd.lang.TokenManager; import net.sourceforge.pmd.lang.ast.impl.javacc.CharStream; @@ -15,7 +13,6 @@ import net.sourceforge.pmd.lang.ast.impl.javacc.JavaccToken; import net.sourceforge.pmd.lang.ast.impl.javacc.JavaccTokenDocument; import net.sourceforge.pmd.lang.ast.impl.javacc.JavaccTokenDocument.TokenDocumentBehavior; import net.sourceforge.pmd.lang.python.ast.PythonTokenKinds; -import net.sourceforge.pmd.util.document.TextDocument; /** * The Python tokenizer.