Unnamed repository; edit this file 'description' to name the repository.
7 files changed, 119 insertions, 117 deletions
diff --git a/crates/parser/src/grammar/items.rs b/crates/parser/src/grammar/items.rs index 0c35049da3..af83ba126a 100644 --- a/crates/parser/src/grammar/items.rs +++ b/crates/parser/src/grammar/items.rs @@ -309,6 +309,30 @@ fn extern_crate(p: &mut Parser, m: Marker) { m.complete(p, EXTERN_CRATE); } +// test mod_item +// mod a; +pub(crate) fn mod_item(p: &mut Parser, m: Marker) { + p.bump(T![mod]); + name(p); + if p.at(T!['{']) { + // test mod_item_curly + // mod b { } + item_list(p); + } else if !p.eat(T![;]) { + p.error("expected `;` or `{`"); + } + m.complete(p, MODULE); +} + +pub(crate) fn item_list(p: &mut Parser) { + assert!(p.at(T!['{'])); + let m = p.start(); + p.bump(T!['{']); + mod_contents(p, true); + p.expect(T!['}']); + m.complete(p, ITEM_LIST); +} + pub(crate) fn extern_item_list(p: &mut Parser) { assert!(p.at(T!['{'])); let m = p.start(); @@ -376,28 +400,6 @@ fn type_alias(p: &mut Parser, m: Marker) { m.complete(p, TYPE_ALIAS); } -pub(crate) fn mod_item(p: &mut Parser, m: Marker) { - assert!(p.at(T![mod])); - p.bump(T![mod]); - - name(p); - if p.at(T!['{']) { - item_list(p); - } else if !p.eat(T![;]) { - p.error("expected `;` or `{`"); - } - m.complete(p, MODULE); -} - -pub(crate) fn item_list(p: &mut Parser) { - assert!(p.at(T!['{'])); - let m = p.start(); - p.bump(T!['{']); - mod_contents(p, true); - p.expect(T!['}']); - m.complete(p, ITEM_LIST); -} - fn macro_rules(p: &mut Parser, m: Marker) { assert!(p.at_contextual_kw("macro_rules")); p.bump_remap(T![macro_rules]); diff --git a/crates/syntax/test_data/parser/inline/ok/0169_mod_item.rast b/crates/syntax/test_data/parser/inline/ok/0169_mod_item.rast new file mode 100644 index 0000000000..423eacf92e --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0169_mod_item.rast @@ -0,0 +1,8 @@ + [email protected] "mod" + [email protected] " " + [email protected] "a" + [email protected] ";" + [email protected] "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0169_mod_item.rs b/crates/syntax/test_data/parser/inline/ok/0169_mod_item.rs new file mode 100644 index 0000000000..f21af614da --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0169_mod_item.rs @@ -0,0 +1 @@ +mod a; diff --git a/crates/syntax/test_data/parser/inline/ok/0170_mod_item_curly.rast b/crates/syntax/test_data/parser/inline/ok/0170_mod_item_curly.rast new file mode 100644 index 0000000000..33ad9c44f5 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0170_mod_item_curly.rast @@ -0,0 +1,12 @@ + [email protected] "mod" + [email protected] " " + [email protected] "b" + [email protected] " " + [email protected] "{" + [email protected] " " + [email protected] "}" + [email protected] "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0170_mod_item_curly.rs b/crates/syntax/test_data/parser/inline/ok/0170_mod_item_curly.rs new file mode 100644 index 0000000000..16b1b43e87 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0170_mod_item_curly.rs @@ -0,0 +1 @@ +mod b { } diff --git a/crates/syntax/test_data/parser/ok/0008_mod_item.rast b/crates/syntax/test_data/parser/ok/0008_mod_item.rast index 8b1e0a52da..712e153462 100644 --- a/crates/syntax/test_data/parser/ok/0008_mod_item.rast +++ b/crates/syntax/test_data/parser/ok/0008_mod_item.rast @@ -1,93 +1,76 @@ [email protected] "mod" - [email protected] "a" - [email protected] ";" - [email protected] "\n\n" - [email protected] "mod" - [email protected] " " - [email protected] "b" - [email protected] " " - [email protected] "{" - [email protected] "\n" - [email protected] "}" - [email protected] "\n\n" - [email protected] "mod" - [email protected] " " - [email protected] "c" - [email protected] " " - [email protected] "{" - [email protected] "\n " - [email protected] "fn" - [email protected] " " - [email protected] "foo" - [email protected] "(" - [email protected] ")" + [email protected] "c" + [email protected] " " + [email protected] "{" + [email protected] "\n " + [email protected] "fn" + [email protected] " " + [email protected] "foo" + [email protected] "(" + [email protected] ")" + [email protected] " " + [email protected] "{" + [email protected] "\n " + [email protected] "}" + [email protected] "\n " + [email protected] "struct" - [email protected] "{" - [email protected] "\n " - [email protected] "}" - [email protected] "\n " - [email protected] "struct" - [email protected] " " - [email protected] "S" - [email protected] " " - [email protected] "{" - [email protected] "}" - [email protected] "\n" - [email protected] "}" - [email protected] "\n\n" - [email protected] "mod" - [email protected] " " - [email protected] "d" - [email protected] " " - [email protected] "{" - [email protected] "\n " - [email protected] "#" - [email protected] "!" - [email protected] "[" - [email protected] "attr" - [email protected] "]" - [email protected] "\n " - [email protected] "mod" - [email protected] " " - [email protected] "e" - [email protected] ";" - [email protected] "\n " - [email protected] "mod" - [email protected] " " - [email protected] "f" - [email protected] " " - [email protected] "{" - [email protected] "\n " - [email protected] "}" - [email protected] "\n" - [email protected] "}" + [email protected] "S" + [email protected] " " + [email protected] "{" + [email protected] "}" + [email protected] "\n" + [email protected] "}" + [email protected] "\n\n" + [email protected] "mod" + [email protected] " " + [email protected] "d" + [email protected] " " + [email protected] "{" + [email protected] "\n " + [email protected] "#" + [email protected] "!" + [email protected] "[" + [email protected] "attr" + [email protected] "]" + [email protected] "\n " + [email protected] "mod" + [email protected] " " + [email protected] "e" + [email protected] ";" + [email protected] "\n " + [email protected] "mod" + [email protected] " " + [email protected] "f" + [email protected] " " + [email protected] "{" + [email protected] "\n " + [email protected] "}" + [email protected] "\n" + [email protected] "}" + [email protected] "\n" diff --git a/crates/syntax/test_data/parser/ok/0008_mod_item.rs b/crates/syntax/test_data/parser/ok/0008_mod_item.rs index d22993bc15..4ff0d9795c 100644 --- a/crates/syntax/test_data/parser/ok/0008_mod_item.rs +++ b/crates/syntax/test_data/parser/ok/0008_mod_item.rs @@ -1,8 +1,3 @@ -mod a; - -mod b { -} - mod c { fn foo() { } @@ -14,4 +9,4 @@ mod d { mod e; mod f { } -}
\ No newline at end of file +} |