From 0a8f89d17ba72ff4d7f7fc20fe2e80c6b1d65094 Mon Sep 17 00:00:00 2001 From: Yorkin Date: Tue, 12 May 2026 18:33:16 +0800 Subject: [PATCH 1/2] refactor: adapt moonbit 0.9.3 --- basic/pkg.generated.mbti | 2 +- basic/report.mbt | 2 +- handrolled_parser/parse_expr_test.mbt | 2 +- lexer/lexer.mbt | 2 +- pkg_parser/parser.mbt | 4 ++-- pkg_parser/pkg_parser_test.mbt | 2 +- syntax/map_visitor_wbtest.mbt | 20 ++++++++++---------- syntax/moon.pkg | 4 ++++ syntax/utils.mbt | 2 +- test/sync_test/loc_regression_test.mbt | 2 +- 10 files changed, 23 insertions(+), 19 deletions(-) diff --git a/basic/pkg.generated.mbti b/basic/pkg.generated.mbti index c9776219..b9ca3a83 100644 --- a/basic/pkg.generated.mbti +++ b/basic/pkg.generated.mbti @@ -46,7 +46,7 @@ pub impl Show for Position pub(all) struct Report { loc : Location msg : String -} +} derive(@debug.Debug) pub impl Show for Report pub impl ToJson for Report diff --git a/basic/report.mbt b/basic/report.mbt index 0c3e0339..53ff675c 100644 --- a/basic/report.mbt +++ b/basic/report.mbt @@ -2,7 +2,7 @@ pub(all) struct Report { loc : Location msg : String -} +} derive(Debug) ///| pub impl Show for Report with output(self, logger) { diff --git a/handrolled_parser/parse_expr_test.mbt b/handrolled_parser/parse_expr_test.mbt index c035eb0a..890a0cbb 100644 --- a/handrolled_parser/parse_expr_test.mbt +++ b/handrolled_parser/parse_expr_test.mbt @@ -5,7 +5,7 @@ fn simple_parse_expr(source : String) -> @syntax.Expr raise { if reports.is_empty() { return expr } else { - fail(reports.to_string()) + fail("\{to_repr(reports)}") } } diff --git a/lexer/lexer.mbt b/lexer/lexer.mbt index 4a12dec6..fa0c10c0 100644 --- a/lexer/lexer.mbt +++ b/lexer/lexer.mbt @@ -1,5 +1,5 @@ ///| -let use_utf16_location : Ref[Bool] = Ref::new(false) +let use_utf16_location : Ref[Bool] = Ref(false) ///| fn lex_tokens( diff --git a/pkg_parser/parser.mbt b/pkg_parser/parser.mbt index 66facaa8..759c0a2d 100644 --- a/pkg_parser/parser.mbt +++ b/pkg_parser/parser.mbt @@ -346,7 +346,7 @@ fn parse_apply(state : State) -> (String, Ast) { state.report_expected_here("\"(\"") state.skip_until_statement_end() let loc = Location::{ start: args_start, end: args_start } - return (name, Obj(map=Map::new(), loc~)) + return (name, Obj(map=Map([]), loc~)) } let args = parse_comma_separated(state, right=TK_RPAREN, parse_argument) (name, Obj(map=Map::from_array(args), loc=state.loc_start_with(args_start))) @@ -612,7 +612,7 @@ fn parse_statements(state : State) -> Array[(String, Ast)] { pub fn moon_pkg_of_tokens(tokens : Triples) -> (Ast, Array[Report]) { if tokens.is_empty() { let loc = Location::{ start: dummy_pos, end: dummy_pos } - return (Obj(map=Map::new(), loc~), []) + return (Obj(map=Map([]), loc~), []) } let start = tokens[0].1 let state = State::{ diff --git a/pkg_parser/pkg_parser_test.mbt b/pkg_parser/pkg_parser_test.mbt index 85c88f82..86bb9dd7 100644 --- a/pkg_parser/pkg_parser_test.mbt +++ b/pkg_parser/pkg_parser_test.mbt @@ -14,7 +14,7 @@ fn ast_summary(ast : Ast) -> Json { Json::object(Map::from_array([("$number", Json::string(float))])) Arr(content~, ..) => Json::array(content.map(ast_summary)) Obj(map~, ..) => { - let object : Map[String, Json] = Map::new() + let object : Map[String, Json] = Map([]) for key, value in map { object[key] = ast_summary(value) } diff --git a/syntax/map_visitor_wbtest.mbt b/syntax/map_visitor_wbtest.mbt index 3556c891..a63a91a2 100644 --- a/syntax/map_visitor_wbtest.mbt +++ b/syntax/map_visitor_wbtest.mbt @@ -80,46 +80,46 @@ test "Pattern" { is_closed=false, loc=dummy_loc, ) - assert_eq( + @test.assert_eq( any_with_alias.json_repr(), MapVisitorBase::visit_Pattern(MapVisitorBase(Identity(())), any_with_alias).json_repr(), ) - assert_eq( + @test.assert_eq( array_patterns.json_repr(), MapVisitorBase::visit_Pattern(MapVisitorBase(Identity(())), array_patterns).json_repr(), ) - assert_eq( + @test.assert_eq( constant_pattern.json_repr(), MapVisitorBase::visit_Expr(MapVisitorBase(Identity(())), constant_pattern).json_repr(), ) - assert_eq( + @test.assert_eq( constraint_pattern.json_repr(), MapVisitorBase::visit_Pattern( MapVisitorBase(Identity(())), constraint_pattern, ).json_repr(), ) - assert_eq( + @test.assert_eq( constr_pattern.json_repr(), MapVisitorBase::visit_Pattern(MapVisitorBase(Identity(())), constr_pattern).json_repr(), ) - assert_eq( + @test.assert_eq( or_pattern.json_repr(), MapVisitorBase::visit_Pattern(MapVisitorBase(Identity(())), or_pattern).json_repr(), ) - assert_eq( + @test.assert_eq( tuple_pattern.json_repr(), MapVisitorBase::visit_Pattern(MapVisitorBase(Identity(())), tuple_pattern).json_repr(), ) - assert_eq( + @test.assert_eq( record_pattern.json_repr(), MapVisitorBase::visit_Pattern(MapVisitorBase(Identity(())), record_pattern).json_repr(), ) - assert_eq( + @test.assert_eq( map_pattern.json_repr(), MapVisitorBase::visit_Pattern(MapVisitorBase(Identity(())), map_pattern).json_repr(), ) - assert_eq( + @test.assert_eq( range_pattern.json_repr(), MapVisitorBase::visit_Pattern(MapVisitorBase(Identity(())), range_pattern).json_repr(), ) diff --git a/syntax/moon.pkg b/syntax/moon.pkg index e884ed37..00236ec6 100644 --- a/syntax/moon.pkg +++ b/syntax/moon.pkg @@ -11,4 +11,8 @@ import { "moonbitlang/core/json", } for "test" +import { + "moonbitlang/core/test", +} for "wbtest" + warnings = "-28" diff --git a/syntax/utils.mbt b/syntax/utils.mbt index 5d2ae4b7..d98322b1 100644 --- a/syntax/utils.mbt +++ b/syntax/utils.mbt @@ -3,7 +3,7 @@ // Translated from src/ast/parsing_util.ml // Global counter for generating unique variable names -let counter : Ref[Int] = Ref::new(0) +let counter : Ref[Int] = Ref(0) ///| /// Create constant expression with location diff --git a/test/sync_test/loc_regression_test.mbt b/test/sync_test/loc_regression_test.mbt index d131422e..d7dd3014 100644 --- a/test/sync_test/loc_regression_test.mbt +++ b/test/sync_test/loc_regression_test.mbt @@ -18,7 +18,7 @@ fn parse_loc_regression( parser~, ) if !diagnostics.is_empty() { - fail(diagnostics.to_string()) + fail("\{to_repr(diagnostics)}") } let mut brace_group_loc = None let mut params_loc = None From 848d67a04915f580a206e67e03edf1c0c31a4190 Mon Sep 17 00:00:00 2001 From: Yorkin Date: Wed, 13 May 2026 10:34:33 +0800 Subject: [PATCH 2/2] chore: bump version to 0.2.6 --- moon.mod.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/moon.mod.json b/moon.mod.json index a16c5416..513ead8b 100644 --- a/moon.mod.json +++ b/moon.mod.json @@ -1,6 +1,6 @@ { "name": "moonbitlang/parser", - "version": "0.2.5", + "version": "0.2.6", "deps": { "moonbitlang/x": "0.4.39", "moonbitlang/yacc": "0.7.13"