From e36f557e4d0f591888dab84c9b5d5d47b0ea6c83 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sat, 1 Jan 2022 19:51:13 +0300 Subject: [PATCH] internal: add more prefix entry point tests --- crates/parser/src/tests/entries.rs | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/crates/parser/src/tests/entries.rs b/crates/parser/src/tests/entries.rs index 1174e33f5f..d52c6fbb16 100644 --- a/crates/parser/src/tests/entries.rs +++ b/crates/parser/src/tests/entries.rs @@ -59,10 +59,30 @@ fn path() { check_prefix(PrefixEntryPoint::Path, "foo::<> baz", "foo::<>"); check_prefix(PrefixEntryPoint::Path, "foo<> baz", "foo<>"); check_prefix(PrefixEntryPoint::Path, "Fn() -> i32?", "Fn() -> i32"); - // FIXME: this shouldn't be accepted as path actually. + // FIXME: This shouldn't be accepted as path actually. check_prefix(PrefixEntryPoint::Path, "<_>::foo", "<_>::foo"); } +#[test] +fn item() { + // FIXME: This shouldn't consume the semicolon. + check_prefix(PrefixEntryPoint::Item, "fn foo() {};", "fn foo() {};"); + check_prefix(PrefixEntryPoint::Item, "#[attr] pub struct S {} 92", "#[attr] pub struct S {}"); + check_prefix(PrefixEntryPoint::Item, "item!{}?", "item!{}"); + check_prefix(PrefixEntryPoint::Item, "????", "?"); +} + +#[test] +fn meta_item() { + check_prefix(PrefixEntryPoint::MetaItem, "attr, ", "attr"); + check_prefix( + PrefixEntryPoint::MetaItem, + "attr(some token {stream});", + "attr(some token {stream})", + ); + check_prefix(PrefixEntryPoint::MetaItem, "path::attr = 2 * 2!", "path::attr = 2 * 2"); +} + fn check_prefix(entry: PrefixEntryPoint, input: &str, prefix: &str) { let lexed = LexedStr::new(input); let input = lexed.to_input();