From dfe03470e6561ece1c694be9944faaae21eee7b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fournier?= Date: Sat, 18 Feb 2023 16:39:30 +0100 Subject: [PATCH 1/2] Compat with latest pmd 7 --- .../util/fxdesigner/MetricPaneController.java | 2 +- .../fxdesigner/app/ApplicationComponent.java | 12 +-- .../fxdesigner/app/XPathUpdateSubscriber.java | 1 - .../fxdesigner/app/services/ASTManager.java | 3 + .../app/services/ASTManagerImpl.java | 97 +++++++++++++++++-- .../util/fxdesigner/model/XPathEvaluator.java | 8 +- .../model/testing/TestXmlDumper.java | 4 +- .../model/testing/TestXmlParser.java | 3 +- .../fxdesigner/util/AuxLanguageRegistry.java | 25 +++-- .../fxdesigner/util/PlainTextLanguage.java | 74 -------------- .../util/codearea/PlainTextLanguageTest.kt | 12 ++- 11 files changed, 125 insertions(+), 116 deletions(-) delete mode 100644 src/main/java/net/sourceforge/pmd/util/fxdesigner/util/PlainTextLanguage.java diff --git a/src/main/java/net/sourceforge/pmd/util/fxdesigner/MetricPaneController.java b/src/main/java/net/sourceforge/pmd/util/fxdesigner/MetricPaneController.java index ce921693..8e95790e 100644 --- a/src/main/java/net/sourceforge/pmd/util/fxdesigner/MetricPaneController.java +++ b/src/main/java/net/sourceforge/pmd/util/fxdesigner/MetricPaneController.java @@ -84,7 +84,7 @@ public Val numAvailableMetrics() { private ObservableList> evaluateAllMetrics(Node n) { - LanguageMetricsProvider provider = getGlobalLanguageVersion().getLanguageVersionHandler().getLanguageMetricsProvider(); + LanguageMetricsProvider provider = n.getAstInfo().getLanguageProcessor().services().getLanguageMetricsProvider(); if (provider == null) { return FXCollections.emptyObservableList(); } diff --git a/src/main/java/net/sourceforge/pmd/util/fxdesigner/app/ApplicationComponent.java b/src/main/java/net/sourceforge/pmd/util/fxdesigner/app/ApplicationComponent.java index 8f0d4e0a..8d9494fd 100644 --- a/src/main/java/net/sourceforge/pmd/util/fxdesigner/app/ApplicationComponent.java +++ b/src/main/java/net/sourceforge/pmd/util/fxdesigner/app/ApplicationComponent.java @@ -10,8 +10,6 @@ import org.reactfx.value.Val; import net.sourceforge.pmd.lang.Language; -import net.sourceforge.pmd.lang.LanguageVersion; -import net.sourceforge.pmd.lang.LanguageVersionHandler; import net.sourceforge.pmd.util.designerbindings.DesignerBindings; import net.sourceforge.pmd.util.fxdesigner.SourceEditorController; import net.sourceforge.pmd.util.fxdesigner.app.services.AppServiceDescriptor; @@ -50,11 +48,6 @@ default T getService(AppServiceDescriptor descriptor) { } - default LanguageVersion getGlobalLanguageVersion() { - return getService(DesignerRoot.AST_MANAGER).languageVersionProperty().getValue(); - } - - /** * The language is now global to the app. */ @@ -65,9 +58,8 @@ default LanguageVersion getGlobalLanguageVersion() { default Val languageBindingsProperty() { return getService(DesignerRoot.AST_MANAGER) - .languageVersionProperty() - .map(LanguageVersion::getLanguageVersionHandler) - .map(LanguageVersionHandler::getDesignerBindings); + .languageProcessorProperty() + .map(lp -> lp.services().getDesignerBindings()); } diff --git a/src/main/java/net/sourceforge/pmd/util/fxdesigner/app/XPathUpdateSubscriber.java b/src/main/java/net/sourceforge/pmd/util/fxdesigner/app/XPathUpdateSubscriber.java index 2f50ea3b..6020648e 100644 --- a/src/main/java/net/sourceforge/pmd/util/fxdesigner/app/XPathUpdateSubscriber.java +++ b/src/main/java/net/sourceforge/pmd/util/fxdesigner/app/XPathUpdateSubscriber.java @@ -57,7 +57,6 @@ public Subscription init(ASTManager astManager) { try { List results = XPathEvaluator.evaluateQuery(compil, - astManager.languageVersionProperty().getValue(), query.getVersion(), query.getExpression(), props, diff --git a/src/main/java/net/sourceforge/pmd/util/fxdesigner/app/services/ASTManager.java b/src/main/java/net/sourceforge/pmd/util/fxdesigner/app/services/ASTManager.java index ce323a26..d7faed88 100644 --- a/src/main/java/net/sourceforge/pmd/util/fxdesigner/app/services/ASTManager.java +++ b/src/main/java/net/sourceforge/pmd/util/fxdesigner/app/services/ASTManager.java @@ -10,6 +10,7 @@ import org.reactfx.value.Val; import org.reactfx.value.Var; +import net.sourceforge.pmd.lang.LanguageProcessor; import net.sourceforge.pmd.lang.LanguageVersion; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.document.TextDocument; @@ -43,6 +44,8 @@ public interface ASTManager extends ApplicationComponent, SettingsOwner { Val languageVersionProperty(); + Val languageProcessorProperty(); + Val compilationUnitProperty(); diff --git a/src/main/java/net/sourceforge/pmd/util/fxdesigner/app/services/ASTManagerImpl.java b/src/main/java/net/sourceforge/pmd/util/fxdesigner/app/services/ASTManagerImpl.java index 374687df..79811f18 100644 --- a/src/main/java/net/sourceforge/pmd/util/fxdesigner/app/services/ASTManagerImpl.java +++ b/src/main/java/net/sourceforge/pmd/util/fxdesigner/app/services/ASTManagerImpl.java @@ -9,18 +9,26 @@ import java.time.Duration; import java.util.Collections; +import java.util.HashMap; import java.util.Map; import java.util.Objects; import java.util.Optional; import org.apache.commons.lang3.StringUtils; import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; import org.reactfx.value.SuspendableVar; import org.reactfx.value.Val; import org.reactfx.value.Var; - +import org.slf4j.event.Level; + +import net.sourceforge.pmd.lang.JvmLanguagePropertyBundle; +import net.sourceforge.pmd.lang.Language; +import net.sourceforge.pmd.lang.LanguageProcessor; +import net.sourceforge.pmd.lang.LanguageProcessorRegistry; +import net.sourceforge.pmd.lang.LanguagePropertyBundle; +import net.sourceforge.pmd.lang.LanguageRegistry; import net.sourceforge.pmd.lang.LanguageVersion; -import net.sourceforge.pmd.lang.LanguageVersionHandler; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.ast.Parser.ParserTask; import net.sourceforge.pmd.lang.ast.RootNode; @@ -33,6 +41,7 @@ import net.sourceforge.pmd.util.fxdesigner.model.ParseAbortedException; import net.sourceforge.pmd.util.fxdesigner.util.AuxLanguageRegistry; import net.sourceforge.pmd.util.fxdesigner.util.Tuple3; +import net.sourceforge.pmd.util.log.MessageReporter; /** @@ -43,6 +52,25 @@ */ public class ASTManagerImpl implements ASTManager { + public static final MessageReporter NOOP_REPORTER = new MessageReporter() { // todo replace with MessageReporter.noop + @Override + public boolean isLoggable(Level level) { + return false; + } + + + @Override + public void logEx(Level level, @Nullable String s, Object[] objects, @Nullable Throwable throwable) { + // noop + } + + + @Override + public int numErrors() { + return 0; + } + }; + private final DesignerRoot designerRoot; private final Var auxclasspathClassLoader = Var.newSimpleVar(null); @@ -60,6 +88,7 @@ public class ASTManagerImpl implements ASTManager { */ private final SuspendableVar sourceCode = Var.newSimpleVar("").suspendable(); private final SuspendableVar sourceDocument = Var.newSimpleVar(TextDocument.readOnlyString("", languageVersion.getValue())).suspendable(); + private final SuspendableVar lpRegistry = Var.newSimpleVar(null).suspendable(); private final Var currentException = Var.newSimpleVar(null); @@ -93,7 +122,7 @@ public ASTManagerImpl(DesignerRoot owner) { Node updated; try { - updated = refreshAST(this, source, version, classLoader).orElse(null); + updated = refreshAST(this, source, version, refreshRegistry(version, classLoader)).orElse(null); currentException.setValue(null); } catch (ParseAbortedException e) { updated = null; @@ -158,16 +187,27 @@ public Var> ruleProperties() { return ruleProperties; } + @Override public Var languageVersionProperty() { return languageVersion; } + @Override + public Val languageProcessorProperty() { + return lpRegistry.mapDynamic( + languageVersionProperty().map(LanguageVersion::getLanguage) + .map(l -> lp -> lp.getProcessor(l)) + ); + } + + public LanguageVersion getLanguageVersion() { return languageVersion.getValue(); } + public void setLanguageVersion(LanguageVersion version) { this.languageVersion.setValue(version); } @@ -181,11 +221,51 @@ public Val compilationUnitProperty() { return nodeVal; } + @Override public Var currentExceptionProperty() { return currentException; } + + private LanguageProcessorRegistry refreshRegistry(LanguageVersion version, ClassLoader classLoader) { + LanguageProcessorRegistry current = lpRegistry.getValue(); + if (current == null) { + Map langProperties = new HashMap<>(); + LanguagePropertyBundle bundle = version.getLanguage().newPropertyBundle(); + bundle.setLanguageVersion(version.getVersion()); + if (bundle instanceof JvmLanguagePropertyBundle) { + ((JvmLanguagePropertyBundle) bundle).setClassLoader(classLoader); + } + + langProperties.put(version.getLanguage(), bundle); + + LanguageRegistry languages = + AuxLanguageRegistry.supportedLangs() + .getDependenciesOf(version.getLanguage()); + + LanguageProcessorRegistry newRegistry = + LanguageProcessorRegistry.create(languages, + langProperties, + NOOP_REPORTER); + lpRegistry.setValue(newRegistry); + return newRegistry; + } + + // already created, need to check that the version is the same + if (!current.getLanguages().getLanguages().contains(version.getLanguage()) + || !current.getProcessor(version.getLanguage()).getLanguageVersion().equals(version)) { + // current is invalid, recreate it + current.close(); + lpRegistry.setValue(null); + return refreshRegistry(version, classLoader); + } + + // the current one is fine + return current; + } + + /** * Refreshes the compilation unit given the current state of the model. * @@ -194,20 +274,21 @@ public Var currentExceptionProperty() { private static Optional refreshAST(ApplicationComponent component, String source, LanguageVersion version, - ClassLoader classLoader) throws ParseAbortedException { + LanguageProcessorRegistry lpRegistry) throws ParseAbortedException { String dummyFilePath = "dummy." + version.getLanguage().getExtensions().get(0); TextDocument textDocument = TextDocument.readOnlyString(source, dummyFilePath, version); - LanguageVersionHandler handler = version.getLanguageVersionHandler(); + ParserTask task = new ParserTask( textDocument, SemanticErrorReporter.noop(), - classLoader + lpRegistry ); + LanguageProcessor processor = lpRegistry.getProcessor(version.getLanguage()); RootNode node; try { - node = handler.getParser().parse(task); + node = processor.services().getParser().parse(task); } catch (Exception e) { component.logUserException(e, Category.PARSE_EXCEPTION); throw new ParseAbortedException(e); @@ -215,7 +296,7 @@ private static Optional refreshAST(ApplicationComponent component, // Notify that the parse went OK so we can avoid logging very recent exceptions - component.raiseParsableSourceFlag(() -> "Param hash: " + Objects.hash(source, version, classLoader)); + component.raiseParsableSourceFlag(() -> "Param hash: " + Objects.hash(source, version, lpRegistry)); return Optional.of(node); } diff --git a/src/main/java/net/sourceforge/pmd/util/fxdesigner/model/XPathEvaluator.java b/src/main/java/net/sourceforge/pmd/util/fxdesigner/model/XPathEvaluator.java index 2bf5ee10..63d31050 100644 --- a/src/main/java/net/sourceforge/pmd/util/fxdesigner/model/XPathEvaluator.java +++ b/src/main/java/net/sourceforge/pmd/util/fxdesigner/model/XPathEvaluator.java @@ -14,13 +14,11 @@ import org.apache.commons.lang3.StringUtils; -import net.sourceforge.pmd.lang.LanguageVersion; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.rule.xpath.XPathVersion; import net.sourceforge.pmd.lang.rule.xpath.internal.DeprecatedAttrLogger; // NOPMD import net.sourceforge.pmd.lang.rule.xpath.internal.SaxonXPathRuleQuery; // NOPMD import net.sourceforge.pmd.properties.PropertyDescriptor; -import net.sourceforge.pmd.util.fxdesigner.app.ApplicationComponent; import net.sourceforge.pmd.util.fxdesigner.app.DesignerRoot; @@ -44,14 +42,12 @@ private XPathEvaluator() { * @return The results, or an empty list if there was an error */ public static List simpleEvaluate(DesignerRoot root, String query) { - ApplicationComponent component = () -> root; return root.getService(DesignerRoot.AST_MANAGER) .compilationUnitProperty() .getOpt() .map(n -> { try { return evaluateQuery(n, - component.getGlobalLanguageVersion(), XPathVersion.DEFAULT, query, emptyMap(), @@ -69,7 +65,6 @@ public static List simpleEvaluate(DesignerRoot root, String query) { * no side effects. * * @param compilationUnit AST root - * @param languageVersion language version * @param xpathVersion XPath version * @param xpathQuery XPath query * @param properties Properties of the rule @@ -77,7 +72,6 @@ public static List simpleEvaluate(DesignerRoot root, String query) { * @throws XPathEvaluationException if there was an error during the evaluation. The cause is preserved */ public static List evaluateQuery(Node compilationUnit, - LanguageVersion languageVersion, XPathVersion xpathVersion, String xpathQuery, Map propertyValues, @@ -99,7 +93,7 @@ public static List evaluateQuery(Node compilationUnit, xpathQuery, xpathVersion, allProperties, - languageVersion.getLanguageVersionHandler().getXPathHandler(), + compilationUnit.getAstInfo().getLanguageProcessor().services().getXPathHandler(), DeprecatedAttrLogger.noop() ); diff --git a/src/main/java/net/sourceforge/pmd/util/fxdesigner/model/testing/TestXmlDumper.java b/src/main/java/net/sourceforge/pmd/util/fxdesigner/model/testing/TestXmlDumper.java index 43cca9a4..3e8e5048 100644 --- a/src/main/java/net/sourceforge/pmd/util/fxdesigner/model/testing/TestXmlDumper.java +++ b/src/main/java/net/sourceforge/pmd/util/fxdesigner/model/testing/TestXmlDumper.java @@ -35,8 +35,8 @@ import net.sourceforge.pmd.lang.document.TextDocument; import net.sourceforge.pmd.lang.document.TextRegion; +import net.sourceforge.pmd.util.fxdesigner.util.AuxLanguageRegistry; import net.sourceforge.pmd.util.fxdesigner.util.DesignerUtil; -import net.sourceforge.pmd.util.fxdesigner.util.PlainTextLanguage; public class TestXmlDumper { @@ -100,7 +100,7 @@ private void appendSingle(Element testCode, LiveTestCase descriptor, Document do Element linenos = doc.createElementNS(NS, "expected-linenumbers"); // create a text doc just to ask for line numbers - TextDocument textDocument = TextDocument.readOnlyString(descriptor.getSource(), PlainTextLanguage.INSTANCE.getDefaultVersion()); + TextDocument textDocument = TextDocument.readOnlyString(descriptor.getSource(), AuxLanguageRegistry.plainTextLanguage().getDefaultVersion()); String joined = expectedViolations .stream() diff --git a/src/main/java/net/sourceforge/pmd/util/fxdesigner/model/testing/TestXmlParser.java b/src/main/java/net/sourceforge/pmd/util/fxdesigner/model/testing/TestXmlParser.java index 727c8550..ec3e461b 100644 --- a/src/main/java/net/sourceforge/pmd/util/fxdesigner/model/testing/TestXmlParser.java +++ b/src/main/java/net/sourceforge/pmd/util/fxdesigner/model/testing/TestXmlParser.java @@ -38,7 +38,6 @@ import net.sourceforge.pmd.util.fxdesigner.model.ObservableRuleBuilder; import net.sourceforge.pmd.util.fxdesigner.util.AuxLanguageRegistry; import net.sourceforge.pmd.util.fxdesigner.util.DesignerUtil; -import net.sourceforge.pmd.util.fxdesigner.util.PlainTextLanguage; public class TestXmlParser { @@ -188,7 +187,7 @@ private static LiveTestCase fromDescriptor( // create a document just to map source lines to regions // language is irrelevant so we use plain text @SuppressWarnings("PMD.CloseResource") - TextDocument doc = TextDocument.readOnlyString(code, PlainTextLanguage.INSTANCE.getDefaultVersion()); + TextDocument doc = TextDocument.readOnlyString(code, AuxLanguageRegistry.plainTextLanguage().getDefaultVersion()); for (int i = 0; i < expectedProblems; i++) { String m = messages.size() > i ? messages.get(i) : null; diff --git a/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/AuxLanguageRegistry.java b/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/AuxLanguageRegistry.java index c63a1fed..4c3fda8b 100644 --- a/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/AuxLanguageRegistry.java +++ b/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/AuxLanguageRegistry.java @@ -4,6 +4,9 @@ package net.sourceforge.pmd.util.fxdesigner.util; +import static net.sourceforge.pmd.util.CollectionUtil.setOf; +import static net.sourceforge.pmd.util.CollectionUtil.union; + import java.util.HashMap; import java.util.List; import java.util.Map; @@ -17,6 +20,7 @@ import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.LanguageRegistry; import net.sourceforge.pmd.lang.LanguageVersion; +import net.sourceforge.pmd.lang.PlainTextLanguage; /** * Utilities to extend the functionality of {@link LanguageRegistry}. @@ -26,13 +30,22 @@ public final class AuxLanguageRegistry { private static final String DEFAULT_LANGUAGE_NAME = "Java"; + public static final LanguageRegistry AUX_LANG_REGISTRY = new LanguageRegistry(union(LanguageRegistry.PMD.getLanguages(), + setOf(plainTextLanguage()))); private static List supportedLanguageVersions; private static Map extensionsToLanguage; + private AuxLanguageRegistry() { } + + public static LanguageRegistry supportedLangs() { + return AUX_LANG_REGISTRY; + } + + public static LanguageVersion findLanguageVersionByTerseName(String string) { String[] split = string.split(" "); Language lang = findLanguageByTerseName(split[0]); @@ -63,7 +76,7 @@ public static boolean isXmlDialect(Language language) { } public static Language plainTextLanguage() { - return PlainTextLanguage.INSTANCE; + return PlainTextLanguage.getInstance(); } @NonNull @@ -119,7 +132,7 @@ public static LanguageVersion getLanguageVersionByName(String name) { @NonNull public static Stream getSupportedLanguages() { - return Stream.concat(Stream.of(PlainTextLanguage.INSTANCE), LanguageRegistry.PMD.getLanguages().stream()); + return AUX_LANG_REGISTRY.getLanguages().stream(); } @NonNull @@ -131,9 +144,7 @@ public static Language findLanguageByShortName(String shortName) { @Nullable public static Language findLanguageByName(String n) { - return getSupportedLanguages().filter(it -> it.getName().equals(n)) - .findFirst() - .orElse(null); + return AUX_LANG_REGISTRY.getLanguageByFullName(n); } @NonNull @@ -144,9 +155,7 @@ public static Language findLanguageByNameOrDefault(String n) { @Nullable public static Language findLanguageByTerseName(String name) { - return getSupportedLanguages().filter(it -> it.getTerseName().equals(name)) - .findFirst() - .orElse(null); + return AUX_LANG_REGISTRY.getLanguageById(name); } } diff --git a/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/PlainTextLanguage.java b/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/PlainTextLanguage.java deleted file mode 100644 index b038d480..00000000 --- a/src/main/java/net/sourceforge/pmd/util/fxdesigner/util/PlainTextLanguage.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * BSD-style license; for more info see http://pmd.sourceforge.net/license.html - */ - -package net.sourceforge.pmd.util.fxdesigner.util; - -import net.sourceforge.pmd.lang.AbstractLanguageVersionHandler; -import net.sourceforge.pmd.lang.BaseLanguageModule; -import net.sourceforge.pmd.lang.Language; -import net.sourceforge.pmd.lang.ast.AstInfo; -import net.sourceforge.pmd.lang.ast.Parser; -import net.sourceforge.pmd.lang.ast.Parser.ParserTask; -import net.sourceforge.pmd.lang.ast.RootNode; -import net.sourceforge.pmd.lang.ast.impl.AbstractNode; -import net.sourceforge.pmd.lang.document.TextRegion; - -/** - * Default language module used when none is on the classpath. - */ -public final class PlainTextLanguage extends BaseLanguageModule { - - public static final Language INSTANCE = new PlainTextLanguage(); - - static final String TERSE_NAME = "text"; - - private PlainTextLanguage() { - super("Plain text", "Plain text", TERSE_NAME, "plain-text-file-goo-extension"); - addVersion("default", new TextLvh(), true); - } - - private static class TextLvh extends AbstractLanguageVersionHandler { - - @Override - public Parser getParser() { - return PlainTextFile::new; - } - } - - public static class PlainTextFile extends AbstractNode implements RootNode { - - private final AstInfo astInfo; - - - PlainTextFile(ParserTask task) { - this.astInfo = new AstInfo<>(task, this); - } - - @Override - public TextRegion getTextRegion() { - return getTextDocument().getEntireRegion(); - } - - @Override - public String getXPathNodeName() { - return "TextFile"; - } - - @Override - public String getImage() { - return null; - } - - @Override - public String toString() { - return "Plain text file (" + getEndLine() + " lines)"; - } - - @Override - public AstInfo getAstInfo() { - return astInfo; - } - } - -} diff --git a/src/test/kotlin/net/sourceforge/pmd/util/fxdesigner/util/codearea/PlainTextLanguageTest.kt b/src/test/kotlin/net/sourceforge/pmd/util/fxdesigner/util/codearea/PlainTextLanguageTest.kt index 3b556c39..4a94683d 100644 --- a/src/test/kotlin/net/sourceforge/pmd/util/fxdesigner/util/codearea/PlainTextLanguageTest.kt +++ b/src/test/kotlin/net/sourceforge/pmd/util/fxdesigner/util/codearea/PlainTextLanguageTest.kt @@ -8,6 +8,8 @@ import io.kotest.core.spec.style.FunSpec import io.kotest.matchers.should import io.kotest.matchers.shouldBe import io.kotest.matchers.shouldNotBe +import net.sourceforge.pmd.lang.LanguageProcessorRegistry +import net.sourceforge.pmd.lang.PlainTextLanguage.PlainTextFile import net.sourceforge.pmd.lang.ast.Parser import net.sourceforge.pmd.lang.ast.SemanticErrorReporter import net.sourceforge.pmd.lang.ast.test.IntelliMarker @@ -15,7 +17,6 @@ import net.sourceforge.pmd.lang.ast.test.matchNode import net.sourceforge.pmd.lang.document.TextDocument import net.sourceforge.pmd.lang.document.TextRange2d import net.sourceforge.pmd.util.fxdesigner.util.AuxLanguageRegistry -import net.sourceforge.pmd.util.fxdesigner.util.PlainTextLanguage.PlainTextFile class PlainTextLanguageTest : IntelliMarker, FunSpec({ @@ -57,8 +58,13 @@ private fun String.parse(): PlainTextFile { lang.defaultVersion shouldNotBe null - val parser = lang.defaultVersion.languageVersionHandler.parser + val processor = lang.createProcessor(lang.newPropertyBundle()) + val parser = processor.services().parser val doc = TextDocument.readOnlyString(this, lang.defaultVersion) - val task = Parser.ParserTask(doc, SemanticErrorReporter.noop()) + val task = Parser.ParserTask( + doc, + SemanticErrorReporter.noop(), + LanguageProcessorRegistry.singleton(processor) + ) return parser.parse(task) as PlainTextFile } From bce00743477ef215d15a87bf914f56eb6df52530 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fournier?= Date: Sat, 18 Feb 2023 16:46:09 +0100 Subject: [PATCH 2/2] Readd required noarg ctor --- .../util/fxdesigner/model/testing/LiveViolationRecord.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/net/sourceforge/pmd/util/fxdesigner/model/testing/LiveViolationRecord.java b/src/main/java/net/sourceforge/pmd/util/fxdesigner/model/testing/LiveViolationRecord.java index 82a760bc..bdf4d961 100644 --- a/src/main/java/net/sourceforge/pmd/util/fxdesigner/model/testing/LiveViolationRecord.java +++ b/src/main/java/net/sourceforge/pmd/util/fxdesigner/model/testing/LiveViolationRecord.java @@ -22,6 +22,12 @@ public class LiveViolationRecord implements SettingsOwner, Comparable