From 2223f9ab687dfe117fc2264cba600dcb03f2e7b8 Mon Sep 17 00:00:00 2001 From: Yaroslav Bolyukin Date: Thu, 07 May 2026 21:10:06 +0000 Subject: [PATCH] fix: incorrect doccomment parsing --- --- a/crates/jrsonnet-lexer/src/generated/syntax_kinds.rs +++ b/crates/jrsonnet-lexer/src/generated/syntax_kinds.rs @@ -128,7 +128,7 @@ SINGLE_LINE_SLASH_COMMENT, #[regex("#[^\\r\\n]*?(\\r\\n|\\n)?")] SINGLE_LINE_HASH_COMMENT, - #[regex("/\\*([^*]|\\*[^/])*\\*/")] + #[regex("/\\*([^*]|\\*+[^*/])*\\*+/")] MULTI_LINE_COMMENT, #[regex("/\\*/")] ERROR_COMMENT_TOO_SHORT, --- /dev/null +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__multi_line_comment_doc.snap @@ -0,0 +1,39 @@ +--- +source: crates/jrsonnet-rowan-parser/src/tests.rs +expression: "{ a:: 1, /** doc **/ b:: 2 }\n" +--- +SOURCE_FILE@0..29 + EXPR@0..28 + EXPR_OBJECT@0..28 + OBJ_BODY_MEMBER_LIST@0..28 + L_BRACE@0..1 "{" + WHITESPACE@1..2 " " + MEMBER_FIELD_NORMAL@2..7 + FIELD_NAME_FIXED@2..3 + NAME@2..3 + IDENT@2..3 "a" + VISIBILITY@3..5 + COLON@3..4 ":" + COLON@4..5 ":" + WHITESPACE@5..6 " " + EXPR@6..7 + EXPR_NUMBER@6..7 + FLOAT@6..7 "1" + COMMA@7..8 "," + WHITESPACE@8..9 " " + MULTI_LINE_COMMENT@9..20 "/** doc **/" + WHITESPACE@20..21 " " + MEMBER_FIELD_NORMAL@21..26 + FIELD_NAME_FIXED@21..22 + NAME@21..22 + IDENT@21..22 "b" + VISIBILITY@22..24 + COLON@22..23 ":" + COLON@23..24 ":" + WHITESPACE@24..25 " " + EXPR@25..26 + EXPR_NUMBER@25..26 + FLOAT@25..26 "2" + WHITESPACE@26..27 " " + R_BRACE@27..28 "}" + WHITESPACE@28..29 "\n" --- /dev/null +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__multi_line_comment_empty.snap @@ -0,0 +1,11 @@ +--- +source: crates/jrsonnet-rowan-parser/src/tests.rs +expression: "/**/ 1\n" +--- +SOURCE_FILE@0..7 + MULTI_LINE_COMMENT@0..4 "/**/" + WHITESPACE@4..5 " " + EXPR@5..6 + EXPR_NUMBER@5..6 + FLOAT@5..6 "1" + WHITESPACE@6..7 "\n" --- /dev/null +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__multi_line_comment_inner_star.snap @@ -0,0 +1,11 @@ +--- +source: crates/jrsonnet-rowan-parser/src/tests.rs +expression: "/* * */ 3\n" +--- +SOURCE_FILE@0..10 + MULTI_LINE_COMMENT@0..7 "/* * */" + WHITESPACE@7..8 " " + EXPR@8..9 + EXPR_NUMBER@8..9 + FLOAT@8..9 "3" + WHITESPACE@9..10 "\n" --- /dev/null +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__multi_line_comment_too_short.snap @@ -0,0 +1,14 @@ +--- +source: crates/jrsonnet-rowan-parser/src/tests.rs +expression: "/*/\n" +--- +SOURCE_FILE@0..4 + ERROR_COMMENT_TOO_SHORT@0..3 "/*/" + WHITESPACE@3..4 "\n" + EXPR@4..4 + ERROR_MISSING_TOKEN@4..4 +=== +LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 4..4 } +=== + · ╭── missing expression +1 │ /*/ --- /dev/null +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__multi_line_comment_triple_star.snap @@ -0,0 +1,11 @@ +--- +source: crates/jrsonnet-rowan-parser/src/tests.rs +expression: "/***/ 2\n" +--- +SOURCE_FILE@0..8 + MULTI_LINE_COMMENT@0..5 "/***/" + WHITESPACE@5..6 " " + EXPR@6..7 + EXPR_NUMBER@6..7 + FLOAT@6..7 "2" + WHITESPACE@7..8 "\n" --- /dev/null +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__multi_line_comment_unterminated.snap @@ -0,0 +1,13 @@ +--- +source: crates/jrsonnet-rowan-parser/src/tests.rs +expression: "/** unterminated\n" +--- +SOURCE_FILE@0..17 + ERROR_COMMENT_UNTERMINATED@0..17 "/** unterminated\n" + EXPR@17..17 + ERROR_MISSING_TOKEN@17..17 +=== +LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 17..17 } +=== + · ╭── missing expression +1 │ /** unterminated --- a/crates/jrsonnet-rowan-parser/src/tests.rs +++ b/crates/jrsonnet-rowan-parser/src/tests.rs @@ -241,6 +241,25 @@ for_obj_spec_value_destruct => r#" { [k]: a + b for [k]: [a, b] in obj } "# + + multi_line_comment_doc => r#" + { a:: 1, /** doc **/ b:: 2 } + "# + multi_line_comment_empty => r#" + /**/ 1 + "# + multi_line_comment_triple_star => r#" + /***/ 2 + "# + multi_line_comment_inner_star => r#" + /* * */ 3 + "# + multi_line_comment_too_short => r#" + /*/ + "# + multi_line_comment_unterminated => r#" + /** unterminated + "# ); #[test] -- gitstuff