rename type to type_alias in the AST as well

This commit is contained in:
Aleksey Kladov 2019-02-25 13:38:52 +03:00
parent 7ffff9c74c
commit 78f10fcdc4
45 changed files with 293 additions and 108 deletions

View file

@ -619,7 +619,10 @@ pub struct TypeAlias {
} }
impl TypeAlias { impl TypeAlias {
pub fn source(&self, db: &impl PersistentHirDatabase) -> (HirFileId, TreeArc<ast::TypeDef>) { pub fn source(
&self,
db: &impl PersistentHirDatabase,
) -> (HirFileId, TreeArc<ast::TypeAliasDef>) {
self.id.source(db) self.id.source(db)
} }

View file

@ -22,7 +22,7 @@ pub struct HirInterner {
consts: LocationIntener<ItemLoc<ast::ConstDef>, ConstId>, consts: LocationIntener<ItemLoc<ast::ConstDef>, ConstId>,
statics: LocationIntener<ItemLoc<ast::StaticDef>, StaticId>, statics: LocationIntener<ItemLoc<ast::StaticDef>, StaticId>,
traits: LocationIntener<ItemLoc<ast::TraitDef>, TraitId>, traits: LocationIntener<ItemLoc<ast::TraitDef>, TraitId>,
types: LocationIntener<ItemLoc<ast::TypeDef>, TypeId>, types: LocationIntener<ItemLoc<ast::TypeAliasDef>, TypeId>,
} }
impl HirInterner { impl HirInterner {
@ -278,8 +278,8 @@ impl AstItemDef<ast::TraitDef> for TraitId {
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct TypeId(RawId); pub struct TypeId(RawId);
impl_arena_id!(TypeId); impl_arena_id!(TypeId);
impl AstItemDef<ast::TypeDef> for TypeId { impl AstItemDef<ast::TypeAliasDef> for TypeId {
fn interner(interner: &HirInterner) -> &LocationIntener<ItemLoc<ast::TypeDef>, Self> { fn interner(interner: &HirInterner) -> &LocationIntener<ItemLoc<ast::TypeAliasDef>, Self> {
&interner.types &interner.types
} }
} }

View file

@ -137,7 +137,7 @@ impl ImplData {
.map(|item_node| match item_node.kind() { .map(|item_node| match item_node.kind() {
ast::ImplItemKind::FnDef(it) => Function { id: ctx.to_def(it) }.into(), ast::ImplItemKind::FnDef(it) => Function { id: ctx.to_def(it) }.into(),
ast::ImplItemKind::ConstDef(it) => Const { id: ctx.to_def(it) }.into(), ast::ImplItemKind::ConstDef(it) => Const { id: ctx.to_def(it) }.into(),
ast::ImplItemKind::TypeDef(it) => TypeAlias { id: ctx.to_def(it) }.into(), ast::ImplItemKind::TypeAliasDef(it) => TypeAlias { id: ctx.to_def(it) }.into(),
}) })
.collect() .collect()
} else { } else {

View file

@ -167,7 +167,7 @@ impl LoweredModule {
self.declarations.insert(name.as_name(), PerNs::types(t.into())); self.declarations.insert(name.as_name(), PerNs::types(t.into()));
} }
} }
ast::ModuleItemKind::TypeDef(it) => { ast::ModuleItemKind::TypeAliasDef(it) => {
if let Some(name) = it.name() { if let Some(name) = it.name() {
let t = TypeAlias { id: ctx.to_def(it) }; let t = TypeAlias { id: ctx.to_def(it) };
self.declarations.insert(name.as_name(), PerNs::types(t.into())); self.declarations.insert(name.as_name(), PerNs::types(t.into()));

View file

@ -102,7 +102,7 @@ pub fn const_label(node: &ast::ConstDef) -> String {
label.trim().to_owned() label.trim().to_owned()
} }
pub fn type_label(node: &ast::TypeDef) -> String { pub fn type_label(node: &ast::TypeAliasDef) -> String {
let label: String = node let label: String = node
.syntax() .syntax()
.children() .children()

View file

@ -141,7 +141,7 @@ fn named_target(file_id: FileId, node: &SyntaxNode) -> Option<NavigationTarget>
.visit(|node: &ast::EnumDef| NavigationTarget::from_named(file_id, node)) .visit(|node: &ast::EnumDef| NavigationTarget::from_named(file_id, node))
.visit(|node: &ast::EnumVariant| NavigationTarget::from_named(file_id, node)) .visit(|node: &ast::EnumVariant| NavigationTarget::from_named(file_id, node))
.visit(|node: &ast::FnDef| NavigationTarget::from_named(file_id, node)) .visit(|node: &ast::FnDef| NavigationTarget::from_named(file_id, node))
.visit(|node: &ast::TypeDef| NavigationTarget::from_named(file_id, node)) .visit(|node: &ast::TypeAliasDef| NavigationTarget::from_named(file_id, node))
.visit(|node: &ast::ConstDef| NavigationTarget::from_named(file_id, node)) .visit(|node: &ast::ConstDef| NavigationTarget::from_named(file_id, node))
.visit(|node: &ast::StaticDef| NavigationTarget::from_named(file_id, node)) .visit(|node: &ast::StaticDef| NavigationTarget::from_named(file_id, node))
.visit(|node: &ast::TraitDef| NavigationTarget::from_named(file_id, node)) .visit(|node: &ast::TraitDef| NavigationTarget::from_named(file_id, node))
@ -327,7 +327,7 @@ mod tests {
//- /lib.rs //- /lib.rs
type Thing<|> = Option<()>; type Thing<|> = Option<()>;
"#, "#,
"Thing TYPE_DEF FileId(1) [0; 24) [5; 10)", "Thing TYPE_ALIAS_DEF FileId(1) [0; 24) [5; 10)",
); );
check_goto( check_goto(

View file

@ -105,7 +105,7 @@ impl NavigationTarget {
.visit(doc_comments::<ast::EnumDef>) .visit(doc_comments::<ast::EnumDef>)
.visit(doc_comments::<ast::TraitDef>) .visit(doc_comments::<ast::TraitDef>)
.visit(doc_comments::<ast::Module>) .visit(doc_comments::<ast::Module>)
.visit(doc_comments::<ast::TypeDef>) .visit(doc_comments::<ast::TypeAliasDef>)
.visit(doc_comments::<ast::ConstDef>) .visit(doc_comments::<ast::ConstDef>)
.visit(doc_comments::<ast::StaticDef>) .visit(doc_comments::<ast::StaticDef>)
.accept(&node)? .accept(&node)?
@ -135,7 +135,7 @@ impl NavigationTarget {
.visit(|node: &ast::EnumDef| visit_node(node, "enum ")) .visit(|node: &ast::EnumDef| visit_node(node, "enum "))
.visit(|node: &ast::TraitDef| visit_node(node, "trait ")) .visit(|node: &ast::TraitDef| visit_node(node, "trait "))
.visit(|node: &ast::Module| visit_node(node, "mod ")) .visit(|node: &ast::Module| visit_node(node, "mod "))
.visit(|node: &ast::TypeDef| visit_node(node, "type ")) .visit(|node: &ast::TypeAliasDef| visit_node(node, "type "))
.visit(|node: &ast::ConstDef| visit_node(node, "const ")) .visit(|node: &ast::ConstDef| visit_node(node, "const "))
.visit(|node: &ast::StaticDef| visit_node(node, "static ")) .visit(|node: &ast::StaticDef| visit_node(node, "static "))
.accept(&node)? .accept(&node)?

View file

@ -196,7 +196,7 @@ impl Query {
fn is_type(kind: SyntaxKind) -> bool { fn is_type(kind: SyntaxKind) -> bool {
match kind { match kind {
STRUCT_DEF | ENUM_DEF | TRAIT_DEF | TYPE_DEF => true, STRUCT_DEF | ENUM_DEF | TRAIT_DEF | TYPE_ALIAS_DEF => true,
_ => false, _ => false,
} }
} }
@ -253,7 +253,7 @@ fn to_symbol(node: &SyntaxNode) -> Option<(SmolStr, SyntaxNodePtr, TextRange)> {
.visit(decl::<ast::EnumDef>) .visit(decl::<ast::EnumDef>)
.visit(decl::<ast::TraitDef>) .visit(decl::<ast::TraitDef>)
.visit(decl::<ast::Module>) .visit(decl::<ast::Module>)
.visit(decl::<ast::TypeDef>) .visit(decl::<ast::TypeAliasDef>)
.visit(decl::<ast::ConstDef>) .visit(decl::<ast::ConstDef>)
.visit(decl::<ast::StaticDef>) .visit(decl::<ast::StaticDef>)
.accept(node)? .accept(node)?

View file

@ -111,7 +111,7 @@ expression: structure
label: "T", label: "T",
navigation_range: [186; 187), navigation_range: [186; 187),
node_range: [181; 193), node_range: [181; 193),
kind: TYPE_DEF, kind: TYPE_ALIAS_DEF,
detail: Some( detail: Some(
"()" "()"
), ),

View file

@ -0,0 +1,182 @@
---
created: "2019-02-25T10:38:16.909647631Z"
creator: insta@0.6.3
source: crates/ra_ide_api_light/src/structure.rs
expression: structure
---
[
StructureNode {
parent: None,
label: "Foo",
navigation_range: [8; 11),
node_range: [1; 26),
kind: STRUCT_DEF,
detail: None,
deprecated: false
},
StructureNode {
parent: Some(
0
),
label: "x",
navigation_range: [18; 19),
node_range: [18; 24),
kind: NAMED_FIELD_DEF,
detail: Some(
"i32"
),
deprecated: false
},
StructureNode {
parent: None,
label: "m",
navigation_range: [32; 33),
node_range: [28; 158),
kind: MODULE,
detail: None,
deprecated: false
},
StructureNode {
parent: Some(
2
),
label: "bar1",
navigation_range: [43; 47),
node_range: [40; 52),
kind: FN_DEF,
detail: Some(
"fn()"
),
deprecated: false
},
StructureNode {
parent: Some(
2
),
label: "bar2",
navigation_range: [60; 64),
node_range: [57; 81),
kind: FN_DEF,
detail: Some(
"fn<T>(t: T) -> T"
),
deprecated: false
},
StructureNode {
parent: Some(
2
),
label: "bar3",
navigation_range: [89; 93),
node_range: [86; 156),
kind: FN_DEF,
detail: Some(
"fn<A, B>(a: A, b: B) -> Vec< u32 >"
),
deprecated: false
},
StructureNode {
parent: None,
label: "E",
navigation_range: [165; 166),
node_range: [160; 180),
kind: ENUM_DEF,
detail: None,
deprecated: false
},
StructureNode {
parent: Some(
6
),
label: "X",
navigation_range: [169; 170),
node_range: [169; 170),
kind: ENUM_VARIANT,
detail: None,
deprecated: false
},
StructureNode {
parent: Some(
6
),
label: "Y",
navigation_range: [172; 173),
node_range: [172; 178),
kind: ENUM_VARIANT,
detail: None,
deprecated: false
},
StructureNode {
parent: None,
label: "T",
navigation_range: [186; 187),
node_range: [181; 193),
kind: TYPE_ALIAS_DEF,
detail: Some(
"()"
),
deprecated: false
},
StructureNode {
parent: None,
label: "S",
navigation_range: [201; 202),
node_range: [194; 213),
kind: STATIC_DEF,
detail: Some(
"i32"
),
deprecated: false
},
StructureNode {
parent: None,
label: "C",
navigation_range: [220; 221),
node_range: [214; 232),
kind: CONST_DEF,
detail: Some(
"i32"
),
deprecated: false
},
StructureNode {
parent: None,
label: "impl E",
navigation_range: [239; 240),
node_range: [234; 243),
kind: IMPL_BLOCK,
detail: None,
deprecated: false
},
StructureNode {
parent: None,
label: "impl fmt::Debug for E",
navigation_range: [265; 266),
node_range: [245; 269),
kind: IMPL_BLOCK,
detail: None,
deprecated: false
},
StructureNode {
parent: None,
label: "obsolete",
navigation_range: [288; 296),
node_range: [271; 301),
kind: FN_DEF,
detail: Some(
"fn()"
),
deprecated: true
},
StructureNode {
parent: None,
label: "very_obsolete",
navigation_range: [341; 354),
node_range: [303; 359),
kind: FN_DEF,
detail: Some(
"fn()"
),
deprecated: true
}
]

View file

@ -112,7 +112,7 @@ fn structure_node(node: &SyntaxNode) -> Option<StructureNode> {
.visit(decl::<ast::EnumVariant>) .visit(decl::<ast::EnumVariant>)
.visit(decl::<ast::TraitDef>) .visit(decl::<ast::TraitDef>)
.visit(decl::<ast::Module>) .visit(decl::<ast::Module>)
.visit(|td: &ast::TypeDef| decl_with_type_ref(td, td.type_ref())) .visit(|td: &ast::TypeAliasDef| decl_with_type_ref(td, td.type_ref()))
.visit(|cd: &ast::ConstDef| decl_with_type_ref(cd, cd.type_ref())) .visit(|cd: &ast::ConstDef| decl_with_type_ref(cd, cd.type_ref()))
.visit(|sd: &ast::StaticDef| decl_with_type_ref(sd, sd.type_ref())) .visit(|sd: &ast::StaticDef| decl_with_type_ref(sd, sd.type_ref()))
.visit(|im: &ast::ImplBlock| { .visit(|im: &ast::ImplBlock| {

View file

@ -41,7 +41,7 @@ impl Conv for SyntaxKind {
SyntaxKind::ENUM_DEF => SymbolKind::Enum, SyntaxKind::ENUM_DEF => SymbolKind::Enum,
SyntaxKind::TRAIT_DEF => SymbolKind::Interface, SyntaxKind::TRAIT_DEF => SymbolKind::Interface,
SyntaxKind::MODULE => SymbolKind::Module, SyntaxKind::MODULE => SymbolKind::Module,
SyntaxKind::TYPE_DEF => SymbolKind::TypeParameter, SyntaxKind::TYPE_ALIAS_DEF => SymbolKind::TypeParameter,
SyntaxKind::STATIC_DEF => SymbolKind::Constant, SyntaxKind::STATIC_DEF => SymbolKind::Constant,
SyntaxKind::CONST_DEF => SymbolKind::Constant, SyntaxKind::CONST_DEF => SymbolKind::Constant,
SyntaxKind::IMPL_BLOCK => SymbolKind::Object, SyntaxKind::IMPL_BLOCK => SymbolKind::Object,

View file

@ -173,7 +173,7 @@ fn items_without_modifiers(p: &mut Parser) -> Option<SyntaxKind> {
} }
TYPE_KW => { TYPE_KW => {
type_def(p); type_def(p);
TYPE_DEF TYPE_ALIAS_DEF
} }
MOD_KW => { MOD_KW => {
mod_item(p); mod_item(p);

View file

@ -130,7 +130,7 @@ pub enum SyntaxKind {
CONST_DEF, CONST_DEF,
TRAIT_DEF, TRAIT_DEF,
IMPL_BLOCK, IMPL_BLOCK,
TYPE_DEF, TYPE_ALIAS_DEF,
MACRO_CALL, MACRO_CALL,
TOKEN_TREE, TOKEN_TREE,
PAREN_TYPE, PAREN_TYPE,
@ -467,7 +467,7 @@ impl SyntaxKind {
CONST_DEF => &SyntaxInfo { name: "CONST_DEF" }, CONST_DEF => &SyntaxInfo { name: "CONST_DEF" },
TRAIT_DEF => &SyntaxInfo { name: "TRAIT_DEF" }, TRAIT_DEF => &SyntaxInfo { name: "TRAIT_DEF" },
IMPL_BLOCK => &SyntaxInfo { name: "IMPL_BLOCK" }, IMPL_BLOCK => &SyntaxInfo { name: "IMPL_BLOCK" },
TYPE_DEF => &SyntaxInfo { name: "TYPE_DEF" }, TYPE_ALIAS_DEF => &SyntaxInfo { name: "TYPE_ALIAS_DEF" },
MACRO_CALL => &SyntaxInfo { name: "MACRO_CALL" }, MACRO_CALL => &SyntaxInfo { name: "MACRO_CALL" },
TOKEN_TREE => &SyntaxInfo { name: "TOKEN_TREE" }, TOKEN_TREE => &SyntaxInfo { name: "TOKEN_TREE" },
PAREN_TYPE => &SyntaxInfo { name: "PAREN_TYPE" }, PAREN_TYPE => &SyntaxInfo { name: "PAREN_TYPE" },

View file

@ -1508,7 +1508,7 @@ unsafe impl TransparentNewType for ImplItem {
#[derive(Debug, Clone, Copy, PartialEq, Eq)] #[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ImplItemKind<'a> { pub enum ImplItemKind<'a> {
FnDef(&'a FnDef), FnDef(&'a FnDef),
TypeDef(&'a TypeDef), TypeAliasDef(&'a TypeAliasDef),
ConstDef(&'a ConstDef), ConstDef(&'a ConstDef),
} }
impl<'a> From<&'a FnDef> for &'a ImplItem { impl<'a> From<&'a FnDef> for &'a ImplItem {
@ -1516,8 +1516,8 @@ impl<'a> From<&'a FnDef> for &'a ImplItem {
ImplItem::cast(&n.syntax).unwrap() ImplItem::cast(&n.syntax).unwrap()
} }
} }
impl<'a> From<&'a TypeDef> for &'a ImplItem { impl<'a> From<&'a TypeAliasDef> for &'a ImplItem {
fn from(n: &'a TypeDef) -> &'a ImplItem { fn from(n: &'a TypeAliasDef) -> &'a ImplItem {
ImplItem::cast(&n.syntax).unwrap() ImplItem::cast(&n.syntax).unwrap()
} }
} }
@ -1532,7 +1532,7 @@ impl AstNode for ImplItem {
fn cast(syntax: &SyntaxNode) -> Option<&Self> { fn cast(syntax: &SyntaxNode) -> Option<&Self> {
match syntax.kind() { match syntax.kind() {
| FN_DEF | FN_DEF
| TYPE_DEF | TYPE_ALIAS_DEF
| CONST_DEF => Some(ImplItem::from_repr(syntax.into_repr())), | CONST_DEF => Some(ImplItem::from_repr(syntax.into_repr())),
_ => None, _ => None,
} }
@ -1549,7 +1549,7 @@ impl ImplItem {
pub fn kind(&self) -> ImplItemKind { pub fn kind(&self) -> ImplItemKind {
match self.syntax.kind() { match self.syntax.kind() {
FN_DEF => ImplItemKind::FnDef(FnDef::cast(&self.syntax).unwrap()), FN_DEF => ImplItemKind::FnDef(FnDef::cast(&self.syntax).unwrap()),
TYPE_DEF => ImplItemKind::TypeDef(TypeDef::cast(&self.syntax).unwrap()), TYPE_ALIAS_DEF => ImplItemKind::TypeAliasDef(TypeAliasDef::cast(&self.syntax).unwrap()),
CONST_DEF => ImplItemKind::ConstDef(ConstDef::cast(&self.syntax).unwrap()), CONST_DEF => ImplItemKind::ConstDef(ConstDef::cast(&self.syntax).unwrap()),
_ => unreachable!(), _ => unreachable!(),
} }
@ -2359,7 +2359,7 @@ pub enum ModuleItemKind<'a> {
EnumDef(&'a EnumDef), EnumDef(&'a EnumDef),
FnDef(&'a FnDef), FnDef(&'a FnDef),
TraitDef(&'a TraitDef), TraitDef(&'a TraitDef),
TypeDef(&'a TypeDef), TypeAliasDef(&'a TypeAliasDef),
ImplBlock(&'a ImplBlock), ImplBlock(&'a ImplBlock),
UseItem(&'a UseItem), UseItem(&'a UseItem),
ExternCrateItem(&'a ExternCrateItem), ExternCrateItem(&'a ExternCrateItem),
@ -2387,8 +2387,8 @@ impl<'a> From<&'a TraitDef> for &'a ModuleItem {
ModuleItem::cast(&n.syntax).unwrap() ModuleItem::cast(&n.syntax).unwrap()
} }
} }
impl<'a> From<&'a TypeDef> for &'a ModuleItem { impl<'a> From<&'a TypeAliasDef> for &'a ModuleItem {
fn from(n: &'a TypeDef) -> &'a ModuleItem { fn from(n: &'a TypeAliasDef) -> &'a ModuleItem {
ModuleItem::cast(&n.syntax).unwrap() ModuleItem::cast(&n.syntax).unwrap()
} }
} }
@ -2431,7 +2431,7 @@ impl AstNode for ModuleItem {
| ENUM_DEF | ENUM_DEF
| FN_DEF | FN_DEF
| TRAIT_DEF | TRAIT_DEF
| TYPE_DEF | TYPE_ALIAS_DEF
| IMPL_BLOCK | IMPL_BLOCK
| USE_ITEM | USE_ITEM
| EXTERN_CRATE_ITEM | EXTERN_CRATE_ITEM
@ -2456,7 +2456,7 @@ impl ModuleItem {
ENUM_DEF => ModuleItemKind::EnumDef(EnumDef::cast(&self.syntax).unwrap()), ENUM_DEF => ModuleItemKind::EnumDef(EnumDef::cast(&self.syntax).unwrap()),
FN_DEF => ModuleItemKind::FnDef(FnDef::cast(&self.syntax).unwrap()), FN_DEF => ModuleItemKind::FnDef(FnDef::cast(&self.syntax).unwrap()),
TRAIT_DEF => ModuleItemKind::TraitDef(TraitDef::cast(&self.syntax).unwrap()), TRAIT_DEF => ModuleItemKind::TraitDef(TraitDef::cast(&self.syntax).unwrap()),
TYPE_DEF => ModuleItemKind::TypeDef(TypeDef::cast(&self.syntax).unwrap()), TYPE_ALIAS_DEF => ModuleItemKind::TypeAliasDef(TypeAliasDef::cast(&self.syntax).unwrap()),
IMPL_BLOCK => ModuleItemKind::ImplBlock(ImplBlock::cast(&self.syntax).unwrap()), IMPL_BLOCK => ModuleItemKind::ImplBlock(ImplBlock::cast(&self.syntax).unwrap()),
USE_ITEM => ModuleItemKind::UseItem(UseItem::cast(&self.syntax).unwrap()), USE_ITEM => ModuleItemKind::UseItem(UseItem::cast(&self.syntax).unwrap()),
EXTERN_CRATE_ITEM => ModuleItemKind::ExternCrateItem(ExternCrateItem::cast(&self.syntax).unwrap()), EXTERN_CRATE_ITEM => ModuleItemKind::ExternCrateItem(ExternCrateItem::cast(&self.syntax).unwrap()),
@ -4273,6 +4273,43 @@ impl TupleType {
} }
} }
// TypeAliasDef
#[derive(Debug, PartialEq, Eq, Hash)]
#[repr(transparent)]
pub struct TypeAliasDef {
pub(crate) syntax: SyntaxNode,
}
unsafe impl TransparentNewType for TypeAliasDef {
type Repr = rowan::SyntaxNode<RaTypes>;
}
impl AstNode for TypeAliasDef {
fn cast(syntax: &SyntaxNode) -> Option<&Self> {
match syntax.kind() {
TYPE_ALIAS_DEF => Some(TypeAliasDef::from_repr(syntax.into_repr())),
_ => None,
}
}
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ToOwned for TypeAliasDef {
type Owned = TreeArc<TypeAliasDef>;
fn to_owned(&self) -> TreeArc<TypeAliasDef> { TreeArc::cast(self.syntax.to_owned()) }
}
impl ast::VisibilityOwner for TypeAliasDef {}
impl ast::NameOwner for TypeAliasDef {}
impl ast::TypeParamsOwner for TypeAliasDef {}
impl ast::AttrsOwner for TypeAliasDef {}
impl ast::DocCommentsOwner for TypeAliasDef {}
impl TypeAliasDef {
pub fn type_ref(&self) -> Option<&TypeRef> {
super::child_opt(self)
}
}
// TypeArg // TypeArg
#[derive(Debug, PartialEq, Eq, Hash)] #[derive(Debug, PartialEq, Eq, Hash)]
#[repr(transparent)] #[repr(transparent)]
@ -4345,43 +4382,6 @@ impl TypeArgList {
} }
} }
// TypeDef
#[derive(Debug, PartialEq, Eq, Hash)]
#[repr(transparent)]
pub struct TypeDef {
pub(crate) syntax: SyntaxNode,
}
unsafe impl TransparentNewType for TypeDef {
type Repr = rowan::SyntaxNode<RaTypes>;
}
impl AstNode for TypeDef {
fn cast(syntax: &SyntaxNode) -> Option<&Self> {
match syntax.kind() {
TYPE_DEF => Some(TypeDef::from_repr(syntax.into_repr())),
_ => None,
}
}
fn syntax(&self) -> &SyntaxNode { &self.syntax }
}
impl ToOwned for TypeDef {
type Owned = TreeArc<TypeDef>;
fn to_owned(&self) -> TreeArc<TypeDef> { TreeArc::cast(self.syntax.to_owned()) }
}
impl ast::VisibilityOwner for TypeDef {}
impl ast::NameOwner for TypeDef {}
impl ast::TypeParamsOwner for TypeDef {}
impl ast::AttrsOwner for TypeDef {}
impl ast::DocCommentsOwner for TypeDef {}
impl TypeDef {
pub fn type_ref(&self) -> Option<&TypeRef> {
super::child_opt(self)
}
}
// TypeParam // TypeParam
#[derive(Debug, PartialEq, Eq, Hash)] #[derive(Debug, PartialEq, Eq, Hash)]
#[repr(transparent)] #[repr(transparent)]

View file

@ -132,7 +132,7 @@ Grammar(
"CONST_DEF", "CONST_DEF",
"TRAIT_DEF", "TRAIT_DEF",
"IMPL_BLOCK", "IMPL_BLOCK",
"TYPE_DEF", "TYPE_ALIAS_DEF",
"MACRO_CALL", "MACRO_CALL",
"TOKEN_TREE", "TOKEN_TREE",
@ -312,7 +312,7 @@ Grammar(
], ],
options: ["TypeRef"] options: ["TypeRef"]
), ),
"TypeDef": ( "TypeAliasDef": (
traits: [ traits: [
"VisibilityOwner", "VisibilityOwner",
"NameOwner", "NameOwner",
@ -363,11 +363,11 @@ Grammar(
], ],
), ),
"ModuleItem": ( "ModuleItem": (
enum: ["StructDef", "EnumDef", "FnDef", "TraitDef", "TypeDef", "ImplBlock", enum: ["StructDef", "EnumDef", "FnDef", "TraitDef", "TypeAliasDef", "ImplBlock",
"UseItem", "ExternCrateItem", "ConstDef", "StaticDef", "Module" ] "UseItem", "ExternCrateItem", "ConstDef", "StaticDef", "Module" ]
), ),
"ImplItem": ( "ImplItem": (
enum: ["FnDef", "TypeDef", "ConstDef"] enum: ["FnDef", "TypeAliasDef", "ConstDef"]
), ),
"TupleExpr": ( "TupleExpr": (

View file

@ -143,7 +143,7 @@ fn n_attached_trivias<'a>(
trivias: impl Iterator<Item = (SyntaxKind, &'a str)>, trivias: impl Iterator<Item = (SyntaxKind, &'a str)>,
) -> usize { ) -> usize {
match kind { match kind {
CONST_DEF | TYPE_DEF | STRUCT_DEF | ENUM_DEF | ENUM_VARIANT | FN_DEF | TRAIT_DEF CONST_DEF | TYPE_ALIAS_DEF | STRUCT_DEF | ENUM_DEF | ENUM_VARIANT | FN_DEF | TRAIT_DEF
| MODULE | NAMED_FIELD_DEF => { | MODULE | NAMED_FIELD_DEF => {
let mut res = 0; let mut res = 0;
for (i, (kind, text)) in trivias.enumerate() { for (i, (kind, text)) in trivias.enumerate() {

View file

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 18) SOURCE_FILE@[0; 18)
TYPE_DEF@[0; 12) TYPE_ALIAS_DEF@[0; 12)
TYPE_KW@[0; 4) TYPE_KW@[0; 4)
WHITESPACE@[4; 5) WHITESPACE@[4; 5)
NAME@[5; 6) NAME@[5; 6)

View file

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 14) SOURCE_FILE@[0; 14)
TYPE_DEF@[0; 13) TYPE_ALIAS_DEF@[0; 13)
TYPE_KW@[0; 4) TYPE_KW@[0; 4)
WHITESPACE@[4; 5) WHITESPACE@[4; 5)
NAME@[5; 6) NAME@[5; 6)

View file

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 20) SOURCE_FILE@[0; 20)
TYPE_DEF@[0; 15) TYPE_ALIAS_DEF@[0; 15)
TYPE_KW@[0; 4) TYPE_KW@[0; 4)
WHITESPACE@[4; 5) WHITESPACE@[4; 5)
NAME@[5; 6) NAME@[5; 6)

View file

@ -11,7 +11,7 @@ SOURCE_FILE@[0; 83)
ITEM_LIST@[7; 82) ITEM_LIST@[7; 82)
L_CURLY@[7; 8) L_CURLY@[7; 8)
WHITESPACE@[8; 13) WHITESPACE@[8; 13)
TYPE_DEF@[13; 27) TYPE_ALIAS_DEF@[13; 27)
TYPE_KW@[13; 17) TYPE_KW@[13; 17)
WHITESPACE@[17; 18) WHITESPACE@[17; 18)
NAME@[18; 19) NAME@[18; 19)

View file

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 54) SOURCE_FILE@[0; 54)
TYPE_DEF@[0; 53) TYPE_ALIAS_DEF@[0; 53)
TYPE_KW@[0; 4) TYPE_KW@[0; 4)
WHITESPACE@[4; 5) WHITESPACE@[4; 5)
NAME@[5; 6) NAME@[5; 6)

View file

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 31) SOURCE_FILE@[0; 31)
TYPE_DEF@[0; 30) TYPE_ALIAS_DEF@[0; 30)
TYPE_KW@[0; 4) TYPE_KW@[0; 4)
WHITESPACE@[4; 5) WHITESPACE@[4; 5)
NAME@[5; 8) NAME@[5; 8)

View file

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 36) SOURCE_FILE@[0; 36)
TYPE_DEF@[0; 17) TYPE_ALIAS_DEF@[0; 17)
TYPE_KW@[0; 4) TYPE_KW@[0; 4)
WHITESPACE@[4; 5) WHITESPACE@[4; 5)
NAME@[5; 6) NAME@[5; 6)
@ -16,7 +16,7 @@ SOURCE_FILE@[0; 36)
R_PAREN@[15; 16) R_PAREN@[15; 16)
SEMI@[16; 17) SEMI@[16; 17)
WHITESPACE@[17; 18) WHITESPACE@[17; 18)
TYPE_DEF@[18; 35) TYPE_ALIAS_DEF@[18; 35)
TYPE_KW@[18; 22) TYPE_KW@[18; 22)
WHITESPACE@[22; 23) WHITESPACE@[22; 23)
NAME@[23; 24) NAME@[23; 24)

View file

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 16) SOURCE_FILE@[0; 16)
TYPE_DEF@[0; 15) TYPE_ALIAS_DEF@[0; 15)
TYPE_KW@[0; 4) TYPE_KW@[0; 4)
WHITESPACE@[4; 5) WHITESPACE@[4; 5)
NAME@[5; 10) NAME@[5; 10)

View file

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 19) SOURCE_FILE@[0; 19)
TYPE_DEF@[0; 18) TYPE_ALIAS_DEF@[0; 18)
TYPE_KW@[0; 4) TYPE_KW@[0; 4)
WHITESPACE@[4; 5) WHITESPACE@[4; 5)
NAME@[5; 6) NAME@[5; 6)

View file

@ -11,7 +11,7 @@ SOURCE_FILE@[0; 89)
ITEM_LIST@[7; 88) ITEM_LIST@[7; 88)
L_CURLY@[7; 8) L_CURLY@[7; 8)
WHITESPACE@[8; 13) WHITESPACE@[8; 13)
TYPE_DEF@[13; 26) TYPE_ALIAS_DEF@[13; 26)
TYPE_KW@[13; 17) TYPE_KW@[13; 17)
WHITESPACE@[17; 18) WHITESPACE@[17; 18)
NAME@[18; 19) NAME@[18; 19)

View file

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 22) SOURCE_FILE@[0; 22)
TYPE_DEF@[0; 21) TYPE_ALIAS_DEF@[0; 21)
TYPE_KW@[0; 4) TYPE_KW@[0; 4)
WHITESPACE@[4; 5) WHITESPACE@[4; 5)
NAME@[5; 16) NAME@[5; 16)

View file

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 15) SOURCE_FILE@[0; 15)
TYPE_DEF@[0; 14) TYPE_ALIAS_DEF@[0; 14)
TYPE_KW@[0; 4) TYPE_KW@[0; 4)
WHITESPACE@[4; 5) WHITESPACE@[4; 5)
NAME@[5; 6) NAME@[5; 6)

View file

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 43) SOURCE_FILE@[0; 43)
TYPE_DEF@[0; 42) TYPE_ALIAS_DEF@[0; 42)
TYPE_KW@[0; 4) TYPE_KW@[0; 4)
WHITESPACE@[4; 5) WHITESPACE@[4; 5)
NAME@[5; 6) NAME@[5; 6)

View file

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 70) SOURCE_FILE@[0; 70)
TYPE_DEF@[0; 14) TYPE_ALIAS_DEF@[0; 14)
TYPE_KW@[0; 4) TYPE_KW@[0; 4)
WHITESPACE@[4; 5) WHITESPACE@[4; 5)
NAME@[5; 6) NAME@[5; 6)
@ -14,7 +14,7 @@ SOURCE_FILE@[0; 70)
R_PAREN@[12; 13) R_PAREN@[12; 13)
SEMI@[13; 14) SEMI@[13; 14)
WHITESPACE@[14; 15) WHITESPACE@[14; 15)
TYPE_DEF@[15; 36) TYPE_ALIAS_DEF@[15; 36)
TYPE_KW@[15; 19) TYPE_KW@[15; 19)
WHITESPACE@[19; 20) WHITESPACE@[19; 20)
NAME@[20; 21) NAME@[20; 21)
@ -31,7 +31,7 @@ SOURCE_FILE@[0; 70)
R_PAREN@[34; 35) R_PAREN@[34; 35)
SEMI@[35; 36) SEMI@[35; 36)
WHITESPACE@[36; 37) WHITESPACE@[36; 37)
TYPE_DEF@[37; 69) TYPE_ALIAS_DEF@[37; 69)
TYPE_KW@[37; 41) TYPE_KW@[37; 41)
WHITESPACE@[41; 42) WHITESPACE@[41; 42)
NAME@[42; 43) NAME@[42; 43)

View file

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 54) SOURCE_FILE@[0; 54)
TYPE_DEF@[0; 13) TYPE_ALIAS_DEF@[0; 13)
TYPE_KW@[0; 4) TYPE_KW@[0; 4)
WHITESPACE@[4; 5) WHITESPACE@[4; 5)
NAME@[5; 6) NAME@[5; 6)
@ -14,7 +14,7 @@ SOURCE_FILE@[0; 54)
R_PAREN@[11; 12) R_PAREN@[11; 12)
SEMI@[12; 13) SEMI@[12; 13)
WHITESPACE@[13; 14) WHITESPACE@[13; 14)
TYPE_DEF@[14; 35) TYPE_ALIAS_DEF@[14; 35)
TYPE_KW@[14; 18) TYPE_KW@[14; 18)
WHITESPACE@[18; 19) WHITESPACE@[18; 19)
NAME@[19; 20) NAME@[19; 20)
@ -31,7 +31,7 @@ SOURCE_FILE@[0; 54)
R_PAREN@[33; 34) R_PAREN@[33; 34)
SEMI@[34; 35) SEMI@[34; 35)
WHITESPACE@[35; 36) WHITESPACE@[35; 36)
TYPE_DEF@[36; 53) TYPE_ALIAS_DEF@[36; 53)
TYPE_KW@[36; 40) TYPE_KW@[36; 40)
WHITESPACE@[40; 41) WHITESPACE@[40; 41)
NAME@[41; 42) NAME@[41; 42)

View file

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 71) SOURCE_FILE@[0; 71)
TYPE_DEF@[0; 26) TYPE_ALIAS_DEF@[0; 26)
TYPE_KW@[0; 4) TYPE_KW@[0; 4)
WHITESPACE@[4; 5) WHITESPACE@[4; 5)
NAME@[5; 6) NAME@[5; 6)

View file

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 36) SOURCE_FILE@[0; 36)
TYPE_DEF@[0; 35) TYPE_ALIAS_DEF@[0; 35)
TYPE_KW@[0; 4) TYPE_KW@[0; 4)
WHITESPACE@[4; 5) WHITESPACE@[4; 5)
NAME@[5; 6) NAME@[5; 6)

View file

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 17) SOURCE_FILE@[0; 17)
TYPE_DEF@[0; 16) TYPE_ALIAS_DEF@[0; 16)
TYPE_KW@[0; 4) TYPE_KW@[0; 4)
WHITESPACE@[4; 5) WHITESPACE@[4; 5)
NAME@[5; 6) NAME@[5; 6)

View file

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 13) SOURCE_FILE@[0; 13)
TYPE_DEF@[0; 12) TYPE_ALIAS_DEF@[0; 12)
TYPE_KW@[0; 4) TYPE_KW@[0; 4)
WHITESPACE@[4; 5) WHITESPACE@[4; 5)
NAME@[5; 6) NAME@[5; 6)

View file

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 71) SOURCE_FILE@[0; 71)
TYPE_DEF@[0; 13) TYPE_ALIAS_DEF@[0; 13)
TYPE_KW@[0; 4) TYPE_KW@[0; 4)
WHITESPACE@[4; 5) WHITESPACE@[4; 5)
NAME@[5; 6) NAME@[5; 6)
@ -14,7 +14,7 @@ SOURCE_FILE@[0; 71)
IDENT@[9; 12) "Foo" IDENT@[9; 12) "Foo"
SEMI@[12; 13) SEMI@[12; 13)
WHITESPACE@[13; 14) WHITESPACE@[13; 14)
TYPE_DEF@[14; 29) TYPE_ALIAS_DEF@[14; 29)
TYPE_KW@[14; 18) TYPE_KW@[14; 18)
WHITESPACE@[18; 19) WHITESPACE@[18; 19)
NAME@[19; 20) NAME@[19; 20)
@ -30,7 +30,7 @@ SOURCE_FILE@[0; 71)
IDENT@[25; 28) "Foo" IDENT@[25; 28) "Foo"
SEMI@[28; 29) SEMI@[28; 29)
WHITESPACE@[29; 30) WHITESPACE@[29; 30)
TYPE_DEF@[30; 49) TYPE_ALIAS_DEF@[30; 49)
TYPE_KW@[30; 34) TYPE_KW@[30; 34)
WHITESPACE@[34; 35) WHITESPACE@[34; 35)
NAME@[35; 36) NAME@[35; 36)
@ -49,7 +49,7 @@ SOURCE_FILE@[0; 71)
IDENT@[45; 48) "Foo" IDENT@[45; 48) "Foo"
SEMI@[48; 49) SEMI@[48; 49)
WHITESPACE@[49; 50) WHITESPACE@[49; 50)
TYPE_DEF@[50; 70) TYPE_ALIAS_DEF@[50; 70)
TYPE_KW@[50; 54) TYPE_KW@[50; 54)
WHITESPACE@[54; 55) WHITESPACE@[54; 55)
NAME@[55; 56) NAME@[55; 56)

View file

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 42) SOURCE_FILE@[0; 42)
TYPE_DEF@[0; 41) TYPE_ALIAS_DEF@[0; 41)
TYPE_KW@[0; 4) TYPE_KW@[0; 4)
WHITESPACE@[4; 5) WHITESPACE@[4; 5)
NAME@[5; 6) NAME@[5; 6)

View file

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 21) SOURCE_FILE@[0; 21)
TYPE_DEF@[0; 20) TYPE_ALIAS_DEF@[0; 20)
TYPE_KW@[0; 4) TYPE_KW@[0; 4)
WHITESPACE@[4; 5) WHITESPACE@[4; 5)
NAME@[5; 11) NAME@[5; 11)

View file

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 16) SOURCE_FILE@[0; 16)
TYPE_DEF@[0; 15) TYPE_ALIAS_DEF@[0; 15)
TYPE_KW@[0; 4) TYPE_KW@[0; 4)
WHITESPACE@[4; 5) WHITESPACE@[4; 5)
NAME@[5; 8) NAME@[5; 8)

View file

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 29) SOURCE_FILE@[0; 29)
TYPE_DEF@[0; 28) TYPE_ALIAS_DEF@[0; 28)
TYPE_KW@[0; 4) TYPE_KW@[0; 4)
WHITESPACE@[4; 5) WHITESPACE@[4; 5)
NAME@[5; 6) NAME@[5; 6)

View file

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 16) SOURCE_FILE@[0; 16)
TYPE_DEF@[0; 15) TYPE_ALIAS_DEF@[0; 15)
TYPE_KW@[0; 4) TYPE_KW@[0; 4)
WHITESPACE@[4; 5) WHITESPACE@[4; 5)
NAME@[5; 6) NAME@[5; 6)

View file

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 21) SOURCE_FILE@[0; 21)
TYPE_DEF@[0; 20) TYPE_ALIAS_DEF@[0; 20)
TYPE_KW@[0; 4) TYPE_KW@[0; 4)
WHITESPACE@[4; 5) WHITESPACE@[4; 5)
NAME@[5; 6) NAME@[5; 6)

View file

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 32) SOURCE_FILE@[0; 32)
TYPE_DEF@[0; 31) TYPE_ALIAS_DEF@[0; 31)
TYPE_KW@[0; 4) TYPE_KW@[0; 4)
WHITESPACE@[4; 5) WHITESPACE@[4; 5)
NAME@[5; 6) NAME@[5; 6)

View file

@ -1,5 +1,5 @@
SOURCE_FILE@[0; 41) SOURCE_FILE@[0; 41)
TYPE_DEF@[0; 16) TYPE_ALIAS_DEF@[0; 16)
TYPE_KW@[0; 4) TYPE_KW@[0; 4)
WHITESPACE@[4; 5) WHITESPACE@[4; 5)
NAME@[5; 6) NAME@[5; 6)
@ -18,7 +18,7 @@ SOURCE_FILE@[0; 41)
R_PAREN@[14; 15) R_PAREN@[14; 15)
SEMI@[15; 16) SEMI@[15; 16)
WHITESPACE@[16; 17) WHITESPACE@[16; 17)
TYPE_DEF@[17; 40) TYPE_ALIAS_DEF@[17; 40)
TYPE_KW@[17; 21) TYPE_KW@[17; 21)
WHITESPACE@[21; 22) WHITESPACE@[21; 22)
NAME@[22; 23) NAME@[22; 23)