From af9fd37cd9a003cc26c07abdbd82473d501f95f1 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sat, 18 Sep 2021 15:22:49 +0300 Subject: [PATCH] internal: minimize use_tree parser tests The code here is intentionally dense and does exactly what is written. Explaining semantic difference between Rust 2015 and 2018 doesn't help with understanding syntax. Better to just add more targeted tests. --- crates/parser/src/grammar/items/use_item.rs | 93 +++------- .../parser/inline/ok/0002_use_tree_list.rast | 160 +++--------------- .../parser/inline/ok/0002_use_tree_list.rs | 5 +- .../parser/inline/ok/0020_use_star.rast | 59 ------- .../parser/inline/ok/0020_use_star.rs | 4 - .../parser/inline/ok/0043_use_alias.rast | 138 --------------- .../parser/inline/ok/0043_use_alias.rs | 8 - .../ok/0069_use_tree_list_after_path.rast | 39 ----- .../ok/0069_use_tree_list_after_path.rs | 2 - .../parser/inline/ok/0110_use_path.rast | 108 ------------ .../parser/inline/ok/0110_use_path.rs | 8 - .../parser/inline/ok/0174_use_tree_star.rast | 24 +++ .../parser/inline/ok/0174_use_tree_star.rs | 2 + .../parser/inline/ok/0176_use_tree_alias.rast | 32 ++++ .../parser/inline/ok/0176_use_tree_alias.rs | 2 + .../parser/inline/ok/0177_use_tree.rast | 30 ++++ .../parser/inline/ok/0177_use_tree.rs | 1 + .../parser/inline/ok/0177_use_tree_path.rast | 72 ++++++++ .../parser/inline/ok/0177_use_tree_path.rs | 6 + .../ok/0178_use_tree_path_use_tree.rast | 20 +++ .../inline/ok/0178_use_tree_path_use_tree.rs | 1 + .../inline/ok/0179_use_tree_abs_star.rast | 26 +++ .../inline/ok/0179_use_tree_abs_star.rs | 2 + .../inline/ok/0180_use_tree_path_star.rast | 13 ++ .../inline/ok/0180_use_tree_path_star.rs | 1 + .../parser/inline/ok/0181_use_item.rast | 16 ++ .../parser/inline/ok/0181_use_item.rs | 1 + 27 files changed, 304 insertions(+), 569 deletions(-) delete mode 100644 crates/syntax/test_data/parser/inline/ok/0020_use_star.rast delete mode 100644 crates/syntax/test_data/parser/inline/ok/0020_use_star.rs delete mode 100644 crates/syntax/test_data/parser/inline/ok/0043_use_alias.rast delete mode 100644 crates/syntax/test_data/parser/inline/ok/0043_use_alias.rs delete mode 100644 crates/syntax/test_data/parser/inline/ok/0069_use_tree_list_after_path.rast delete mode 100644 crates/syntax/test_data/parser/inline/ok/0069_use_tree_list_after_path.rs delete mode 100644 crates/syntax/test_data/parser/inline/ok/0110_use_path.rast delete mode 100644 crates/syntax/test_data/parser/inline/ok/0110_use_path.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0174_use_tree_star.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0174_use_tree_star.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0176_use_tree_alias.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0176_use_tree_alias.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0177_use_tree.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0177_use_tree.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0177_use_tree_path.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0177_use_tree_path.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0178_use_tree_path_use_tree.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0178_use_tree_path_use_tree.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0179_use_tree_abs_star.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0179_use_tree_abs_star.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0180_use_tree_path_star.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0180_use_tree_path_star.rs create mode 100644 crates/syntax/test_data/parser/inline/ok/0181_use_item.rast create mode 100644 crates/syntax/test_data/parser/inline/ok/0181_use_item.rs diff --git a/crates/parser/src/grammar/items/use_item.rs b/crates/parser/src/grammar/items/use_item.rs index 2339d0c69cc..ffb147b1fd2 100644 --- a/crates/parser/src/grammar/items/use_item.rs +++ b/crates/parser/src/grammar/items/use_item.rs @@ -1,99 +1,60 @@ use super::*; +// test use_item +// use std::collections; pub(super) fn use_(p: &mut Parser, m: Marker) { - assert!(p.at(T![use])); p.bump(T![use]); use_tree(p, true); p.expect(T![;]); m.complete(p, USE); } -/// Parse a use 'tree', such as `some::path` in `use some::path;` -/// Note that this is called both by `use_item` and `use_tree_list`, -/// so handles both `some::path::{inner::path}` and `inner::path` in -/// `use some::path::{inner::path};` +// test use_tree +// use outer::tree::{inner::tree}; fn use_tree(p: &mut Parser, top_level: bool) { let m = p.start(); match p.current() { - // Finish the use_tree for cases of e.g. - // `use some::path::{self, *};` or `use *;` - // This does not handle cases such as `use some::path::*` - // N.B. in Rust 2015 `use *;` imports all from crate root - // however in Rust 2018 `use *;` errors: ('cannot glob-import all possible crates') - // FIXME: Add this error (if not out of scope) - - // test use_star + // test use_tree_star // use *; - // use ::*; - // use some::path::{*}; - // use some::path::{::*}; + // use std::{*}; T![*] => p.bump(T![*]), + // test use_tree_abs_star + // use ::*; + // use std::{::*}; T![:] if p.at(T![::]) && p.nth(2) == T![*] => { - // Parse `use ::*;`, which imports all from the crate root in Rust 2015 - // This is invalid inside a use_tree_list, (e.g. `use some::path::{::*}`) - // but still parses and errors later: ('crate root in paths can only be used in start position') - // FIXME: Add this error (if not out of scope) - // In Rust 2018, it is always invalid (see above) p.bump(T![::]); p.bump(T![*]); } - // Open a use tree list - // Handles cases such as `use {some::path};` or `{inner::path}` in - // `use some::path::{{inner::path}, other::path}` - - // test use_tree_list - // 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::arbitrary::path}; // Rust 2015 - // use ::{{{root::export}}}; // Nonsensical but perfectly legal nesting - T!['{'] => { - use_tree_list(p); - } + T!['{'] => use_tree_list(p), T![:] if p.at(T![::]) && p.nth(2) == T!['{'] => { p.bump(T![::]); use_tree_list(p); } - // Parse a 'standard' path. - // Also handles aliases (e.g. `use something as something_else`) - // test use_path - // use ::crate_name; // Rust 2018 - All flavours - // use crate_name; // Rust 2018 - Anchored paths - // use item_in_scope_or_crate_name; // Rust 2018 - Uniform Paths + // test use_tree_path + // use ::std; + // use std::collections; // - // use self::module::Item; - // use crate::Item; - // use self::some::Struct; - // use crate_name::some_item; + // use self::m; + // use super::m; + // use crate::m; _ if paths::is_use_path_start(p) => { paths::use_path(p); match p.current() { - T![as] => { - // test use_alias - // use some::path as some_name; - // use some::{ - // other::path as some_other_name, - // different::path as different_name, - // yet::another::path, - // running::out::of::synonyms::for_::different::* - // }; - // use Trait as _; - opt_rename(p); - } + // test use_tree_alias + // use std as stdlib; + // use Trait as _; + T![as] => opt_rename(p), T![:] if p.at(T![::]) => { p.bump(T![::]); match p.current() { - T![*] => { - p.bump(T![*]); - } - // test use_tree_list_after_path - // use crate::{Item}; - // use self::{Item}; + // test use_tree_path_star + // use std::*; + T![*] => p.bump(T![*]), + // test use_tree_path_use_tree + // use std::{collections}; T!['{'] => use_tree_list(p), - _ => { - // is this unreachable? - p.error("expected `{` or `*`"); - } + _ => p.error("expected `{` or `*`"), } } _ => (), @@ -115,6 +76,8 @@ fn use_tree(p: &mut Parser, top_level: bool) { m.complete(p, USE_TREE); } +// test use_tree_list +// use {a, b, c}; pub(crate) fn use_tree_list(p: &mut Parser) { assert!(p.at(T!['{'])); let m = p.start(); diff --git a/crates/syntax/test_data/parser/inline/ok/0002_use_tree_list.rast b/crates/syntax/test_data/parser/inline/ok/0002_use_tree_list.rast index 970826739fd..9bee074b7b2 100644 --- a/crates/syntax/test_data/parser/inline/ok/0002_use_tree_list.rast +++ b/crates/syntax/test_data/parser/inline/ok/0002_use_tree_list.rast @@ -1,137 +1,29 @@ -SOURCE_FILE@0..248 - USE@0..58 +SOURCE_FILE@0..15 + USE@0..14 USE_KW@0..3 "use" WHITESPACE@3..4 " " - USE_TREE@4..57 - USE_TREE_LIST@4..57 + USE_TREE@4..13 + USE_TREE_LIST@4..13 L_CURLY@4..5 "{" - USE_TREE@5..28 - PATH@5..28 - PATH@5..22 - PATH@5..16 - PATH@5..10 - PATH_SEGMENT@5..10 - NAME_REF@5..10 - CRATE_KW@5..10 "crate" - COLON2@10..12 "::" - PATH_SEGMENT@12..16 - NAME_REF@12..16 - IDENT@12..16 "path" - COLON2@16..18 "::" - PATH_SEGMENT@18..22 - NAME_REF@18..22 - IDENT@18..22 "from" - COLON2@22..24 "::" - PATH_SEGMENT@24..28 - NAME_REF@24..28 - IDENT@24..28 "root" - COMMA@28..29 "," - WHITESPACE@29..30 " " - USE_TREE@30..56 - PATH@30..56 - PATH@30..44 - PATH@30..38 - PATH@30..32 - PATH_SEGMENT@30..32 - NAME_REF@30..32 - IDENT@30..32 "or" - COLON2@32..34 "::" - PATH_SEGMENT@34..38 - NAME_REF@34..38 - IDENT@34..38 "path" - COLON2@38..40 "::" - PATH_SEGMENT@40..44 - NAME_REF@40..44 - IDENT@40..44 "from" - COLON2@44..46 "::" - PATH_SEGMENT@46..56 - NAME_REF@46..56 - IDENT@46..56 "crate_name" - R_CURLY@56..57 "}" - SEMICOLON@57..58 ";" - WHITESPACE@58..59 " " - USE@59..121 - COMMENT@59..97 "// Rust 2018 (with a ..." - WHITESPACE@97..98 "\n" - USE_KW@98..101 "use" - WHITESPACE@101..102 " " - USE_TREE@102..120 - USE_TREE_LIST@102..120 - L_CURLY@102..103 "{" - USE_TREE@103..119 - PATH@103..119 - PATH@103..113 - PATH@103..107 - PATH_SEGMENT@103..107 - NAME_REF@103..107 - IDENT@103..107 "path" - COLON2@107..109 "::" - PATH_SEGMENT@109..113 - NAME_REF@109..113 - IDENT@109..113 "from" - COLON2@113..115 "::" - PATH_SEGMENT@115..119 - NAME_REF@115..119 - IDENT@115..119 "root" - R_CURLY@119..120 "}" - SEMICOLON@120..121 ";" - WHITESPACE@121..122 " " - USE@122..165 - COMMENT@122..134 "// Rust 2015" - WHITESPACE@134..135 "\n" - USE_KW@135..138 "use" - WHITESPACE@138..139 " " - USE_TREE@139..164 - COLON2@139..141 "::" - USE_TREE_LIST@141..164 - L_CURLY@141..142 "{" - USE_TREE@142..163 - PATH@142..163 - PATH@142..157 - PATH@142..146 - PATH_SEGMENT@142..146 - NAME_REF@142..146 - IDENT@142..146 "some" - COLON2@146..148 "::" - PATH_SEGMENT@148..157 - NAME_REF@148..157 - IDENT@148..157 "arbitrary" - COLON2@157..159 "::" - PATH_SEGMENT@159..163 - NAME_REF@159..163 - IDENT@159..163 "path" - R_CURLY@163..164 "}" - SEMICOLON@164..165 ";" - WHITESPACE@165..166 " " - USE@166..204 - COMMENT@166..178 "// Rust 2015" - WHITESPACE@178..179 "\n" - USE_KW@179..182 "use" - WHITESPACE@182..183 " " - USE_TREE@183..203 - COLON2@183..185 "::" - USE_TREE_LIST@185..203 - L_CURLY@185..186 "{" - USE_TREE@186..202 - USE_TREE_LIST@186..202 - L_CURLY@186..187 "{" - USE_TREE@187..201 - USE_TREE_LIST@187..201 - L_CURLY@187..188 "{" - USE_TREE@188..200 - PATH@188..200 - PATH@188..192 - PATH_SEGMENT@188..192 - NAME_REF@188..192 - IDENT@188..192 "root" - COLON2@192..194 "::" - PATH_SEGMENT@194..200 - NAME_REF@194..200 - IDENT@194..200 "export" - R_CURLY@200..201 "}" - R_CURLY@201..202 "}" - R_CURLY@202..203 "}" - SEMICOLON@203..204 ";" - WHITESPACE@204..205 " " - COMMENT@205..247 "// Nonsensical but pe ..." - WHITESPACE@247..248 "\n" + USE_TREE@5..6 + PATH@5..6 + PATH_SEGMENT@5..6 + NAME_REF@5..6 + IDENT@5..6 "a" + COMMA@6..7 "," + WHITESPACE@7..8 " " + USE_TREE@8..9 + PATH@8..9 + PATH_SEGMENT@8..9 + NAME_REF@8..9 + IDENT@8..9 "b" + COMMA@9..10 "," + WHITESPACE@10..11 " " + USE_TREE@11..12 + PATH@11..12 + PATH_SEGMENT@11..12 + NAME_REF@11..12 + IDENT@11..12 "c" + R_CURLY@12..13 "}" + SEMICOLON@13..14 ";" + WHITESPACE@14..15 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0002_use_tree_list.rs b/crates/syntax/test_data/parser/inline/ok/0002_use_tree_list.rs index 02af4b446e1..6fa175f5429 100644 --- a/crates/syntax/test_data/parser/inline/ok/0002_use_tree_list.rs +++ b/crates/syntax/test_data/parser/inline/ok/0002_use_tree_list.rs @@ -1,4 +1 @@ -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::arbitrary::path}; // Rust 2015 -use ::{{{root::export}}}; // Nonsensical but perfectly legal nesting +use {a, b, c}; diff --git a/crates/syntax/test_data/parser/inline/ok/0020_use_star.rast b/crates/syntax/test_data/parser/inline/ok/0020_use_star.rast deleted file mode 100644 index b3623c4455d..00000000000 --- a/crates/syntax/test_data/parser/inline/ok/0020_use_star.rast +++ /dev/null @@ -1,59 +0,0 @@ -SOURCE_FILE@0..60 - USE@0..6 - USE_KW@0..3 "use" - WHITESPACE@3..4 " " - USE_TREE@4..5 - STAR@4..5 "*" - SEMICOLON@5..6 ";" - WHITESPACE@6..7 "\n" - USE@7..15 - USE_KW@7..10 "use" - WHITESPACE@10..11 " " - USE_TREE@11..14 - COLON2@11..13 "::" - STAR@13..14 "*" - SEMICOLON@14..15 ";" - WHITESPACE@15..16 "\n" - USE@16..36 - USE_KW@16..19 "use" - WHITESPACE@19..20 " " - USE_TREE@20..35 - PATH@20..30 - PATH@20..24 - PATH_SEGMENT@20..24 - NAME_REF@20..24 - IDENT@20..24 "some" - COLON2@24..26 "::" - PATH_SEGMENT@26..30 - NAME_REF@26..30 - IDENT@26..30 "path" - COLON2@30..32 "::" - USE_TREE_LIST@32..35 - L_CURLY@32..33 "{" - USE_TREE@33..34 - STAR@33..34 "*" - R_CURLY@34..35 "}" - SEMICOLON@35..36 ";" - WHITESPACE@36..37 "\n" - USE@37..59 - USE_KW@37..40 "use" - WHITESPACE@40..41 " " - USE_TREE@41..58 - PATH@41..51 - PATH@41..45 - PATH_SEGMENT@41..45 - NAME_REF@41..45 - IDENT@41..45 "some" - COLON2@45..47 "::" - PATH_SEGMENT@47..51 - NAME_REF@47..51 - IDENT@47..51 "path" - COLON2@51..53 "::" - USE_TREE_LIST@53..58 - L_CURLY@53..54 "{" - USE_TREE@54..57 - COLON2@54..56 "::" - STAR@56..57 "*" - R_CURLY@57..58 "}" - SEMICOLON@58..59 ";" - WHITESPACE@59..60 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0020_use_star.rs b/crates/syntax/test_data/parser/inline/ok/0020_use_star.rs deleted file mode 100644 index 6f15769a8c7..00000000000 --- a/crates/syntax/test_data/parser/inline/ok/0020_use_star.rs +++ /dev/null @@ -1,4 +0,0 @@ -use *; -use ::*; -use some::path::{*}; -use some::path::{::*}; diff --git a/crates/syntax/test_data/parser/inline/ok/0043_use_alias.rast b/crates/syntax/test_data/parser/inline/ok/0043_use_alias.rast deleted file mode 100644 index 60b517230e8..00000000000 --- a/crates/syntax/test_data/parser/inline/ok/0043_use_alias.rast +++ /dev/null @@ -1,138 +0,0 @@ -SOURCE_FILE@0..198 - USE@0..28 - USE_KW@0..3 "use" - WHITESPACE@3..4 " " - USE_TREE@4..27 - PATH@4..14 - PATH@4..8 - PATH_SEGMENT@4..8 - NAME_REF@4..8 - IDENT@4..8 "some" - COLON2@8..10 "::" - PATH_SEGMENT@10..14 - NAME_REF@10..14 - IDENT@10..14 "path" - WHITESPACE@14..15 " " - RENAME@15..27 - AS_KW@15..17 "as" - WHITESPACE@17..18 " " - NAME@18..27 - IDENT@18..27 "some_name" - SEMICOLON@27..28 ";" - WHITESPACE@28..29 "\n" - USE@29..181 - USE_KW@29..32 "use" - WHITESPACE@32..33 " " - USE_TREE@33..180 - PATH@33..37 - PATH_SEGMENT@33..37 - NAME_REF@33..37 - IDENT@33..37 "some" - COLON2@37..39 "::" - USE_TREE_LIST@39..180 - L_CURLY@39..40 "{" - WHITESPACE@40..42 "\n " - USE_TREE@42..72 - PATH@42..53 - PATH@42..47 - PATH_SEGMENT@42..47 - NAME_REF@42..47 - IDENT@42..47 "other" - COLON2@47..49 "::" - PATH_SEGMENT@49..53 - NAME_REF@49..53 - IDENT@49..53 "path" - WHITESPACE@53..54 " " - RENAME@54..72 - AS_KW@54..56 "as" - WHITESPACE@56..57 " " - NAME@57..72 - IDENT@57..72 "some_other_name" - COMMA@72..73 "," - WHITESPACE@73..75 "\n " - USE_TREE@75..108 - PATH@75..90 - PATH@75..84 - PATH_SEGMENT@75..84 - NAME_REF@75..84 - IDENT@75..84 "different" - COLON2@84..86 "::" - PATH_SEGMENT@86..90 - NAME_REF@86..90 - IDENT@86..90 "path" - WHITESPACE@90..91 " " - RENAME@91..108 - AS_KW@91..93 "as" - WHITESPACE@93..94 " " - NAME@94..108 - IDENT@94..108 "different_name" - COMMA@108..109 "," - WHITESPACE@109..111 "\n " - USE_TREE@111..129 - PATH@111..129 - PATH@111..123 - PATH@111..114 - PATH_SEGMENT@111..114 - NAME_REF@111..114 - IDENT@111..114 "yet" - COLON2@114..116 "::" - PATH_SEGMENT@116..123 - NAME_REF@116..123 - IDENT@116..123 "another" - COLON2@123..125 "::" - PATH_SEGMENT@125..129 - NAME_REF@125..129 - IDENT@125..129 "path" - COMMA@129..130 "," - WHITESPACE@130..132 "\n " - USE_TREE@132..178 - PATH@132..175 - PATH@132..164 - PATH@132..158 - PATH@132..148 - PATH@132..144 - PATH@132..139 - PATH_SEGMENT@132..139 - NAME_REF@132..139 - IDENT@132..139 "running" - COLON2@139..141 "::" - PATH_SEGMENT@141..144 - NAME_REF@141..144 - IDENT@141..144 "out" - COLON2@144..146 "::" - PATH_SEGMENT@146..148 - NAME_REF@146..148 - IDENT@146..148 "of" - COLON2@148..150 "::" - PATH_SEGMENT@150..158 - NAME_REF@150..158 - IDENT@150..158 "synonyms" - COLON2@158..160 "::" - PATH_SEGMENT@160..164 - NAME_REF@160..164 - IDENT@160..164 "for_" - COLON2@164..166 "::" - PATH_SEGMENT@166..175 - NAME_REF@166..175 - IDENT@166..175 "different" - COLON2@175..177 "::" - STAR@177..178 "*" - WHITESPACE@178..179 "\n" - R_CURLY@179..180 "}" - SEMICOLON@180..181 ";" - WHITESPACE@181..182 "\n" - USE@182..197 - USE_KW@182..185 "use" - WHITESPACE@185..186 " " - USE_TREE@186..196 - PATH@186..191 - PATH_SEGMENT@186..191 - NAME_REF@186..191 - IDENT@186..191 "Trait" - WHITESPACE@191..192 " " - RENAME@192..196 - AS_KW@192..194 "as" - WHITESPACE@194..195 " " - UNDERSCORE@195..196 "_" - SEMICOLON@196..197 ";" - WHITESPACE@197..198 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0043_use_alias.rs b/crates/syntax/test_data/parser/inline/ok/0043_use_alias.rs deleted file mode 100644 index 9be50f87708..00000000000 --- a/crates/syntax/test_data/parser/inline/ok/0043_use_alias.rs +++ /dev/null @@ -1,8 +0,0 @@ -use some::path as some_name; -use some::{ - other::path as some_other_name, - different::path as different_name, - yet::another::path, - running::out::of::synonyms::for_::different::* -}; -use Trait as _; diff --git a/crates/syntax/test_data/parser/inline/ok/0069_use_tree_list_after_path.rast b/crates/syntax/test_data/parser/inline/ok/0069_use_tree_list_after_path.rast deleted file mode 100644 index 192a9cca687..00000000000 --- a/crates/syntax/test_data/parser/inline/ok/0069_use_tree_list_after_path.rast +++ /dev/null @@ -1,39 +0,0 @@ -SOURCE_FILE@0..37 - USE@0..18 - USE_KW@0..3 "use" - WHITESPACE@3..4 " " - USE_TREE@4..17 - PATH@4..9 - PATH_SEGMENT@4..9 - NAME_REF@4..9 - CRATE_KW@4..9 "crate" - COLON2@9..11 "::" - USE_TREE_LIST@11..17 - L_CURLY@11..12 "{" - USE_TREE@12..16 - PATH@12..16 - PATH_SEGMENT@12..16 - NAME_REF@12..16 - IDENT@12..16 "Item" - R_CURLY@16..17 "}" - SEMICOLON@17..18 ";" - WHITESPACE@18..19 "\n" - USE@19..36 - USE_KW@19..22 "use" - WHITESPACE@22..23 " " - USE_TREE@23..35 - PATH@23..27 - PATH_SEGMENT@23..27 - NAME_REF@23..27 - SELF_KW@23..27 "self" - COLON2@27..29 "::" - USE_TREE_LIST@29..35 - L_CURLY@29..30 "{" - USE_TREE@30..34 - PATH@30..34 - PATH_SEGMENT@30..34 - NAME_REF@30..34 - IDENT@30..34 "Item" - R_CURLY@34..35 "}" - SEMICOLON@35..36 ";" - WHITESPACE@36..37 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0069_use_tree_list_after_path.rs b/crates/syntax/test_data/parser/inline/ok/0069_use_tree_list_after_path.rs deleted file mode 100644 index c0a3d634e57..00000000000 --- a/crates/syntax/test_data/parser/inline/ok/0069_use_tree_list_after_path.rs +++ /dev/null @@ -1,2 +0,0 @@ -use crate::{Item}; -use self::{Item}; diff --git a/crates/syntax/test_data/parser/inline/ok/0110_use_path.rast b/crates/syntax/test_data/parser/inline/ok/0110_use_path.rast deleted file mode 100644 index ac51eb91d20..00000000000 --- a/crates/syntax/test_data/parser/inline/ok/0110_use_path.rast +++ /dev/null @@ -1,108 +0,0 @@ -SOURCE_FILE@0..247 - USE@0..17 - USE_KW@0..3 "use" - WHITESPACE@3..4 " " - USE_TREE@4..16 - PATH@4..16 - PATH_SEGMENT@4..16 - COLON2@4..6 "::" - NAME_REF@6..16 - IDENT@6..16 "crate_name" - SEMICOLON@16..17 ";" - WHITESPACE@17..18 " " - USE@18..61 - COMMENT@18..45 "// Rust 2018 - All fl ..." - WHITESPACE@45..46 "\n" - USE_KW@46..49 "use" - WHITESPACE@49..50 " " - USE_TREE@50..60 - PATH@50..60 - PATH_SEGMENT@50..60 - NAME_REF@50..60 - IDENT@50..60 "crate_name" - SEMICOLON@60..61 ";" - WHITESPACE@61..62 " " - USE@62..124 - COMMENT@62..91 "// Rust 2018 - Anchor ..." - WHITESPACE@91..92 "\n" - USE_KW@92..95 "use" - WHITESPACE@95..96 " " - USE_TREE@96..123 - PATH@96..123 - PATH_SEGMENT@96..123 - NAME_REF@96..123 - IDENT@96..123 "item_in_scope_or_crat ..." - SEMICOLON@123..124 ";" - WHITESPACE@124..125 " " - COMMENT@125..153 "// Rust 2018 - Unifor ..." - WHITESPACE@153..155 "\n\n" - USE@155..178 - USE_KW@155..158 "use" - WHITESPACE@158..159 " " - USE_TREE@159..177 - PATH@159..177 - PATH@159..171 - PATH@159..163 - PATH_SEGMENT@159..163 - NAME_REF@159..163 - SELF_KW@159..163 "self" - COLON2@163..165 "::" - PATH_SEGMENT@165..171 - NAME_REF@165..171 - IDENT@165..171 "module" - COLON2@171..173 "::" - PATH_SEGMENT@173..177 - NAME_REF@173..177 - IDENT@173..177 "Item" - SEMICOLON@177..178 ";" - WHITESPACE@178..179 "\n" - USE@179..195 - USE_KW@179..182 "use" - WHITESPACE@182..183 " " - USE_TREE@183..194 - PATH@183..194 - PATH@183..188 - PATH_SEGMENT@183..188 - NAME_REF@183..188 - CRATE_KW@183..188 "crate" - COLON2@188..190 "::" - PATH_SEGMENT@190..194 - NAME_REF@190..194 - IDENT@190..194 "Item" - SEMICOLON@194..195 ";" - WHITESPACE@195..196 "\n" - USE@196..219 - USE_KW@196..199 "use" - WHITESPACE@199..200 " " - USE_TREE@200..218 - PATH@200..218 - PATH@200..210 - PATH@200..204 - PATH_SEGMENT@200..204 - NAME_REF@200..204 - SELF_KW@200..204 "self" - COLON2@204..206 "::" - PATH_SEGMENT@206..210 - NAME_REF@206..210 - IDENT@206..210 "some" - COLON2@210..212 "::" - PATH_SEGMENT@212..218 - NAME_REF@212..218 - IDENT@212..218 "Struct" - SEMICOLON@218..219 ";" - WHITESPACE@219..220 "\n" - USE@220..246 - USE_KW@220..223 "use" - WHITESPACE@223..224 " " - USE_TREE@224..245 - PATH@224..245 - PATH@224..234 - PATH_SEGMENT@224..234 - NAME_REF@224..234 - IDENT@224..234 "crate_name" - COLON2@234..236 "::" - PATH_SEGMENT@236..245 - NAME_REF@236..245 - IDENT@236..245 "some_item" - SEMICOLON@245..246 ";" - WHITESPACE@246..247 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0110_use_path.rs b/crates/syntax/test_data/parser/inline/ok/0110_use_path.rs deleted file mode 100644 index 1e436a6bc2b..00000000000 --- a/crates/syntax/test_data/parser/inline/ok/0110_use_path.rs +++ /dev/null @@ -1,8 +0,0 @@ -use ::crate_name; // Rust 2018 - All flavours -use crate_name; // Rust 2018 - Anchored paths -use item_in_scope_or_crate_name; // Rust 2018 - Uniform Paths - -use self::module::Item; -use crate::Item; -use self::some::Struct; -use crate_name::some_item; diff --git a/crates/syntax/test_data/parser/inline/ok/0174_use_tree_star.rast b/crates/syntax/test_data/parser/inline/ok/0174_use_tree_star.rast new file mode 100644 index 00000000000..b9c6a3bed8c --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0174_use_tree_star.rast @@ -0,0 +1,24 @@ +SOURCE_FILE@0..21 + USE@0..6 + USE_KW@0..3 "use" + WHITESPACE@3..4 " " + USE_TREE@4..5 + STAR@4..5 "*" + SEMICOLON@5..6 ";" + WHITESPACE@6..7 "\n" + USE@7..20 + USE_KW@7..10 "use" + WHITESPACE@10..11 " " + USE_TREE@11..19 + PATH@11..14 + PATH_SEGMENT@11..14 + NAME_REF@11..14 + IDENT@11..14 "std" + COLON2@14..16 "::" + USE_TREE_LIST@16..19 + L_CURLY@16..17 "{" + USE_TREE@17..18 + STAR@17..18 "*" + R_CURLY@18..19 "}" + SEMICOLON@19..20 ";" + WHITESPACE@20..21 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0174_use_tree_star.rs b/crates/syntax/test_data/parser/inline/ok/0174_use_tree_star.rs new file mode 100644 index 00000000000..b8c613440d5 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0174_use_tree_star.rs @@ -0,0 +1,2 @@ +use *; +use std::{*}; diff --git a/crates/syntax/test_data/parser/inline/ok/0176_use_tree_alias.rast b/crates/syntax/test_data/parser/inline/ok/0176_use_tree_alias.rast new file mode 100644 index 00000000000..210ff1f9816 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0176_use_tree_alias.rast @@ -0,0 +1,32 @@ +SOURCE_FILE@0..35 + USE@0..18 + USE_KW@0..3 "use" + WHITESPACE@3..4 " " + USE_TREE@4..17 + PATH@4..7 + PATH_SEGMENT@4..7 + NAME_REF@4..7 + IDENT@4..7 "std" + WHITESPACE@7..8 " " + RENAME@8..17 + AS_KW@8..10 "as" + WHITESPACE@10..11 " " + NAME@11..17 + IDENT@11..17 "stdlib" + SEMICOLON@17..18 ";" + WHITESPACE@18..19 "\n" + USE@19..34 + USE_KW@19..22 "use" + WHITESPACE@22..23 " " + USE_TREE@23..33 + PATH@23..28 + PATH_SEGMENT@23..28 + NAME_REF@23..28 + IDENT@23..28 "Trait" + WHITESPACE@28..29 " " + RENAME@29..33 + AS_KW@29..31 "as" + WHITESPACE@31..32 " " + UNDERSCORE@32..33 "_" + SEMICOLON@33..34 ";" + WHITESPACE@34..35 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0176_use_tree_alias.rs b/crates/syntax/test_data/parser/inline/ok/0176_use_tree_alias.rs new file mode 100644 index 00000000000..19a6906a268 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0176_use_tree_alias.rs @@ -0,0 +1,2 @@ +use std as stdlib; +use Trait as _; diff --git a/crates/syntax/test_data/parser/inline/ok/0177_use_tree.rast b/crates/syntax/test_data/parser/inline/ok/0177_use_tree.rast new file mode 100644 index 00000000000..978d2963e84 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0177_use_tree.rast @@ -0,0 +1,30 @@ +SOURCE_FILE@0..32 + USE@0..31 + USE_KW@0..3 "use" + WHITESPACE@3..4 " " + USE_TREE@4..30 + PATH@4..15 + PATH@4..9 + PATH_SEGMENT@4..9 + NAME_REF@4..9 + IDENT@4..9 "outer" + COLON2@9..11 "::" + PATH_SEGMENT@11..15 + NAME_REF@11..15 + IDENT@11..15 "tree" + COLON2@15..17 "::" + USE_TREE_LIST@17..30 + L_CURLY@17..18 "{" + USE_TREE@18..29 + PATH@18..29 + PATH@18..23 + PATH_SEGMENT@18..23 + NAME_REF@18..23 + IDENT@18..23 "inner" + COLON2@23..25 "::" + PATH_SEGMENT@25..29 + NAME_REF@25..29 + IDENT@25..29 "tree" + R_CURLY@29..30 "}" + SEMICOLON@30..31 ";" + WHITESPACE@31..32 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0177_use_tree.rs b/crates/syntax/test_data/parser/inline/ok/0177_use_tree.rs new file mode 100644 index 00000000000..3cc39434820 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0177_use_tree.rs @@ -0,0 +1 @@ +use outer::tree::{inner::tree}; diff --git a/crates/syntax/test_data/parser/inline/ok/0177_use_tree_path.rast b/crates/syntax/test_data/parser/inline/ok/0177_use_tree_path.rast new file mode 100644 index 00000000000..24086b5a1df --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0177_use_tree_path.rast @@ -0,0 +1,72 @@ +SOURCE_FILE@0..75 + USE@0..10 + USE_KW@0..3 "use" + WHITESPACE@3..4 " " + USE_TREE@4..9 + PATH@4..9 + PATH_SEGMENT@4..9 + COLON2@4..6 "::" + NAME_REF@6..9 + IDENT@6..9 "std" + SEMICOLON@9..10 ";" + WHITESPACE@10..11 "\n" + USE@11..32 + USE_KW@11..14 "use" + WHITESPACE@14..15 " " + USE_TREE@15..31 + PATH@15..31 + PATH@15..18 + PATH_SEGMENT@15..18 + NAME_REF@15..18 + IDENT@15..18 "std" + COLON2@18..20 "::" + PATH_SEGMENT@20..31 + NAME_REF@20..31 + IDENT@20..31 "collections" + SEMICOLON@31..32 ";" + WHITESPACE@32..34 "\n\n" + USE@34..46 + USE_KW@34..37 "use" + WHITESPACE@37..38 " " + USE_TREE@38..45 + PATH@38..45 + PATH@38..42 + PATH_SEGMENT@38..42 + NAME_REF@38..42 + SELF_KW@38..42 "self" + COLON2@42..44 "::" + PATH_SEGMENT@44..45 + NAME_REF@44..45 + IDENT@44..45 "m" + SEMICOLON@45..46 ";" + WHITESPACE@46..47 "\n" + USE@47..60 + USE_KW@47..50 "use" + WHITESPACE@50..51 " " + USE_TREE@51..59 + PATH@51..59 + PATH@51..56 + PATH_SEGMENT@51..56 + NAME_REF@51..56 + SUPER_KW@51..56 "super" + COLON2@56..58 "::" + PATH_SEGMENT@58..59 + NAME_REF@58..59 + IDENT@58..59 "m" + SEMICOLON@59..60 ";" + WHITESPACE@60..61 "\n" + USE@61..74 + USE_KW@61..64 "use" + WHITESPACE@64..65 " " + USE_TREE@65..73 + PATH@65..73 + PATH@65..70 + PATH_SEGMENT@65..70 + NAME_REF@65..70 + CRATE_KW@65..70 "crate" + COLON2@70..72 "::" + PATH_SEGMENT@72..73 + NAME_REF@72..73 + IDENT@72..73 "m" + SEMICOLON@73..74 ";" + WHITESPACE@74..75 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0177_use_tree_path.rs b/crates/syntax/test_data/parser/inline/ok/0177_use_tree_path.rs new file mode 100644 index 00000000000..5b22f88523b --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0177_use_tree_path.rs @@ -0,0 +1,6 @@ +use ::std; +use std::collections; + +use self::m; +use super::m; +use crate::m; diff --git a/crates/syntax/test_data/parser/inline/ok/0178_use_tree_path_use_tree.rast b/crates/syntax/test_data/parser/inline/ok/0178_use_tree_path_use_tree.rast new file mode 100644 index 00000000000..620a792306f --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0178_use_tree_path_use_tree.rast @@ -0,0 +1,20 @@ +SOURCE_FILE@0..24 + USE@0..23 + USE_KW@0..3 "use" + WHITESPACE@3..4 " " + USE_TREE@4..22 + PATH@4..7 + PATH_SEGMENT@4..7 + NAME_REF@4..7 + IDENT@4..7 "std" + COLON2@7..9 "::" + USE_TREE_LIST@9..22 + L_CURLY@9..10 "{" + USE_TREE@10..21 + PATH@10..21 + PATH_SEGMENT@10..21 + NAME_REF@10..21 + IDENT@10..21 "collections" + R_CURLY@21..22 "}" + SEMICOLON@22..23 ";" + WHITESPACE@23..24 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0178_use_tree_path_use_tree.rs b/crates/syntax/test_data/parser/inline/ok/0178_use_tree_path_use_tree.rs new file mode 100644 index 00000000000..c3086f51a2e --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0178_use_tree_path_use_tree.rs @@ -0,0 +1 @@ +use std::{collections}; diff --git a/crates/syntax/test_data/parser/inline/ok/0179_use_tree_abs_star.rast b/crates/syntax/test_data/parser/inline/ok/0179_use_tree_abs_star.rast new file mode 100644 index 00000000000..4b132f2ded5 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0179_use_tree_abs_star.rast @@ -0,0 +1,26 @@ +SOURCE_FILE@0..25 + USE@0..8 + USE_KW@0..3 "use" + WHITESPACE@3..4 " " + USE_TREE@4..7 + COLON2@4..6 "::" + STAR@6..7 "*" + SEMICOLON@7..8 ";" + WHITESPACE@8..9 "\n" + USE@9..24 + USE_KW@9..12 "use" + WHITESPACE@12..13 " " + USE_TREE@13..23 + PATH@13..16 + PATH_SEGMENT@13..16 + NAME_REF@13..16 + IDENT@13..16 "std" + COLON2@16..18 "::" + USE_TREE_LIST@18..23 + L_CURLY@18..19 "{" + USE_TREE@19..22 + COLON2@19..21 "::" + STAR@21..22 "*" + R_CURLY@22..23 "}" + SEMICOLON@23..24 ";" + WHITESPACE@24..25 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0179_use_tree_abs_star.rs b/crates/syntax/test_data/parser/inline/ok/0179_use_tree_abs_star.rs new file mode 100644 index 00000000000..caae0ba026a --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0179_use_tree_abs_star.rs @@ -0,0 +1,2 @@ +use ::*; +use std::{::*}; diff --git a/crates/syntax/test_data/parser/inline/ok/0180_use_tree_path_star.rast b/crates/syntax/test_data/parser/inline/ok/0180_use_tree_path_star.rast new file mode 100644 index 00000000000..93384d6ed7f --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0180_use_tree_path_star.rast @@ -0,0 +1,13 @@ +SOURCE_FILE@0..12 + USE@0..11 + USE_KW@0..3 "use" + WHITESPACE@3..4 " " + USE_TREE@4..10 + PATH@4..7 + PATH_SEGMENT@4..7 + NAME_REF@4..7 + IDENT@4..7 "std" + COLON2@7..9 "::" + STAR@9..10 "*" + SEMICOLON@10..11 ";" + WHITESPACE@11..12 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0180_use_tree_path_star.rs b/crates/syntax/test_data/parser/inline/ok/0180_use_tree_path_star.rs new file mode 100644 index 00000000000..dd601cffe5d --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0180_use_tree_path_star.rs @@ -0,0 +1 @@ +use std::*; diff --git a/crates/syntax/test_data/parser/inline/ok/0181_use_item.rast b/crates/syntax/test_data/parser/inline/ok/0181_use_item.rast new file mode 100644 index 00000000000..3952fcf09e3 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0181_use_item.rast @@ -0,0 +1,16 @@ +SOURCE_FILE@0..22 + USE@0..21 + USE_KW@0..3 "use" + WHITESPACE@3..4 " " + USE_TREE@4..20 + PATH@4..20 + PATH@4..7 + PATH_SEGMENT@4..7 + NAME_REF@4..7 + IDENT@4..7 "std" + COLON2@7..9 "::" + PATH_SEGMENT@9..20 + NAME_REF@9..20 + IDENT@9..20 "collections" + SEMICOLON@20..21 ";" + WHITESPACE@21..22 "\n" diff --git a/crates/syntax/test_data/parser/inline/ok/0181_use_item.rs b/crates/syntax/test_data/parser/inline/ok/0181_use_item.rs new file mode 100644 index 00000000000..48ac87b14a0 --- /dev/null +++ b/crates/syntax/test_data/parser/inline/ok/0181_use_item.rs @@ -0,0 +1 @@ +use std::collections;