diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/cpd/internal/AntlrTokenizer.java b/pmd-core/src/main/java/net/sourceforge/pmd/cpd/internal/AntlrTokenizer.java index 81ec427a09..f0659b952b 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/cpd/internal/AntlrTokenizer.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/cpd/internal/AntlrTokenizer.java @@ -19,7 +19,7 @@ import net.sourceforge.pmd.cpd.token.AntlrTokenFilter; import net.sourceforge.pmd.lang.ast.impl.antlr4.AntlrToken; import net.sourceforge.pmd.lang.ast.impl.antlr4.AntlrTokenManager; import net.sourceforge.pmd.util.document.TextDocument; -import net.sourceforge.pmd.util.document.io.CpdCompat; +import net.sourceforge.pmd.util.document.CpdCompat; /** * Generic implementation of a {@link Tokenizer} useful to any Antlr grammar. diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/cpd/internal/JavaCCTokenizer.java b/pmd-core/src/main/java/net/sourceforge/pmd/cpd/internal/JavaCCTokenizer.java index 5905745d51..a068485618 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/cpd/internal/JavaCCTokenizer.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/cpd/internal/JavaCCTokenizer.java @@ -17,14 +17,14 @@ import net.sourceforge.pmd.lang.ast.TokenMgrError; 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.io.CharStream; +import net.sourceforge.pmd.util.document.CpdCompat; import net.sourceforge.pmd.util.document.TextDocument; -import net.sourceforge.pmd.util.document.io.PmdFiles; public abstract class JavaCCTokenizer implements Tokenizer { @SuppressWarnings("PMD.CloseResource") protected TokenManager getLexerForSource(SourceCode sourceCode) throws IOException { - TextDocument textDocument = TextDocument.create(PmdFiles.cpdCompat(sourceCode)); + TextDocument textDocument = TextDocument.create(CpdCompat.cpdCompat(sourceCode)); JavaccTokenDocument tokenDoc = newTokenDoc(textDocument); return makeLexerImpl(CharStream.create(tokenDoc)); } diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/util/document/CpdCompat.java b/pmd-core/src/main/java/net/sourceforge/pmd/util/document/CpdCompat.java new file mode 100644 index 0000000000..fa677a573f --- /dev/null +++ b/pmd-core/src/main/java/net/sourceforge/pmd/util/document/CpdCompat.java @@ -0,0 +1,53 @@ +/* + * BSD-style license; for more info see http://pmd.sourceforge.net/license.html + */ + +package net.sourceforge.pmd.util.document; + +import net.sourceforge.pmd.cpd.SourceCode; +import net.sourceforge.pmd.lang.BaseLanguageModule; +import net.sourceforge.pmd.lang.Language; +import net.sourceforge.pmd.lang.LanguageVersion; + +/** + * Compatibility APIs, to be removed before PMD 7 is out. + */ +@Deprecated +public final class CpdCompat { + + private CpdCompat() { + // utility class + } + + + /** The language version must be non-null. */ + @Deprecated + private static final Language DUMMY_LANG = new BaseLanguageModule("dummy", "dummy", "dummy", "dummy") { + { + addDefaultVersion("", parserOptions -> task -> { + throw new UnsupportedOperationException(); + }); + } + + }; + + @Deprecated + public static LanguageVersion dummyVersion() { + return DUMMY_LANG.getDefaultVersion(); + } + + /** + * Bridges {@link SourceCode} with {@link TextFile}. This allows + * javacc tokenizers to work on text documents. + * + * @deprecated This is only a transitional API for the PMD 7 branch + */ + @Deprecated + public static TextFile cpdCompat(SourceCode sourceCode) { + return TextFile.forCharSeq( + sourceCode.getCodeBuffer(), + sourceCode.getFileName(), + dummyVersion() + ); + } +} diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/util/treeexport/TreeExportCli.java b/pmd-core/src/main/java/net/sourceforge/pmd/util/treeexport/TreeExportCli.java index a84bb49b7e..16455a62aa 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/util/treeexport/TreeExportCli.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/util/treeexport/TreeExportCli.java @@ -168,7 +168,7 @@ public class TreeExportCli { throw bail("One of --file or --read-stdin must be mentioned"); } else if (readStdin) { System.err.println("Reading from stdin..."); - textFile = TextFile.forCharSeq(readFromSystemIn(), "stdin", langVersion).build(); + textFile = TextFile.forCharSeq(readFromSystemIn(), "stdin", langVersion); } else { textFile = TextFile.forPath(Paths.get(file), Charset.forName(encoding), langVersion).build(); } diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/cpd/token/internal/BaseTokenFilterTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/cpd/token/internal/BaseTokenFilterTest.java index 53eb394d49..16bcdb6b01 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/cpd/token/internal/BaseTokenFilterTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/cpd/token/internal/BaseTokenFilterTest.java @@ -56,11 +56,6 @@ public class BaseTokenFilterTest { return text; } - @Override - public TextRegion getRegion() { - return TextRegion.fromBothOffsets(0, text.length()); - } - @Override public FileLocation getReportLocation() { return FileLocation.location("n/a", 0, 0, 0, 0); diff --git a/pmd-cpp/src/main/java/net/sourceforge/pmd/cpd/CPPTokenizer.java b/pmd-cpp/src/main/java/net/sourceforge/pmd/cpd/CPPTokenizer.java index 43add8f056..dc764c9939 100644 --- a/pmd-cpp/src/main/java/net/sourceforge/pmd/cpd/CPPTokenizer.java +++ b/pmd-cpp/src/main/java/net/sourceforge/pmd/cpd/CPPTokenizer.java @@ -19,7 +19,7 @@ import net.sourceforge.pmd.lang.cpp.ast.CppEscapeReader; import net.sourceforge.pmd.lang.cpp.ast.CppTokenKinds; import net.sourceforge.pmd.util.document.Chars; import net.sourceforge.pmd.util.document.TextDocument; -import net.sourceforge.pmd.util.document.io.TextFileContent; +import net.sourceforge.pmd.util.document.TextFileContent; /** * The C++ tokenizer. diff --git a/pmd-cpp/src/test/java/net/sourceforge/pmd/cpd/CppCharStreamTest.java b/pmd-cpp/src/test/java/net/sourceforge/pmd/cpd/CppCharStreamTest.java index 1743e05518..42eb5c1dd9 100644 --- a/pmd-cpp/src/test/java/net/sourceforge/pmd/cpd/CppCharStreamTest.java +++ b/pmd-cpp/src/test/java/net/sourceforge/pmd/cpd/CppCharStreamTest.java @@ -12,15 +12,15 @@ import org.checkerframework.checker.nullness.qual.NonNull; import org.junit.Test; import net.sourceforge.pmd.lang.ast.impl.javacc.io.CharStream; +import net.sourceforge.pmd.util.document.CpdCompat; import net.sourceforge.pmd.util.document.TextDocument; -import net.sourceforge.pmd.util.document.io.PmdFiles; -import net.sourceforge.pmd.util.document.io.TextFile; +import net.sourceforge.pmd.util.document.TextFile; public class CppCharStreamTest { @NonNull public CharStream charStreamFor(String source) throws IOException { - TextDocument textDoc = TextDocument.create(PmdFiles.forString(source, TextFile.UNKNOWN_FILENAME, PmdFiles.dummyCpdVersion())); + TextDocument textDoc = TextDocument.readOnlyString(source, TextFile.UNKNOWN_FILENAME, CpdCompat.dummyVersion()); return CharStream.create(new CPPTokenizer().newTokenDoc(textDoc)); }