From 9dcb79a60225cd127f1bd9f8653ff5da525d9af0 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 31 Jul 2018 14:00:22 +0300 Subject: Bare & default impls --- src/parser/grammar/items/mod.rs | 12 ++++++++++++ src/parser/grammar/items/traits.rs | 3 +++ tests/data/parser/inline/0046_default_impl.rs | 1 + tests/data/parser/inline/0046_default_impl.txt | 11 +++++++++++ tests/data/parser/inline/0047_impl_item.rs | 1 + tests/data/parser/inline/0047_impl_item.txt | 9 +++++++++ 6 files changed, 37 insertions(+) create mode 100644 tests/data/parser/inline/0046_default_impl.rs create mode 100644 tests/data/parser/inline/0046_default_impl.txt create mode 100644 tests/data/parser/inline/0047_impl_item.rs create mode 100644 tests/data/parser/inline/0047_impl_item.txt diff --git a/src/parser/grammar/items/mod.rs b/src/parser/grammar/items/mod.rs index c88e39596..73fd5235a 100644 --- a/src/parser/grammar/items/mod.rs +++ b/src/parser/grammar/items/mod.rs @@ -149,6 +149,18 @@ fn item(p: &mut Parser) { } } } + IMPL_KW => { + traits::impl_item(p); + IMPL_ITEM + } + // test default_impl + // default impl Foo {} + IDENT if p.at_contextual_kw("default") && la == IMPL_KW => { + p.bump_remap(DEFAULT_KW); + traits::impl_item(p); + IMPL_ITEM + } + FN_KW => { fn_item(p); FN_ITEM diff --git a/src/parser/grammar/items/traits.rs b/src/parser/grammar/items/traits.rs index 9961a88fe..7fd011ffd 100644 --- a/src/parser/grammar/items/traits.rs +++ b/src/parser/grammar/items/traits.rs @@ -8,6 +8,9 @@ pub(super) fn trait_item(p: &mut Parser) { p.expect(R_CURLY); } + +// test impl_item +// impl Foo {} pub(super) fn impl_item(p: &mut Parser) { assert!(p.at(IMPL_KW)); p.bump(); diff --git a/tests/data/parser/inline/0046_default_impl.rs b/tests/data/parser/inline/0046_default_impl.rs new file mode 100644 index 000000000..ef6aa84a2 --- /dev/null +++ b/tests/data/parser/inline/0046_default_impl.rs @@ -0,0 +1 @@ +default impl Foo {} diff --git a/tests/data/parser/inline/0046_default_impl.txt b/tests/data/parser/inline/0046_default_impl.txt new file mode 100644 index 000000000..bc17bcaff --- /dev/null +++ b/tests/data/parser/inline/0046_default_impl.txt @@ -0,0 +1,11 @@ +FILE@[0; 20) + IMPL_ITEM@[0; 20) + DEFAULT_KW@[0; 7) + WHITESPACE@[7; 8) + IMPL_KW@[8; 12) + WHITESPACE@[12; 13) + IDENT@[13; 16) "Foo" + WHITESPACE@[16; 17) + L_CURLY@[17; 18) + R_CURLY@[18; 19) + WHITESPACE@[19; 20) diff --git a/tests/data/parser/inline/0047_impl_item.rs b/tests/data/parser/inline/0047_impl_item.rs new file mode 100644 index 000000000..d6337f6b3 --- /dev/null +++ b/tests/data/parser/inline/0047_impl_item.rs @@ -0,0 +1 @@ +impl Foo {} diff --git a/tests/data/parser/inline/0047_impl_item.txt b/tests/data/parser/inline/0047_impl_item.txt new file mode 100644 index 000000000..a7f3155e1 --- /dev/null +++ b/tests/data/parser/inline/0047_impl_item.txt @@ -0,0 +1,9 @@ +FILE@[0; 12) + IMPL_ITEM@[0; 12) + IMPL_KW@[0; 4) + WHITESPACE@[4; 5) + IDENT@[5; 8) "Foo" + WHITESPACE@[8; 9) + L_CURLY@[9; 10) + R_CURLY@[10; 11) + WHITESPACE@[11; 12) -- cgit v1.2.3