mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-27 04:19:13 +00:00
fix: Fix parsing of integer/keyword name refs in various places
This commit is contained in:
parent
f499faf72b
commit
df7ab62a06
33 changed files with 351 additions and 133 deletions
|
@ -210,10 +210,6 @@ mod ok {
|
|||
run_and_expect_no_errors("test_data/parser/inline/ok/extern_crate_rename.rs");
|
||||
}
|
||||
#[test]
|
||||
fn extern_crate_self() {
|
||||
run_and_expect_no_errors("test_data/parser/inline/ok/extern_crate_self.rs");
|
||||
}
|
||||
#[test]
|
||||
fn field_expr() { run_and_expect_no_errors("test_data/parser/inline/ok/field_expr.rs"); }
|
||||
#[test]
|
||||
fn fn_() { run_and_expect_no_errors("test_data/parser/inline/ok/fn_.rs"); }
|
||||
|
@ -774,6 +770,10 @@ mod err {
|
|||
run_and_expect_errors("test_data/parser/inline/err/pointer_type_no_mutability.rs");
|
||||
}
|
||||
#[test]
|
||||
fn precise_capturing_invalid() {
|
||||
run_and_expect_errors("test_data/parser/inline/err/precise_capturing_invalid.rs");
|
||||
}
|
||||
#[test]
|
||||
fn pub_expr() { run_and_expect_errors("test_data/parser/inline/err/pub_expr.rs"); }
|
||||
#[test]
|
||||
fn record_literal_before_ellipsis_recovery() {
|
||||
|
|
|
@ -13,4 +13,4 @@ SOURCE_FILE
|
|||
ERROR
|
||||
INT_NUMBER "92"
|
||||
SEMICOLON ";"
|
||||
error 9: expected identifier
|
||||
error 9: expected identifier, `self`, `super`, `crate`, or `Self`
|
||||
|
|
|
@ -115,10 +115,10 @@ SOURCE_FILE
|
|||
WHITESPACE "\n"
|
||||
R_CURLY "}"
|
||||
WHITESPACE "\n"
|
||||
error 30: expected identifier
|
||||
error 30: expected identifier, `self`, `super`, `crate`, or `Self`
|
||||
error 31: expected COMMA
|
||||
error 37: expected expression
|
||||
error 75: expected identifier
|
||||
error 75: expected identifier, `self`, `super`, `crate`, or `Self`
|
||||
error 76: expected SEMICOLON
|
||||
error 82: expected expression
|
||||
error 83: expected SEMICOLON
|
||||
|
|
|
@ -98,7 +98,7 @@ SOURCE_FILE
|
|||
WHITESPACE "\n"
|
||||
R_CURLY "}"
|
||||
WHITESPACE "\n"
|
||||
error 25: expected identifier
|
||||
error 25: expected identifier, `self`, `super`, `crate`, or `Self`
|
||||
error 39: expected COMMA
|
||||
error 39: expected expression
|
||||
error 55: expected expression
|
||||
|
|
|
@ -11,4 +11,4 @@ SOURCE_FILE
|
|||
IDENT "S"
|
||||
SEMICOLON ";"
|
||||
WHITESPACE "\n"
|
||||
error 4: expected identifier
|
||||
error 4: expected identifier, `self`, `super`, `crate`, or `Self`
|
||||
|
|
|
@ -11,4 +11,4 @@ SOURCE_FILE
|
|||
COLON2 "::"
|
||||
SEMICOLON ";"
|
||||
WHITESPACE "\n"
|
||||
error 11: expected identifier
|
||||
error 11: expected identifier, `self`, `super`, `crate`, or `Self`
|
||||
|
|
|
@ -66,18 +66,18 @@ SOURCE_FILE
|
|||
EQ "="
|
||||
R_BRACK "]"
|
||||
WHITESPACE "\n"
|
||||
error 3: expected identifier
|
||||
error 3: expected identifier, `self`, `super`, `crate`, or `Self`
|
||||
error 11: expected expression
|
||||
error 11: expected expression
|
||||
error 20: expected identifier
|
||||
error 28: expected identifier
|
||||
error 20: expected identifier, `self`, `super`, `crate`, or `Self`
|
||||
error 28: expected identifier, `self`, `super`, `crate`, or `Self`
|
||||
error 30: expected expression
|
||||
error 30: expected expression
|
||||
error 41: expected L_PAREN
|
||||
error 41: expected identifier
|
||||
error 41: expected identifier, `self`, `super`, `crate`, or `Self`
|
||||
error 41: expected R_PAREN
|
||||
error 52: expected L_PAREN
|
||||
error 52: expected identifier
|
||||
error 52: expected identifier, `self`, `super`, `crate`, or `Self`
|
||||
error 54: expected expression
|
||||
error 54: expected expression
|
||||
error 54: expected R_PAREN
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
SOURCE_FILE
|
||||
TYPE_ALIAS
|
||||
TYPE_KW "type"
|
||||
WHITESPACE " "
|
||||
NAME
|
||||
IDENT "T"
|
||||
WHITESPACE " "
|
||||
EQ "="
|
||||
WHITESPACE " "
|
||||
IMPL_TRAIT_TYPE
|
||||
IMPL_KW "impl"
|
||||
WHITESPACE " "
|
||||
TYPE_BOUND_LIST
|
||||
TYPE_BOUND
|
||||
USE_KW "use"
|
||||
USE_BOUND_GENERIC_ARGS
|
||||
L_ANGLE "<"
|
||||
ERROR
|
||||
SELF_KW "self"
|
||||
COMMA ","
|
||||
WHITESPACE " "
|
||||
ERROR
|
||||
INT_NUMBER "1"
|
||||
R_ANGLE ">"
|
||||
SEMICOLON ";"
|
||||
WHITESPACE "\n"
|
||||
error 18: expected identifier or `Self`
|
||||
error 24: expected identifier or `Self`
|
|
@ -0,0 +1 @@
|
|||
type T = impl use<self, 1>;
|
|
@ -12,6 +12,38 @@ SOURCE_FILE
|
|||
STMT_LIST
|
||||
L_CURLY "{"
|
||||
WHITESPACE "\n "
|
||||
EXPR_STMT
|
||||
RECORD_EXPR
|
||||
PATH
|
||||
PATH_SEGMENT
|
||||
NAME_REF
|
||||
IDENT "S"
|
||||
WHITESPACE " "
|
||||
RECORD_EXPR_FIELD_LIST
|
||||
L_CURLY "{"
|
||||
WHITESPACE " "
|
||||
RECORD_EXPR_FIELD
|
||||
NAME_REF
|
||||
IDENT "field"
|
||||
WHITESPACE " "
|
||||
DOT2 ".."
|
||||
CALL_EXPR
|
||||
PATH_EXPR
|
||||
PATH
|
||||
PATH
|
||||
PATH_SEGMENT
|
||||
NAME_REF
|
||||
IDENT "S"
|
||||
COLON2 "::"
|
||||
PATH_SEGMENT
|
||||
NAME_REF
|
||||
IDENT "default"
|
||||
ARG_LIST
|
||||
L_PAREN "("
|
||||
R_PAREN ")"
|
||||
WHITESPACE " "
|
||||
R_CURLY "}"
|
||||
WHITESPACE "\n "
|
||||
RECORD_EXPR
|
||||
PATH
|
||||
PATH_SEGMENT
|
||||
|
@ -23,7 +55,7 @@ SOURCE_FILE
|
|||
WHITESPACE " "
|
||||
RECORD_EXPR_FIELD
|
||||
NAME_REF
|
||||
IDENT "field"
|
||||
INT_NUMBER "0"
|
||||
WHITESPACE " "
|
||||
DOT2 ".."
|
||||
CALL_EXPR
|
||||
|
@ -47,3 +79,6 @@ SOURCE_FILE
|
|||
WHITESPACE "\n"
|
||||
error 25: expected `:`
|
||||
error 25: expected COMMA
|
||||
error 42: expected SEMICOLON
|
||||
error 52: expected `:`
|
||||
error 52: expected COMMA
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
fn main() {
|
||||
S { field ..S::default() }
|
||||
S { 0 ..S::default() }
|
||||
}
|
||||
|
|
|
@ -12,6 +12,31 @@ SOURCE_FILE
|
|||
STMT_LIST
|
||||
L_CURLY "{"
|
||||
WHITESPACE "\n "
|
||||
EXPR_STMT
|
||||
RECORD_EXPR
|
||||
PATH
|
||||
PATH_SEGMENT
|
||||
NAME_REF
|
||||
IDENT "S"
|
||||
WHITESPACE " "
|
||||
RECORD_EXPR_FIELD_LIST
|
||||
L_CURLY "{"
|
||||
WHITESPACE " "
|
||||
RECORD_EXPR_FIELD
|
||||
NAME_REF
|
||||
IDENT "field"
|
||||
WHITESPACE " "
|
||||
ERROR
|
||||
EQ "="
|
||||
WHITESPACE " "
|
||||
PATH_EXPR
|
||||
PATH
|
||||
PATH_SEGMENT
|
||||
NAME_REF
|
||||
IDENT "foo"
|
||||
WHITESPACE " "
|
||||
R_CURLY "}"
|
||||
WHITESPACE "\n "
|
||||
RECORD_EXPR
|
||||
PATH
|
||||
PATH_SEGMENT
|
||||
|
@ -23,7 +48,7 @@ SOURCE_FILE
|
|||
WHITESPACE " "
|
||||
RECORD_EXPR_FIELD
|
||||
NAME_REF
|
||||
IDENT "field"
|
||||
INT_NUMBER "0"
|
||||
WHITESPACE " "
|
||||
ERROR
|
||||
EQ "="
|
||||
|
@ -39,3 +64,5 @@ SOURCE_FILE
|
|||
R_CURLY "}"
|
||||
WHITESPACE "\n"
|
||||
error 26: expected `:`
|
||||
error 33: expected SEMICOLON
|
||||
error 44: expected `:`
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
fn main() {
|
||||
S { field = foo }
|
||||
S { 0 = foo }
|
||||
}
|
||||
|
|
|
@ -12,32 +12,70 @@ SOURCE_FILE
|
|||
STMT_LIST
|
||||
L_CURLY "{"
|
||||
WHITESPACE "\n "
|
||||
RECORD_EXPR
|
||||
PATH
|
||||
PATH_SEGMENT
|
||||
NAME_REF
|
||||
IDENT "S"
|
||||
WHITESPACE " "
|
||||
RECORD_EXPR_FIELD_LIST
|
||||
L_CURLY "{"
|
||||
EXPR_STMT
|
||||
RECORD_EXPR
|
||||
PATH
|
||||
PATH_SEGMENT
|
||||
NAME_REF
|
||||
IDENT "S"
|
||||
WHITESPACE " "
|
||||
CALL_EXPR
|
||||
PATH_EXPR
|
||||
PATH
|
||||
RECORD_EXPR_FIELD_LIST
|
||||
L_CURLY "{"
|
||||
WHITESPACE " "
|
||||
CALL_EXPR
|
||||
PATH_EXPR
|
||||
PATH
|
||||
PATH
|
||||
PATH_SEGMENT
|
||||
NAME_REF
|
||||
IDENT "S"
|
||||
COLON2 "::"
|
||||
PATH_SEGMENT
|
||||
NAME_REF
|
||||
IDENT "S"
|
||||
COLON2 "::"
|
||||
PATH_SEGMENT
|
||||
NAME_REF
|
||||
IDENT "default"
|
||||
ARG_LIST
|
||||
L_PAREN "("
|
||||
R_PAREN ")"
|
||||
IDENT "default"
|
||||
ARG_LIST
|
||||
L_PAREN "("
|
||||
R_PAREN ")"
|
||||
WHITESPACE " "
|
||||
R_CURLY "}"
|
||||
SEMICOLON ";"
|
||||
WHITESPACE "\n "
|
||||
EXPR_STMT
|
||||
RECORD_EXPR
|
||||
PATH
|
||||
PATH_SEGMENT
|
||||
NAME_REF
|
||||
IDENT "S"
|
||||
WHITESPACE " "
|
||||
R_CURLY "}"
|
||||
RECORD_EXPR_FIELD_LIST
|
||||
L_CURLY "{"
|
||||
WHITESPACE " "
|
||||
LITERAL
|
||||
INT_NUMBER "0"
|
||||
ERROR
|
||||
COLON ":"
|
||||
ERROR
|
||||
COLON ":"
|
||||
RECORD_EXPR_FIELD
|
||||
CALL_EXPR
|
||||
PATH_EXPR
|
||||
PATH
|
||||
PATH_SEGMENT
|
||||
NAME_REF
|
||||
IDENT "default"
|
||||
ARG_LIST
|
||||
L_PAREN "("
|
||||
R_PAREN ")"
|
||||
WHITESPACE " "
|
||||
R_CURLY "}"
|
||||
SEMICOLON ";"
|
||||
WHITESPACE "\n"
|
||||
R_CURLY "}"
|
||||
WHITESPACE "\n"
|
||||
error 19: expected DOT2
|
||||
error 43: expected DOT2
|
||||
error 45: expected COMMA
|
||||
error 45: expected identifier
|
||||
error 46: expected COMMA
|
||||
error 46: expected identifier
|
||||
error 47: expected COMMA
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
fn main() {
|
||||
S { S::default() }
|
||||
S { S::default() };
|
||||
S { 0::default() };
|
||||
}
|
||||
|
|
|
@ -8,3 +8,12 @@ SOURCE_FILE
|
|||
IDENT "foo"
|
||||
SEMICOLON ";"
|
||||
WHITESPACE "\n"
|
||||
EXTERN_CRATE
|
||||
EXTERN_KW "extern"
|
||||
WHITESPACE " "
|
||||
CRATE_KW "crate"
|
||||
WHITESPACE " "
|
||||
NAME_REF
|
||||
SELF_KW "self"
|
||||
SEMICOLON ";"
|
||||
WHITESPACE "\n"
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
extern crate foo;
|
||||
extern crate self;
|
||||
|
|
|
@ -14,3 +14,18 @@ SOURCE_FILE
|
|||
IDENT "bar"
|
||||
SEMICOLON ";"
|
||||
WHITESPACE "\n"
|
||||
EXTERN_CRATE
|
||||
EXTERN_KW "extern"
|
||||
WHITESPACE " "
|
||||
CRATE_KW "crate"
|
||||
WHITESPACE " "
|
||||
NAME_REF
|
||||
SELF_KW "self"
|
||||
WHITESPACE " "
|
||||
RENAME
|
||||
AS_KW "as"
|
||||
WHITESPACE " "
|
||||
NAME
|
||||
IDENT "bar"
|
||||
SEMICOLON ";"
|
||||
WHITESPACE "\n"
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
extern crate foo as bar;
|
||||
extern crate self as bar;
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
SOURCE_FILE
|
||||
EXTERN_CRATE
|
||||
EXTERN_KW "extern"
|
||||
WHITESPACE " "
|
||||
CRATE_KW "crate"
|
||||
WHITESPACE " "
|
||||
NAME_REF
|
||||
SELF_KW "self"
|
||||
SEMICOLON ";"
|
||||
WHITESPACE "\n"
|
|
@ -1 +0,0 @@
|
|||
extern crate self;
|
|
@ -12,6 +12,30 @@ SOURCE_FILE
|
|||
STMT_LIST
|
||||
L_CURLY "{"
|
||||
WHITESPACE "\n "
|
||||
EXPR_STMT
|
||||
FIELD_EXPR
|
||||
PATH_EXPR
|
||||
PATH
|
||||
PATH_SEGMENT
|
||||
NAME_REF
|
||||
IDENT "x"
|
||||
DOT "."
|
||||
NAME_REF
|
||||
SELF_KW "self"
|
||||
SEMICOLON ";"
|
||||
WHITESPACE "\n "
|
||||
EXPR_STMT
|
||||
FIELD_EXPR
|
||||
PATH_EXPR
|
||||
PATH
|
||||
PATH_SEGMENT
|
||||
NAME_REF
|
||||
IDENT "x"
|
||||
DOT "."
|
||||
NAME_REF
|
||||
SELF_TYPE_KW "Self"
|
||||
SEMICOLON ";"
|
||||
WHITESPACE "\n "
|
||||
EXPR_STMT
|
||||
FIELD_EXPR
|
||||
PATH_EXPR
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
fn foo() {
|
||||
x.self;
|
||||
x.Self;
|
||||
x.foo;
|
||||
x.0.bar;
|
||||
x.0.1;
|
||||
|
|
|
@ -101,6 +101,20 @@ SOURCE_FILE
|
|||
L_PAREN "("
|
||||
R_PAREN ")"
|
||||
SEMICOLON ";"
|
||||
WHITESPACE "\n "
|
||||
CALL_EXPR
|
||||
FIELD_EXPR
|
||||
PATH_EXPR
|
||||
PATH
|
||||
PATH_SEGMENT
|
||||
NAME_REF
|
||||
IDENT "x"
|
||||
DOT "."
|
||||
NAME_REF
|
||||
INT_NUMBER "0"
|
||||
ARG_LIST
|
||||
L_PAREN "("
|
||||
R_PAREN ")"
|
||||
WHITESPACE "\n"
|
||||
R_CURLY "}"
|
||||
WHITESPACE "\n"
|
||||
|
|
|
@ -3,4 +3,5 @@ fn foo() {
|
|||
y.bar::<T>(1, 2,);
|
||||
x.0.0.call();
|
||||
x.0. call();
|
||||
x.0()
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue