mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-28 04:44:57 +00:00
dyn type
This commit is contained in:
parent
5a56ac4b72
commit
d1eceefeb8
7 changed files with 111 additions and 1 deletions
|
@ -55,6 +55,7 @@ Grammar(
|
|||
"enum",
|
||||
"trait",
|
||||
"impl",
|
||||
"dyn",
|
||||
"true",
|
||||
"false",
|
||||
"as",
|
||||
|
@ -134,6 +135,7 @@ Grammar(
|
|||
"FN_POINTER_TYPE",
|
||||
"FOR_TYPE",
|
||||
"IMPL_TRAIT_TYPE",
|
||||
"DYN_TRAIT_TYPE",
|
||||
|
||||
"REF_PAT",
|
||||
"BIND_PAT",
|
||||
|
|
|
@ -11,9 +11,10 @@ pub(super) fn type_(p: &mut Parser) {
|
|||
FN_KW | UNSAFE_KW | EXTERN_KW => fn_pointer_type(p),
|
||||
FOR_KW => for_type(p),
|
||||
IMPL_KW => impl_trait_type(p),
|
||||
DYN_KW => dyn_trait_type(p),
|
||||
_ if paths::is_path_start(p) => path_type(p),
|
||||
_ => {
|
||||
p.error("expected type");
|
||||
p.err_and_bump("expected type");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -194,6 +195,16 @@ fn impl_trait_type(p: &mut Parser) {
|
|||
m.complete(p, IMPL_TRAIT_TYPE);
|
||||
}
|
||||
|
||||
// test dyn_trait_type
|
||||
// type A = dyn Iterator<Item=Foo<'a>> + 'a;
|
||||
fn dyn_trait_type(p: &mut Parser) {
|
||||
assert!(p.at(DYN_KW));
|
||||
let m = p.start();
|
||||
p.bump();
|
||||
type_params::bounds_without_colon(p);
|
||||
m.complete(p, DYN_TRAIT_TYPE);
|
||||
}
|
||||
|
||||
// test path_type
|
||||
// type A = Foo;
|
||||
// type B = ::Foo;
|
||||
|
|
|
@ -62,6 +62,7 @@ pub enum SyntaxKind {
|
|||
ENUM_KW,
|
||||
TRAIT_KW,
|
||||
IMPL_KW,
|
||||
DYN_KW,
|
||||
TRUE_KW,
|
||||
FALSE_KW,
|
||||
AS_KW,
|
||||
|
@ -133,6 +134,7 @@ pub enum SyntaxKind {
|
|||
FN_POINTER_TYPE,
|
||||
FOR_TYPE,
|
||||
IMPL_TRAIT_TYPE,
|
||||
DYN_TRAIT_TYPE,
|
||||
REF_PAT,
|
||||
BIND_PAT,
|
||||
PLACEHOLDER_PAT,
|
||||
|
@ -210,6 +212,7 @@ impl SyntaxKind {
|
|||
| ENUM_KW
|
||||
| TRAIT_KW
|
||||
| IMPL_KW
|
||||
| DYN_KW
|
||||
| TRUE_KW
|
||||
| FALSE_KW
|
||||
| AS_KW
|
||||
|
@ -297,6 +300,7 @@ impl SyntaxKind {
|
|||
ENUM_KW => &SyntaxInfo { name: "ENUM_KW" },
|
||||
TRAIT_KW => &SyntaxInfo { name: "TRAIT_KW" },
|
||||
IMPL_KW => &SyntaxInfo { name: "IMPL_KW" },
|
||||
DYN_KW => &SyntaxInfo { name: "DYN_KW" },
|
||||
TRUE_KW => &SyntaxInfo { name: "TRUE_KW" },
|
||||
FALSE_KW => &SyntaxInfo { name: "FALSE_KW" },
|
||||
AS_KW => &SyntaxInfo { name: "AS_KW" },
|
||||
|
@ -368,6 +372,7 @@ impl SyntaxKind {
|
|||
FN_POINTER_TYPE => &SyntaxInfo { name: "FN_POINTER_TYPE" },
|
||||
FOR_TYPE => &SyntaxInfo { name: "FOR_TYPE" },
|
||||
IMPL_TRAIT_TYPE => &SyntaxInfo { name: "IMPL_TRAIT_TYPE" },
|
||||
DYN_TRAIT_TYPE => &SyntaxInfo { name: "DYN_TRAIT_TYPE" },
|
||||
REF_PAT => &SyntaxInfo { name: "REF_PAT" },
|
||||
BIND_PAT => &SyntaxInfo { name: "BIND_PAT" },
|
||||
PLACEHOLDER_PAT => &SyntaxInfo { name: "PLACEHOLDER_PAT" },
|
||||
|
@ -445,6 +450,7 @@ impl SyntaxKind {
|
|||
"enum" => ENUM_KW,
|
||||
"trait" => TRAIT_KW,
|
||||
"impl" => IMPL_KW,
|
||||
"dyn" => DYN_KW,
|
||||
"true" => TRUE_KW,
|
||||
"false" => FALSE_KW,
|
||||
"as" => AS_KW,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue