From c51c8bfb840d35709ee1cec190620c98b4fc3590 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 30 Apr 2020 14:17:14 +0200 Subject: Special-case try macro to better support 2015 edition --- .../parser/inline/ok/0159_try_macro_fallback.rast | 35 ++++++++++++++++++++++ .../parser/inline/ok/0159_try_macro_fallback.rs | 1 + 2 files changed, 36 insertions(+) create mode 100644 crates/ra_syntax/test_data/parser/inline/ok/0159_try_macro_fallback.rast create mode 100644 crates/ra_syntax/test_data/parser/inline/ok/0159_try_macro_fallback.rs (limited to 'crates/ra_syntax/test_data/parser/inline/ok') diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0159_try_macro_fallback.rast b/crates/ra_syntax/test_data/parser/inline/ok/0159_try_macro_fallback.rast new file mode 100644 index 000000000..beb6d8010 --- /dev/null +++ b/crates/ra_syntax/test_data/parser/inline/ok/0159_try_macro_fallback.rast @@ -0,0 +1,35 @@ +SOURCE_FILE@0..27 + FN_DEF@0..26 + FN_KW@0..2 "fn" + WHITESPACE@2..3 " " + NAME@3..6 + IDENT@3..6 "foo" + PARAM_LIST@6..8 + L_PAREN@6..7 "(" + R_PAREN@7..8 ")" + WHITESPACE@8..9 " " + BLOCK_EXPR@9..26 + BLOCK@9..26 + L_CURLY@9..10 "{" + WHITESPACE@10..11 " " + EXPR_STMT@11..24 + MACRO_CALL@11..23 + PATH@11..14 + PATH_SEGMENT@11..14 + NAME_REF@11..14 + IDENT@11..14 "try" + BANG@14..15 "!" + TOKEN_TREE@15..23 + L_PAREN@15..16 "(" + IDENT@16..18 "Ok" + TOKEN_TREE@18..22 + L_PAREN@18..19 "(" + TOKEN_TREE@19..21 + L_PAREN@19..20 "(" + R_PAREN@20..21 ")" + R_PAREN@21..22 ")" + R_PAREN@22..23 ")" + SEMICOLON@23..24 ";" + WHITESPACE@24..25 " " + R_CURLY@25..26 "}" + WHITESPACE@26..27 "\n" diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0159_try_macro_fallback.rs b/crates/ra_syntax/test_data/parser/inline/ok/0159_try_macro_fallback.rs new file mode 100644 index 000000000..61a6b46a0 --- /dev/null +++ b/crates/ra_syntax/test_data/parser/inline/ok/0159_try_macro_fallback.rs @@ -0,0 +1 @@ +fn foo() { try!(Ok(())); } -- cgit v1.2.3 From 45c4f620b1c5b8e462875b6e372db0e849bd6170 Mon Sep 17 00:00:00 2001 From: Edwin Cheng Date: Thu, 30 Apr 2020 22:07:46 +0800 Subject: Special-case try macro_rules --- .../parser/inline/ok/0160_try_macro_rules.rast | 27 ++++++++++++++++++++++ .../parser/inline/ok/0160_try_macro_rules.rs | 1 + 2 files changed, 28 insertions(+) create mode 100644 crates/ra_syntax/test_data/parser/inline/ok/0160_try_macro_rules.rast create mode 100644 crates/ra_syntax/test_data/parser/inline/ok/0160_try_macro_rules.rs (limited to 'crates/ra_syntax/test_data/parser/inline/ok') diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0160_try_macro_rules.rast b/crates/ra_syntax/test_data/parser/inline/ok/0160_try_macro_rules.rast new file mode 100644 index 000000000..05b89d1c3 --- /dev/null +++ b/crates/ra_syntax/test_data/parser/inline/ok/0160_try_macro_rules.rast @@ -0,0 +1,27 @@ +SOURCE_FILE@0..30 + MACRO_CALL@0..29 + PATH@0..11 + PATH_SEGMENT@0..11 + NAME_REF@0..11 + IDENT@0..11 "macro_rules" + BANG@11..12 "!" + WHITESPACE@12..13 " " + NAME@13..16 + IDENT@13..16 "try" + WHITESPACE@16..17 " " + TOKEN_TREE@17..29 + L_CURLY@17..18 "{" + WHITESPACE@18..19 " " + TOKEN_TREE@19..21 + L_PAREN@19..20 "(" + R_PAREN@20..21 ")" + WHITESPACE@21..22 " " + EQ@22..23 "=" + R_ANGLE@23..24 ">" + WHITESPACE@24..25 " " + TOKEN_TREE@25..27 + L_CURLY@25..26 "{" + R_CURLY@26..27 "}" + WHITESPACE@27..28 " " + R_CURLY@28..29 "}" + WHITESPACE@29..30 "\n" diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0160_try_macro_rules.rs b/crates/ra_syntax/test_data/parser/inline/ok/0160_try_macro_rules.rs new file mode 100644 index 000000000..2e2ab6e60 --- /dev/null +++ b/crates/ra_syntax/test_data/parser/inline/ok/0160_try_macro_rules.rs @@ -0,0 +1 @@ +macro_rules! try { () => {} } -- cgit v1.2.3 From 513a3615f6d462852c0135dc4ac30a2086e25c5a Mon Sep 17 00:00:00 2001 From: John Renner Date: Thu, 30 Apr 2020 10:41:24 -0700 Subject: Report invalid, nested, multi-segment crate-paths Specifically, things like: use foo::{crate::bar}; Are now being caught, when before we only caught: use foo::{crate}; --- .../parser/inline/ok/0002_use_tree_list.rast | 49 +++++++++++----------- .../parser/inline/ok/0002_use_tree_list.rs | 2 +- 2 files changed, 26 insertions(+), 25 deletions(-) (limited to 'crates/ra_syntax/test_data/parser/inline/ok') diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0002_use_tree_list.rast b/crates/ra_syntax/test_data/parser/inline/ok/0002_use_tree_list.rast index bd74b44a6..cf3a90400 100644 --- a/crates/ra_syntax/test_data/parser/inline/ok/0002_use_tree_list.rast +++ b/crates/ra_syntax/test_data/parser/inline/ok/0002_use_tree_list.rast @@ -1,4 +1,4 @@ -SOURCE_FILE@0..250 +SOURCE_FILE@0..249 USE_ITEM@0..58 USE_KW@0..3 "use" WHITESPACE@3..4 " " @@ -104,32 +104,33 @@ SOURCE_FILE@0..250 WHITESPACE@166..167 " " COMMENT@167..179 "// Rust 2015" WHITESPACE@179..180 "\n" - USE_ITEM@180..206 + USE_ITEM@180..205 USE_KW@180..183 "use" WHITESPACE@183..184 " " - USE_TREE@184..205 + USE_TREE@184..204 COLON2@184..186 "::" - USE_TREE_LIST@186..205 + USE_TREE_LIST@186..204 L_CURLY@186..187 "{" - USE_TREE@187..204 - USE_TREE_LIST@187..204 + USE_TREE@187..203 + USE_TREE_LIST@187..203 L_CURLY@187..188 "{" - USE_TREE@188..203 - USE_TREE_LIST@188..203 + USE_TREE@188..202 + USE_TREE_LIST@188..202 L_CURLY@188..189 "{" - USE_TREE@189..202 - PATH@189..202 - PATH@189..194 - PATH_SEGMENT@189..194 - CRATE_KW@189..194 "crate" - COLON2@194..196 "::" - PATH_SEGMENT@196..202 - NAME_REF@196..202 - IDENT@196..202 "export" - R_CURLY@202..203 "}" - R_CURLY@203..204 "}" - R_CURLY@204..205 "}" - SEMICOLON@205..206 ";" - WHITESPACE@206..207 " " - COMMENT@207..249 "// Nonsensical but pe ..." - WHITESPACE@249..250 "\n" + USE_TREE@189..201 + PATH@189..201 + PATH@189..193 + PATH_SEGMENT@189..193 + NAME_REF@189..193 + IDENT@189..193 "root" + COLON2@193..195 "::" + PATH_SEGMENT@195..201 + NAME_REF@195..201 + IDENT@195..201 "export" + R_CURLY@201..202 "}" + R_CURLY@202..203 "}" + R_CURLY@203..204 "}" + SEMICOLON@204..205 ";" + WHITESPACE@205..206 " " + COMMENT@206..248 "// Nonsensical but pe ..." + WHITESPACE@248..249 "\n" diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0002_use_tree_list.rs b/crates/ra_syntax/test_data/parser/inline/ok/0002_use_tree_list.rs index 06c387cee..381cba1e2 100644 --- a/crates/ra_syntax/test_data/parser/inline/ok/0002_use_tree_list.rs +++ b/crates/ra_syntax/test_data/parser/inline/ok/0002_use_tree_list.rs @@ -1,4 +1,4 @@ use {crate::path::from::root, or::path::from::crate_name}; // Rust 2018 (with a crate named `or`) use {path::from::root}; // Rust 2015 use ::{some::arbritrary::path}; // Rust 2015 -use ::{{{crate::export}}}; // Nonsensical but perfectly legal nestnig +use ::{{{root::export}}}; // Nonsensical but perfectly legal nesting -- cgit v1.2.3