Support raw_ref_op's raw reference operator

This commit is contained in:
robojumper 2020-05-28 21:42:22 +02:00
parent 190a0595a4
commit 367487fe88
12 changed files with 259 additions and 72 deletions

View file

@ -1,5 +1,5 @@
SOURCE_FILE@0..52
FN_DEF@0..51
SOURCE_FILE@0..200
FN_DEF@0..199
FN_KW@0..2 "fn"
WHITESPACE@2..3 " "
NAME@3..6
@ -8,47 +8,131 @@ SOURCE_FILE@0..52
L_PAREN@6..7 "("
R_PAREN@7..8 ")"
WHITESPACE@8..9 " "
BLOCK_EXPR@9..51
BLOCK_EXPR@9..199
L_CURLY@9..10 "{"
WHITESPACE@10..15 "\n "
LET_STMT@15..26
LET_KW@15..18 "let"
WHITESPACE@18..19 " "
PLACEHOLDER_PAT@19..20
UNDERSCORE@19..20 "_"
WHITESPACE@20..21 " "
EQ@21..22 "="
WHITESPACE@22..23 " "
REF_EXPR@23..25
AMP@23..24 "&"
LITERAL@24..25
INT_NUMBER@24..25 "1"
SEMICOLON@25..26 ";"
WHITESPACE@26..31 "\n "
LET_STMT@31..49
LET_KW@31..34 "let"
WHITESPACE@34..35 " "
PLACEHOLDER_PAT@35..36
UNDERSCORE@35..36 "_"
WHITESPACE@36..37 " "
EQ@37..38 "="
WHITESPACE@38..39 " "
REF_EXPR@39..48
AMP@39..40 "&"
MUT_KW@40..43 "mut"
WHITESPACE@43..44 " "
REF_EXPR@44..48
AMP@44..45 "&"
CALL_EXPR@45..48
PATH_EXPR@45..46
PATH@45..46
PATH_SEGMENT@45..46
NAME_REF@45..46
IDENT@45..46 "f"
ARG_LIST@46..48
L_PAREN@46..47 "("
R_PAREN@47..48 ")"
SEMICOLON@48..49 ";"
WHITESPACE@49..50 "\n"
R_CURLY@50..51 "}"
WHITESPACE@51..52 "\n"
COMMENT@15..36 "// reference operator"
WHITESPACE@36..41 "\n "
LET_STMT@41..52
LET_KW@41..44 "let"
WHITESPACE@44..45 " "
PLACEHOLDER_PAT@45..46
UNDERSCORE@45..46 "_"
WHITESPACE@46..47 " "
EQ@47..48 "="
WHITESPACE@48..49 " "
REF_EXPR@49..51
AMP@49..50 "&"
LITERAL@50..51
INT_NUMBER@50..51 "1"
SEMICOLON@51..52 ";"
WHITESPACE@52..57 "\n "
LET_STMT@57..75
LET_KW@57..60 "let"
WHITESPACE@60..61 " "
PLACEHOLDER_PAT@61..62
UNDERSCORE@61..62 "_"
WHITESPACE@62..63 " "
EQ@63..64 "="
WHITESPACE@64..65 " "
REF_EXPR@65..74
AMP@65..66 "&"
MUT_KW@66..69 "mut"
WHITESPACE@69..70 " "
REF_EXPR@70..74
AMP@70..71 "&"
CALL_EXPR@71..74
PATH_EXPR@71..72
PATH@71..72
PATH_SEGMENT@71..72
NAME_REF@71..72
IDENT@71..72 "f"
ARG_LIST@72..74
L_PAREN@72..73 "("
R_PAREN@73..74 ")"
SEMICOLON@74..75 ";"
WHITESPACE@75..80 "\n "
LET_STMT@80..93
LET_KW@80..83 "let"
WHITESPACE@83..84 " "
PLACEHOLDER_PAT@84..85
UNDERSCORE@84..85 "_"
WHITESPACE@85..86 " "
EQ@86..87 "="
WHITESPACE@87..88 " "
REF_EXPR@88..92
AMP@88..89 "&"
PATH_EXPR@89..92
PATH@89..92
PATH_SEGMENT@89..92
NAME_REF@89..92
IDENT@89..92 "raw"
SEMICOLON@92..93 ";"
WHITESPACE@93..98 "\n "
LET_STMT@98..113
LET_KW@98..101 "let"
WHITESPACE@101..102 " "
PLACEHOLDER_PAT@102..103
UNDERSCORE@102..103 "_"
WHITESPACE@103..104 " "
EQ@104..105 "="
WHITESPACE@105..106 " "
REF_EXPR@106..112
AMP@106..107 "&"
FIELD_EXPR@107..112
PATH_EXPR@107..110
PATH@107..110
PATH_SEGMENT@107..110
NAME_REF@107..110
IDENT@107..110 "raw"
DOT@110..111 "."
NAME_REF@111..112
INT_NUMBER@111..112 "0"
SEMICOLON@112..113 ";"
WHITESPACE@113..118 "\n "
COMMENT@118..143 "// raw reference oper ..."
WHITESPACE@143..148 "\n "
LET_STMT@148..169
LET_KW@148..151 "let"
WHITESPACE@151..152 " "
PLACEHOLDER_PAT@152..153
UNDERSCORE@152..153 "_"
WHITESPACE@153..154 " "
EQ@154..155 "="
WHITESPACE@155..156 " "
REF_EXPR@156..168
AMP@156..157 "&"
RAW_KW@157..160 "raw"
WHITESPACE@160..161 " "
MUT_KW@161..164 "mut"
WHITESPACE@164..165 " "
PATH_EXPR@165..168
PATH@165..168
PATH_SEGMENT@165..168
NAME_REF@165..168
IDENT@165..168 "foo"
SEMICOLON@168..169 ";"
WHITESPACE@169..174 "\n "
LET_STMT@174..197
LET_KW@174..177 "let"
WHITESPACE@177..178 " "
PLACEHOLDER_PAT@178..179
UNDERSCORE@178..179 "_"
WHITESPACE@179..180 " "
EQ@180..181 "="
WHITESPACE@181..182 " "
REF_EXPR@182..196
AMP@182..183 "&"
RAW_KW@183..186 "raw"
WHITESPACE@186..187 " "
CONST_KW@187..192 "const"
WHITESPACE@192..193 " "
PATH_EXPR@193..196
PATH@193..196
PATH_SEGMENT@193..196
NAME_REF@193..196
IDENT@193..196 "foo"
SEMICOLON@196..197 ";"
WHITESPACE@197..198 "\n"
R_CURLY@198..199 "}"
WHITESPACE@199..200 "\n"

View file

@ -1,4 +1,10 @@
fn foo() {
// reference operator
let _ = &1;
let _ = &mut &f();
let _ = &raw;
let _ = &raw.0;
// raw reference operator
let _ = &raw mut foo;
let _ = &raw const foo;
}