From 705f1cfbd443f3f50e639a4a531f7284d40f0b70 Mon Sep 17 00:00:00 2001 From: Jessica He Date: Thu, 9 Mar 2023 13:48:28 -0500 Subject: [PATCH] Adjust error range for RelaxNG element-not-allow-yet error Signed-off-by: Jessica He --- .../xml/validator/RelaxNGErrorCode.java | 1 + .../xml/validator/RelaxNGErrorHandler.java | 4 ++++ .../diagnostics/RelaxNGDiagnosticsTest.java | 10 +++++++++ .../test/resources/relaxng/notAllowedYet.rng | 21 +++++++++++++++++++ 4 files changed, 36 insertions(+) create mode 100644 org.eclipse.lemminx/src/test/resources/relaxng/notAllowedYet.rng diff --git a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/relaxng/xml/validator/RelaxNGErrorCode.java b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/relaxng/xml/validator/RelaxNGErrorCode.java index 68ef9b1c5..38613660f 100644 --- a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/relaxng/xml/validator/RelaxNGErrorCode.java +++ b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/relaxng/xml/validator/RelaxNGErrorCode.java @@ -127,6 +127,7 @@ public static Range toLSPRange(XMLLocator location, RelaxNGErrorCode rngCode, Ob // XML Validation based on RNG, RNC errors case unknown_element: case out_of_context_element: + case element_not_allowed_yet: case incomplete_element_required_elements_missing_expected: case unexpected_element_required_element_missing: case incomplete_element_required_element_missing: diff --git a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/relaxng/xml/validator/RelaxNGErrorHandler.java b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/relaxng/xml/validator/RelaxNGErrorHandler.java index 4aa0406f5..e8128fe8e 100644 --- a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/relaxng/xml/validator/RelaxNGErrorHandler.java +++ b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/relaxng/xml/validator/RelaxNGErrorHandler.java @@ -103,6 +103,10 @@ private static RelaxNGReportInfo getRelaxNGReportInfo(String message) { // out_of_context_element=element {0} not allowed here{1} return new RelaxNGReportInfo(RelaxNGErrorCode.out_of_context_element); } + if (message.contains("not allowed yet")) { + // element {0} not allowed yet{1} + return new RelaxNGReportInfo(RelaxNGErrorCode.element_not_allowed_yet); + } // Required attributes diff --git a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/relaxng/xml/diagnostics/RelaxNGDiagnosticsTest.java b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/relaxng/xml/diagnostics/RelaxNGDiagnosticsTest.java index cc8bba58b..1906c8cf9 100644 --- a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/relaxng/xml/diagnostics/RelaxNGDiagnosticsTest.java +++ b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/relaxng/xml/diagnostics/RelaxNGDiagnosticsTest.java @@ -161,4 +161,14 @@ public void required_attributes_missing() throws Exception { d(1, 1, 4, RelaxNGErrorCode.incomplete_element_required_elements_missing_expected)); } + @Test + public void not_allowed_yet() throws Exception { + String xml = "\r\n" + // + "\r\n" + // + " \r\n" + // + ""; + testDiagnosticsFor(xml, null, null, "src/test/resources/relaxng/test.xml", // + d(2, 2, 10, RelaxNGErrorCode.element_not_allowed_yet)); + } + } diff --git a/org.eclipse.lemminx/src/test/resources/relaxng/notAllowedYet.rng b/org.eclipse.lemminx/src/test/resources/relaxng/notAllowedYet.rng new file mode 100644 index 000000000..d19c08551 --- /dev/null +++ b/org.eclipse.lemminx/src/test/resources/relaxng/notAllowedYet.rng @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file