From b4a2f3799945fddd3869029c08e7f9d0071e6dee Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Mon, 20 May 2024 20:47:39 +0200 Subject: fix(language): spurious exception in ProblemValidator Make sure getNodeArgumentForMultiObjectAssertion runs correctly even for ASTs with parse errors. --- .../language/validation/ProblemValidator.java | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) (limited to 'subprojects/language') diff --git a/subprojects/language/src/main/java/tools/refinery/language/validation/ProblemValidator.java b/subprojects/language/src/main/java/tools/refinery/language/validation/ProblemValidator.java index 84af4ee6..0d35fb03 100644 --- a/subprojects/language/src/main/java/tools/refinery/language/validation/ProblemValidator.java +++ b/subprojects/language/src/main/java/tools/refinery/language/validation/ProblemValidator.java @@ -520,18 +520,17 @@ public class ProblemValidator extends AbstractProblemValidator { @Nullable private Node getNodeArgumentForMultiObjectAssertion(AssertionArgument argument) { - if (argument instanceof WildcardAssertionArgument) { - acceptError("Wildcard arguments for 'exists' are not supported.", argument, null, 0, - UNSUPPORTED_ASSERTION_ISSUE); - return null; - } - if (argument instanceof NodeAssertionArgument nodeAssertionArgument) { - var variableOrNode = nodeAssertionArgument.getNode(); - if (variableOrNode == null || variableOrNode instanceof Node) { - return (Node) variableOrNode; + return switch (argument) { + case null -> null; + case WildcardAssertionArgument ignoredWildcardAssertionArgument -> { + acceptError("Wildcard arguments for 'exists' are not supported.", argument, null, 0, + UNSUPPORTED_ASSERTION_ISSUE); + yield null; } - } - throw new IllegalArgumentException("Unknown assertion argument: " + argument); + case NodeAssertionArgument nodeAssertionArgument -> + nodeAssertionArgument.getNode() instanceof Node node ? node : null; + default -> throw new IllegalArgumentException("Unknown assertion argument: " + argument); + }; } @Check -- cgit v1.2.3-54-g00ecf