From 2959aa446e452d2176f9db453e52047453a3904e Mon Sep 17 00:00:00 2001 From: Ryan Cumming Date: Sun, 30 Jun 2019 19:55:50 +1000 Subject: Remove parse error on array initializer attributes This is actually allowed by the `rustc` parser but most attributes will fail later due to attributes on expressions being experimental. --- crates/ra_parser/src/grammar/expressions/atom.rs | 11 ---- .../inline/err/0015_array_length_attributes.rs | 5 -- .../inline/err/0015_array_length_attributes.txt | 60 ---------------------- 3 files changed, 76 deletions(-) delete mode 100644 crates/ra_syntax/tests/data/parser/inline/err/0015_array_length_attributes.rs delete mode 100644 crates/ra_syntax/tests/data/parser/inline/err/0015_array_length_attributes.txt diff --git a/crates/ra_parser/src/grammar/expressions/atom.rs b/crates/ra_parser/src/grammar/expressions/atom.rs index 5e51d667e..6bda04141 100644 --- a/crates/ra_parser/src/grammar/expressions/atom.rs +++ b/crates/ra_parser/src/grammar/expressions/atom.rs @@ -177,21 +177,10 @@ fn array_expr(p: &mut Parser) -> CompletedMarker { // 1, // 2, // ]; - let first_member_has_attrs = p.at(T![#]); attributes::outer_attributes(p); expr(p); if p.eat(T![;]) { - if first_member_has_attrs { - // test_err array_length_attributes - // pub const A: &[i64] = &[ - // #[cfg(test)] - // 1; - // 2, - // ]; - p.error("removing an expression is not supported in this position"); - } - expr(p); p.expect(T![']']); return m.complete(p, ARRAY_EXPR); diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0015_array_length_attributes.rs b/crates/ra_syntax/tests/data/parser/inline/err/0015_array_length_attributes.rs deleted file mode 100644 index ba630981d..000000000 --- a/crates/ra_syntax/tests/data/parser/inline/err/0015_array_length_attributes.rs +++ /dev/null @@ -1,5 +0,0 @@ -pub const A: &[i64] = &[ - #[cfg(test)] - 1; - 2, -]; diff --git a/crates/ra_syntax/tests/data/parser/inline/err/0015_array_length_attributes.txt b/crates/ra_syntax/tests/data/parser/inline/err/0015_array_length_attributes.txt deleted file mode 100644 index 5f0e3f22c..000000000 --- a/crates/ra_syntax/tests/data/parser/inline/err/0015_array_length_attributes.txt +++ /dev/null @@ -1,60 +0,0 @@ -SOURCE_FILE@[0; 53) - CONST_DEF@[0; 48) - VISIBILITY@[0; 3) - PUB_KW@[0; 3) "pub" - WHITESPACE@[3; 4) " " - CONST_KW@[4; 9) "const" - WHITESPACE@[9; 10) " " - NAME@[10; 11) - IDENT@[10; 11) "A" - COLON@[11; 12) ":" - WHITESPACE@[12; 13) " " - REFERENCE_TYPE@[13; 19) - AMP@[13; 14) "&" - SLICE_TYPE@[14; 19) - L_BRACK@[14; 15) "[" - PATH_TYPE@[15; 18) - PATH@[15; 18) - PATH_SEGMENT@[15; 18) - NAME_REF@[15; 18) - IDENT@[15; 18) "i64" - R_BRACK@[18; 19) "]" - WHITESPACE@[19; 20) " " - EQ@[20; 21) "=" - WHITESPACE@[21; 22) " " - REF_EXPR@[22; 48) - AMP@[22; 23) "&" - ARRAY_EXPR@[23; 48) - L_BRACK@[23; 24) "[" - WHITESPACE@[24; 27) "\n " - ATTR@[27; 39) - POUND@[27; 28) "#" - TOKEN_TREE@[28; 39) - L_BRACK@[28; 29) "[" - IDENT@[29; 32) "cfg" - TOKEN_TREE@[32; 38) - L_PAREN@[32; 33) "(" - IDENT@[33; 37) "test" - R_PAREN@[37; 38) ")" - R_BRACK@[38; 39) "]" - WHITESPACE@[39; 42) "\n " - LITERAL@[42; 43) - INT_NUMBER@[42; 43) "1" - SEMI@[43; 44) ";" - WHITESPACE@[44; 47) "\n " - LITERAL@[47; 48) - INT_NUMBER@[47; 48) "2" - ERROR@[48; 49) - COMMA@[48; 49) "," - WHITESPACE@[49; 50) "\n" - ERROR@[50; 51) - R_BRACK@[50; 51) "]" - ERROR@[51; 52) - SEMI@[51; 52) ";" - WHITESPACE@[52; 53) "\n" -error 44: removing an expression is not supported in this position -error 48: expected R_BRACK -error 48: expected SEMI -error 48: expected an item -error 50: expected an item -error 51: expected an item -- cgit v1.2.3