From 00e6b5d26c82d5faff066c24418a0eb5741efcd1 Mon Sep 17 00:00:00 2001 From: DJMcNab <36049421+DJMcNab@users.noreply.github.com> Date: Mon, 28 Jan 2019 20:03:56 +0000 Subject: Parse and validate attributes in blocks --- .../data/parser/err/0031_block_inner_attrs.rs | 15 +++ .../data/parser/err/0031_block_inner_attrs.txt | 114 +++++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 crates/ra_syntax/tests/data/parser/err/0031_block_inner_attrs.rs create mode 100644 crates/ra_syntax/tests/data/parser/err/0031_block_inner_attrs.txt (limited to 'crates/ra_syntax/tests/data/parser/err') diff --git a/crates/ra_syntax/tests/data/parser/err/0031_block_inner_attrs.rs b/crates/ra_syntax/tests/data/parser/err/0031_block_inner_attrs.rs new file mode 100644 index 000000000..6a04f2d0a --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0031_block_inner_attrs.rs @@ -0,0 +1,15 @@ +fn block() { + let inner = { + #![doc("Inner attributes not allowed here")] + //! Nor are ModuleDoc comments + }; + if true { + #![doc("Nor here")] + #![doc("We error on each attr")] + //! Nor are ModuleDoc comments + } + while true { + #![doc("Nor here")] + //! Nor are ModuleDoc comments + } +} diff --git a/crates/ra_syntax/tests/data/parser/err/0031_block_inner_attrs.txt b/crates/ra_syntax/tests/data/parser/err/0031_block_inner_attrs.txt new file mode 100644 index 000000000..086aa79ac --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/err/0031_block_inner_attrs.txt @@ -0,0 +1,114 @@ +SOURCE_FILE@[0; 350) + FN_DEF@[0; 349) + FN_KW@[0; 2) + WHITESPACE@[2; 3) + NAME@[3; 8) + IDENT@[3; 8) "block" + PARAM_LIST@[8; 10) + L_PAREN@[8; 9) + R_PAREN@[9; 10) + WHITESPACE@[10; 11) + BLOCK@[11; 349) + L_CURLY@[11; 12) + WHITESPACE@[12; 17) + LET_STMT@[17; 129) + LET_KW@[17; 20) + WHITESPACE@[20; 21) + BIND_PAT@[21; 26) + NAME@[21; 26) + IDENT@[21; 26) "inner" + WHITESPACE@[26; 27) + EQ@[27; 28) + WHITESPACE@[28; 29) + BLOCK_EXPR@[29; 128) + BLOCK@[29; 128) + L_CURLY@[29; 30) + WHITESPACE@[30; 39) + err: `A block in this position cannot accept inner attributes` + ATTR@[39; 83) + POUND@[39; 40) + EXCL@[40; 41) + TOKEN_TREE@[41; 83) + L_BRACK@[41; 42) + IDENT@[42; 45) "doc" + TOKEN_TREE@[45; 82) + L_PAREN@[45; 46) + STRING@[46; 81) + R_PAREN@[81; 82) + R_BRACK@[82; 83) + WHITESPACE@[83; 92) + COMMENT@[92; 122) + WHITESPACE@[122; 127) + R_CURLY@[127; 128) + SEMI@[128; 129) + WHITESPACE@[129; 134) + EXPR_STMT@[134; 257) + IF_EXPR@[134; 257) + IF_KW@[134; 136) + WHITESPACE@[136; 137) + CONDITION@[137; 141) + LITERAL@[137; 141) + TRUE_KW@[137; 141) + WHITESPACE@[141; 142) + BLOCK@[142; 257) + L_CURLY@[142; 143) + WHITESPACE@[143; 152) + err: `A block in this position cannot accept inner attributes` + ATTR@[152; 171) + POUND@[152; 153) + EXCL@[153; 154) + TOKEN_TREE@[154; 171) + L_BRACK@[154; 155) + IDENT@[155; 158) "doc" + TOKEN_TREE@[158; 170) + L_PAREN@[158; 159) + STRING@[159; 169) + R_PAREN@[169; 170) + R_BRACK@[170; 171) + WHITESPACE@[171; 180) + err: `A block in this position cannot accept inner attributes` + ATTR@[180; 212) + POUND@[180; 181) + EXCL@[181; 182) + TOKEN_TREE@[182; 212) + L_BRACK@[182; 183) + IDENT@[183; 186) "doc" + TOKEN_TREE@[186; 211) + L_PAREN@[186; 187) + STRING@[187; 210) + R_PAREN@[210; 211) + R_BRACK@[211; 212) + WHITESPACE@[212; 221) + COMMENT@[221; 251) + WHITESPACE@[251; 256) + R_CURLY@[256; 257) + WHITESPACE@[257; 262) + WHILE_EXPR@[262; 347) + WHILE_KW@[262; 267) + WHITESPACE@[267; 268) + CONDITION@[268; 272) + LITERAL@[268; 272) + TRUE_KW@[268; 272) + WHITESPACE@[272; 273) + BLOCK@[273; 347) + L_CURLY@[273; 274) + WHITESPACE@[274; 283) + err: `A block in this position cannot accept inner attributes` + ATTR@[283; 302) + POUND@[283; 284) + EXCL@[284; 285) + TOKEN_TREE@[285; 302) + L_BRACK@[285; 286) + IDENT@[286; 289) "doc" + TOKEN_TREE@[289; 301) + L_PAREN@[289; 290) + STRING@[290; 300) + R_PAREN@[300; 301) + R_BRACK@[301; 302) + WHITESPACE@[302; 311) + COMMENT@[311; 341) + WHITESPACE@[341; 346) + R_CURLY@[346; 347) + WHITESPACE@[347; 348) + R_CURLY@[348; 349) + WHITESPACE@[349; 350) -- cgit v1.2.3