Finalize const&static grammar

This commit is contained in:
Aleksey Kladov 2020-07-30 18:02:20 +02:00
parent 6b25f640a6
commit 3cd4112bdc
39 changed files with 138 additions and 137 deletions

View file

@ -120,7 +120,7 @@ fn add_missing_impl_members_inner(
match item { match item {
ast::AssocItem::Fn(def) => def.name(), ast::AssocItem::Fn(def) => def.name(),
ast::AssocItem::TypeAlias(def) => def.name(), ast::AssocItem::TypeAlias(def) => def.name(),
ast::AssocItem::ConstDef(def) => def.name(), ast::AssocItem::Const(def) => def.name(),
ast::AssocItem::MacroCall(_) => None, ast::AssocItem::MacroCall(_) => None,
} }
.map(|it| it.text().clone()) .map(|it| it.text().clone())
@ -131,7 +131,7 @@ fn add_missing_impl_members_inner(
.map(|i| match i { .map(|i| match i {
hir::AssocItem::Function(i) => ast::AssocItem::Fn(i.source(ctx.db()).value), hir::AssocItem::Function(i) => ast::AssocItem::Fn(i.source(ctx.db()).value),
hir::AssocItem::TypeAlias(i) => ast::AssocItem::TypeAlias(i.source(ctx.db()).value), hir::AssocItem::TypeAlias(i) => ast::AssocItem::TypeAlias(i.source(ctx.db()).value),
hir::AssocItem::Const(i) => ast::AssocItem::ConstDef(i.source(ctx.db()).value), hir::AssocItem::Const(i) => ast::AssocItem::Const(i.source(ctx.db()).value),
}) })
.filter(|t| def_name(&t).is_some()) .filter(|t| def_name(&t).is_some())
.filter(|t| match t { .filter(|t| match t {

View file

@ -1,7 +1,7 @@
use ra_syntax::{ use ra_syntax::{
ast::{self, NameOwner, VisibilityOwner}, ast::{self, NameOwner, VisibilityOwner},
AstNode, AstNode,
SyntaxKind::{CONST_DEF, ENUM, FN, MODULE, STATIC_DEF, STRUCT, TRAIT_DEF, VISIBILITY}, SyntaxKind::{CONST, ENUM, FN, MODULE, STATIC, STRUCT, TRAIT_DEF, VISIBILITY},
T, T,
}; };
use test_utils::mark; use test_utils::mark;
@ -36,7 +36,7 @@ fn add_vis(acc: &mut Assists, ctx: &AssistContext) -> Option<()> {
let (offset, target) = if let Some(keyword) = item_keyword { let (offset, target) = if let Some(keyword) = item_keyword {
let parent = keyword.parent(); let parent = keyword.parent();
let def_kws = vec![CONST_DEF, STATIC_DEF, FN, MODULE, STRUCT, ENUM, TRAIT_DEF]; let def_kws = vec![CONST, STATIC, FN, MODULE, STRUCT, ENUM, TRAIT_DEF];
// Parent is not a definition, can't add visibility // Parent is not a definition, can't add visibility
if !def_kws.iter().any(|&def_kw| def_kw == parent.kind()) { if !def_kws.iter().any(|&def_kw| def_kw == parent.kind()) {
return None; return None;

View file

@ -78,7 +78,7 @@ pub fn get_missing_assoc_items(
} }
} }
ast::AssocItem::ConstDef(c) => { ast::AssocItem::Const(c) => {
if let Some(n) = c.name() { if let Some(n) = c.name() {
impl_fns_consts.insert(n.syntax().to_string()); impl_fns_consts.insert(n.syntax().to_string());
} }

View file

@ -87,14 +87,14 @@ impl HasSource for Function {
} }
} }
impl HasSource for Const { impl HasSource for Const {
type Ast = ast::ConstDef; type Ast = ast::Const;
fn source(self, db: &dyn HirDatabase) -> InFile<ast::ConstDef> { fn source(self, db: &dyn HirDatabase) -> InFile<ast::Const> {
self.id.lookup(db.upcast()).source(db.upcast()) self.id.lookup(db.upcast()).source(db.upcast())
} }
} }
impl HasSource for Static { impl HasSource for Static {
type Ast = ast::StaticDef; type Ast = ast::Static;
fn source(self, db: &dyn HirDatabase) -> InFile<ast::StaticDef> { fn source(self, db: &dyn HirDatabase) -> InFile<ast::Static> {
self.id.lookup(db.upcast()).source(db.upcast()) self.id.lookup(db.upcast()).source(db.upcast())
} }
} }

View file

@ -586,8 +586,8 @@ to_def_impls![
(crate::Trait, ast::TraitDef, trait_to_def), (crate::Trait, ast::TraitDef, trait_to_def),
(crate::ImplDef, ast::ImplDef, impl_to_def), (crate::ImplDef, ast::ImplDef, impl_to_def),
(crate::TypeAlias, ast::TypeAlias, type_alias_to_def), (crate::TypeAlias, ast::TypeAlias, type_alias_to_def),
(crate::Const, ast::ConstDef, const_to_def), (crate::Const, ast::Const, const_to_def),
(crate::Static, ast::StaticDef, static_to_def), (crate::Static, ast::Static, static_to_def),
(crate::Function, ast::Fn, fn_to_def), (crate::Function, ast::Fn, fn_to_def),
(crate::Field, ast::RecordField, record_field_to_def), (crate::Field, ast::RecordField, record_field_to_def),
(crate::Field, ast::TupleField, tuple_field_to_def), (crate::Field, ast::TupleField, tuple_field_to_def),

View file

@ -83,10 +83,10 @@ impl SourceToDefCtx<'_, '_> {
pub(super) fn union_to_def(&mut self, src: InFile<ast::Union>) -> Option<UnionId> { pub(super) fn union_to_def(&mut self, src: InFile<ast::Union>) -> Option<UnionId> {
self.to_def(src, keys::UNION) self.to_def(src, keys::UNION)
} }
pub(super) fn static_to_def(&mut self, src: InFile<ast::StaticDef>) -> Option<StaticId> { pub(super) fn static_to_def(&mut self, src: InFile<ast::Static>) -> Option<StaticId> {
self.to_def(src, keys::STATIC) self.to_def(src, keys::STATIC)
} }
pub(super) fn const_to_def(&mut self, src: InFile<ast::ConstDef>) -> Option<ConstId> { pub(super) fn const_to_def(&mut self, src: InFile<ast::Const>) -> Option<ConstId> {
self.to_def(src, keys::CONST) self.to_def(src, keys::CONST)
} }
pub(super) fn type_alias_to_def(&mut self, src: InFile<ast::TypeAlias>) -> Option<TypeAliasId> { pub(super) fn type_alias_to_def(&mut self, src: InFile<ast::TypeAlias>) -> Option<TypeAliasId> {
@ -178,11 +178,11 @@ impl SourceToDefCtx<'_, '_> {
let def = self.union_to_def(container.with_value(it))?; let def = self.union_to_def(container.with_value(it))?;
VariantId::from(def).into() VariantId::from(def).into()
}, },
ast::StaticDef(it) => { ast::Static(it) => {
let def = self.static_to_def(container.with_value(it))?; let def = self.static_to_def(container.with_value(it))?;
DefWithBodyId::from(def).into() DefWithBodyId::from(def).into()
}, },
ast::ConstDef(it) => { ast::Const(it) => {
let def = self.const_to_def(container.with_value(it))?; let def = self.const_to_def(container.with_value(it))?;
DefWithBodyId::from(def).into() DefWithBodyId::from(def).into()
}, },
@ -222,8 +222,8 @@ impl SourceToDefCtx<'_, '_> {
for container in src.cloned().ancestors_with_macros(self.db.upcast()).skip(1) { for container in src.cloned().ancestors_with_macros(self.db.upcast()).skip(1) {
let res: DefWithBodyId = match_ast! { let res: DefWithBodyId = match_ast! {
match (container.value) { match (container.value) {
ast::ConstDef(it) => self.const_to_def(container.with_value(it))?.into(), ast::Const(it) => self.const_to_def(container.with_value(it))?.into(),
ast::StaticDef(it) => self.static_to_def(container.with_value(it))?.into(), ast::Static(it) => self.static_to_def(container.with_value(it))?.into(),
ast::Fn(it) => self.fn_to_def(container.with_value(it))?.into(), ast::Fn(it) => self.fn_to_def(container.with_value(it))?.into(),
_ => continue, _ => continue,
} }

View file

@ -641,14 +641,14 @@ impl ExprCollector<'_> {
def.name(), def.name(),
) )
} }
ast::Item::ConstDef(def) => { ast::Item::Const(def) => {
let id = self.find_inner_item(&def)?; let id = self.find_inner_item(&def)?;
( (
ConstLoc { container: container.into(), id }.intern(self.db).into(), ConstLoc { container: container.into(), id }.intern(self.db).into(),
def.name(), def.name(),
) )
} }
ast::Item::StaticDef(def) => { ast::Item::Static(def) => {
let id = self.find_inner_item(&def)?; let id = self.find_inner_item(&def)?;
(StaticLoc { container, id }.intern(self.db).into(), def.name()) (StaticLoc { container, id }.intern(self.db).into(), def.name())
} }

View file

@ -417,8 +417,8 @@ mod_items! {
Struct in structs -> ast::Struct, Struct in structs -> ast::Struct,
Union in unions -> ast::Union, Union in unions -> ast::Union,
Enum in enums -> ast::Enum, Enum in enums -> ast::Enum,
Const in consts -> ast::ConstDef, Const in consts -> ast::Const,
Static in statics -> ast::StaticDef, Static in statics -> ast::Static,
Trait in traits -> ast::TraitDef, Trait in traits -> ast::TraitDef,
Impl in impls -> ast::ImplDef, Impl in impls -> ast::ImplDef,
TypeAlias in type_aliases -> ast::TypeAlias, TypeAlias in type_aliases -> ast::TypeAlias,
@ -552,7 +552,7 @@ pub struct Const {
pub name: Option<Name>, pub name: Option<Name>,
pub visibility: RawVisibilityId, pub visibility: RawVisibilityId,
pub type_ref: TypeRef, pub type_ref: TypeRef,
pub ast_id: FileAstId<ast::ConstDef>, pub ast_id: FileAstId<ast::Const>,
} }
#[derive(Debug, Clone, Eq, PartialEq)] #[derive(Debug, Clone, Eq, PartialEq)]
@ -561,7 +561,7 @@ pub struct Static {
pub visibility: RawVisibilityId, pub visibility: RawVisibilityId,
pub mutable: bool, pub mutable: bool,
pub type_ref: TypeRef, pub type_ref: TypeRef,
pub ast_id: FileAstId<ast::StaticDef>, pub ast_id: FileAstId<ast::Static>,
} }
#[derive(Debug, Clone, Eq, PartialEq)] #[derive(Debug, Clone, Eq, PartialEq)]

View file

@ -83,8 +83,8 @@ impl Ctx {
| ast::Item::Enum(_) | ast::Item::Enum(_)
| ast::Item::Fn(_) | ast::Item::Fn(_)
| ast::Item::TypeAlias(_) | ast::Item::TypeAlias(_)
| ast::Item::ConstDef(_) | ast::Item::Const(_)
| ast::Item::StaticDef(_) | ast::Item::Static(_)
| ast::Item::MacroCall(_) => { | ast::Item::MacroCall(_) => {
// Skip this if we're already collecting inner items. We'll descend into all nodes // Skip this if we're already collecting inner items. We'll descend into all nodes
// already. // already.
@ -108,8 +108,8 @@ impl Ctx {
ast::Item::Enum(ast) => self.lower_enum(ast).map(Into::into), ast::Item::Enum(ast) => self.lower_enum(ast).map(Into::into),
ast::Item::Fn(ast) => self.lower_function(ast).map(Into::into), ast::Item::Fn(ast) => self.lower_function(ast).map(Into::into),
ast::Item::TypeAlias(ast) => self.lower_type_alias(ast).map(Into::into), ast::Item::TypeAlias(ast) => self.lower_type_alias(ast).map(Into::into),
ast::Item::StaticDef(ast) => self.lower_static(ast).map(Into::into), ast::Item::Static(ast) => self.lower_static(ast).map(Into::into),
ast::Item::ConstDef(ast) => Some(self.lower_const(ast).into()), ast::Item::Const(ast) => Some(self.lower_const(ast).into()),
ast::Item::Module(ast) => self.lower_module(ast).map(Into::into), ast::Item::Module(ast) => self.lower_module(ast).map(Into::into),
ast::Item::TraitDef(ast) => self.lower_trait(ast).map(Into::into), ast::Item::TraitDef(ast) => self.lower_trait(ast).map(Into::into),
ast::Item::ImplDef(ast) => self.lower_impl(ast).map(Into::into), ast::Item::ImplDef(ast) => self.lower_impl(ast).map(Into::into),
@ -160,7 +160,7 @@ impl Ctx {
match item { match item {
ast::AssocItem::Fn(ast) => self.lower_function(ast).map(Into::into), ast::AssocItem::Fn(ast) => self.lower_function(ast).map(Into::into),
ast::AssocItem::TypeAlias(ast) => self.lower_type_alias(ast).map(Into::into), ast::AssocItem::TypeAlias(ast) => self.lower_type_alias(ast).map(Into::into),
ast::AssocItem::ConstDef(ast) => Some(self.lower_const(ast).into()), ast::AssocItem::Const(ast) => Some(self.lower_const(ast).into()),
ast::AssocItem::MacroCall(ast) => self.lower_macro_call(ast).map(Into::into), ast::AssocItem::MacroCall(ast) => self.lower_macro_call(ast).map(Into::into),
} }
} }
@ -368,7 +368,7 @@ impl Ctx {
Some(id(self.data().type_aliases.alloc(res))) Some(id(self.data().type_aliases.alloc(res)))
} }
fn lower_static(&mut self, static_: &ast::StaticDef) -> Option<FileItemTreeId<Static>> { fn lower_static(&mut self, static_: &ast::Static) -> Option<FileItemTreeId<Static>> {
let name = static_.name()?.as_name(); let name = static_.name()?.as_name();
let type_ref = self.lower_type_ref_opt(static_.ascribed_type()); let type_ref = self.lower_type_ref_opt(static_.ascribed_type());
let visibility = self.lower_visibility(static_); let visibility = self.lower_visibility(static_);
@ -378,7 +378,7 @@ impl Ctx {
Some(id(self.data().statics.alloc(res))) Some(id(self.data().statics.alloc(res)))
} }
fn lower_const(&mut self, konst: &ast::ConstDef) -> FileItemTreeId<Const> { fn lower_const(&mut self, konst: &ast::Const) -> FileItemTreeId<Const> {
let name = konst.name().map(|it| it.as_name()); let name = konst.name().map(|it| it.as_name());
let type_ref = self.lower_type_ref_opt(konst.ascribed_type()); let type_ref = self.lower_type_ref_opt(konst.ascribed_type());
let visibility = self.lower_visibility(konst); let visibility = self.lower_visibility(konst);
@ -553,7 +553,7 @@ impl Ctx {
self.data().functions[func.index].is_unsafe = true; self.data().functions[func.index].is_unsafe = true;
func.into() func.into()
} }
ast::ExternItem::StaticDef(ast) => { ast::ExternItem::Static(ast) => {
let statik = self.lower_static(&ast)?; let statik = self.lower_static(&ast)?;
statik.into() statik.into()
} }

View file

@ -238,7 +238,7 @@ fn smoke() {
> #[Attrs { entries: Some([Attr { path: ModPath { kind: Plain, segments: [Name(Text("assoc_ty"))] }, input: None }]) }] > #[Attrs { entries: Some([Attr { path: ModPath { kind: Plain, segments: [Name(Text("assoc_ty"))] }, input: None }]) }]
> TypeAlias { name: Name(Text("AssocTy")), visibility: RawVisibilityId("pub(self)"), bounds: [Path(Path { type_anchor: None, mod_path: ModPath { kind: Plain, segments: [Name(Text("Tr"))] }, generic_args: [Some(GenericArgs { args: [Type(Tuple([]))], has_self_type: false, bindings: [] })] })], generic_params: GenericParamsId(4294967295), type_ref: None, ast_id: FileAstId::<ra_syntax::ast::generated::nodes::TypeAlias>(8) } > TypeAlias { name: Name(Text("AssocTy")), visibility: RawVisibilityId("pub(self)"), bounds: [Path(Path { type_anchor: None, mod_path: ModPath { kind: Plain, segments: [Name(Text("Tr"))] }, generic_args: [Some(GenericArgs { args: [Type(Tuple([]))], has_self_type: false, bindings: [] })] })], generic_params: GenericParamsId(4294967295), type_ref: None, ast_id: FileAstId::<ra_syntax::ast::generated::nodes::TypeAlias>(8) }
> #[Attrs { entries: Some([Attr { path: ModPath { kind: Plain, segments: [Name(Text("assoc_const"))] }, input: None }]) }] > #[Attrs { entries: Some([Attr { path: ModPath { kind: Plain, segments: [Name(Text("assoc_const"))] }, input: None }]) }]
> Const { name: Some(Name(Text("CONST"))), visibility: RawVisibilityId("pub(self)"), type_ref: Path(Path { type_anchor: None, mod_path: ModPath { kind: Plain, segments: [Name(Text("u8"))] }, generic_args: [None] }), ast_id: FileAstId::<ra_syntax::ast::generated::nodes::ConstDef>(9) } > Const { name: Some(Name(Text("CONST"))), visibility: RawVisibilityId("pub(self)"), type_ref: Path(Path { type_anchor: None, mod_path: ModPath { kind: Plain, segments: [Name(Text("u8"))] }, generic_args: [None] }), ast_id: FileAstId::<ra_syntax::ast::generated::nodes::Const>(9) }
> #[Attrs { entries: Some([Attr { path: ModPath { kind: Plain, segments: [Name(Text("assoc_method"))] }, input: None }]) }] > #[Attrs { entries: Some([Attr { path: ModPath { kind: Plain, segments: [Name(Text("assoc_method"))] }, input: None }]) }]
> Function { name: Name(Text("method")), visibility: RawVisibilityId("pub(self)"), generic_params: GenericParamsId(4294967295), has_self_param: true, is_unsafe: false, params: [Reference(Path(Path { type_anchor: None, mod_path: ModPath { kind: Plain, segments: [Name(Text("Self"))] }, generic_args: [None] }), Shared)], is_varargs: false, ret_type: Tuple([]), ast_id: FileAstId::<ra_syntax::ast::generated::nodes::Fn>(10) } > Function { name: Name(Text("method")), visibility: RawVisibilityId("pub(self)"), generic_params: GenericParamsId(4294967295), has_self_param: true, is_unsafe: false, params: [Reference(Path(Path { type_anchor: None, mod_path: ModPath { kind: Plain, segments: [Name(Text("Self"))] }, generic_args: [None] }), Shared)], is_varargs: false, ret_type: Tuple([]), ast_id: FileAstId::<ra_syntax::ast::generated::nodes::Fn>(10) }
> #[Attrs { entries: Some([Attr { path: ModPath { kind: Plain, segments: [Name(Text("assoc_dfl_method"))] }, input: None }]) }] > #[Attrs { entries: Some([Attr { path: ModPath { kind: Plain, segments: [Name(Text("assoc_dfl_method"))] }, input: None }]) }]

View file

@ -15,8 +15,8 @@ use crate::{
pub type Key<K, V> = crate::dyn_map::Key<InFile<K>, V, AstPtrPolicy<K, V>>; pub type Key<K, V> = crate::dyn_map::Key<InFile<K>, V, AstPtrPolicy<K, V>>;
pub const FUNCTION: Key<ast::Fn, FunctionId> = Key::new(); pub const FUNCTION: Key<ast::Fn, FunctionId> = Key::new();
pub const CONST: Key<ast::ConstDef, ConstId> = Key::new(); pub const CONST: Key<ast::Const, ConstId> = Key::new();
pub const STATIC: Key<ast::StaticDef, StaticId> = Key::new(); pub const STATIC: Key<ast::Static, StaticId> = Key::new();
pub const TYPE_ALIAS: Key<ast::TypeAlias, TypeAliasId> = Key::new(); pub const TYPE_ALIAS: Key<ast::TypeAlias, TypeAliasId> = Key::new();
pub const IMPL: Key<ast::ImplDef, ImplId> = Key::new(); pub const IMPL: Key<ast::ImplDef, ImplId> = Key::new();
pub const TRAIT: Key<ast::TraitDef, TraitId> = Key::new(); pub const TRAIT: Key<ast::TraitDef, TraitId> = Key::new();

View file

@ -2,7 +2,7 @@
//! //!
//! This module adds the completion items related to implementing associated //! This module adds the completion items related to implementing associated
//! items within a `impl Trait for Struct` block. The current context node //! items within a `impl Trait for Struct` block. The current context node
//! must be within either a `FN`, `TYPE_ALIAS`, or `CONST_DEF` node //! must be within either a `FN`, `TYPE_ALIAS`, or `CONST` node
//! and an direct child of an `IMPL_DEF`. //! and an direct child of an `IMPL_DEF`.
//! //!
//! # Examples //! # Examples
@ -87,7 +87,7 @@ pub(crate) fn complete_trait_impl(acc: &mut Completions, ctx: &CompletionContext
} }
} }
SyntaxKind::CONST_DEF => { SyntaxKind::CONST => {
for missing_fn in get_missing_assoc_items(&ctx.sema, &impl_def) for missing_fn in get_missing_assoc_items(&ctx.sema, &impl_def)
.into_iter() .into_iter()
.filter_map(|item| match item { .filter_map(|item| match item {
@ -108,7 +108,7 @@ fn completion_match(ctx: &CompletionContext) -> Option<(SyntaxNode, ImplDef)> {
let (trigger, impl_def_offset) = ctx.token.ancestors().find_map(|p| match p.kind() { let (trigger, impl_def_offset) = ctx.token.ancestors().find_map(|p| match p.kind() {
SyntaxKind::FN SyntaxKind::FN
| SyntaxKind::TYPE_ALIAS | SyntaxKind::TYPE_ALIAS
| SyntaxKind::CONST_DEF | SyntaxKind::CONST
| SyntaxKind::BLOCK_EXPR => Some((p, 2)), | SyntaxKind::BLOCK_EXPR => Some((p, 2)),
SyntaxKind::NAME_REF => Some((p, 5)), SyntaxKind::NAME_REF => Some((p, 5)),
_ => None, _ => None,
@ -201,7 +201,7 @@ fn add_const_impl(
} }
} }
fn make_const_compl_syntax(const_: &ast::ConstDef) -> String { fn make_const_compl_syntax(const_: &ast::Const) -> String {
let const_ = edit::remove_attrs_and_docs(const_); let const_ = edit::remove_attrs_and_docs(const_);
let const_start = const_.syntax().text_range().start(); let const_start = const_.syntax().text_range().start();

View file

@ -54,7 +54,7 @@ pub(crate) fn function_declaration(node: &ast::Fn) -> String {
buf buf
} }
pub(crate) fn const_label(node: &ast::ConstDef) -> String { pub(crate) fn const_label(node: &ast::Const) -> String {
let label: String = node let label: String = node
.syntax() .syntax()
.children_with_tokens() .children_with_tokens()

View file

@ -385,8 +385,8 @@ pub(crate) fn docs_from_symbol(db: &RootDatabase, symbol: &FileSymbol) -> Option
ast::TraitDef(it) => it.doc_comment_text(), ast::TraitDef(it) => it.doc_comment_text(),
ast::Module(it) => it.doc_comment_text(), ast::Module(it) => it.doc_comment_text(),
ast::TypeAlias(it) => it.doc_comment_text(), ast::TypeAlias(it) => it.doc_comment_text(),
ast::ConstDef(it) => it.doc_comment_text(), ast::Const(it) => it.doc_comment_text(),
ast::StaticDef(it) => it.doc_comment_text(), ast::Static(it) => it.doc_comment_text(),
ast::RecordField(it) => it.doc_comment_text(), ast::RecordField(it) => it.doc_comment_text(),
ast::Variant(it) => it.doc_comment_text(), ast::Variant(it) => it.doc_comment_text(),
ast::MacroCall(it) => it.doc_comment_text(), ast::MacroCall(it) => it.doc_comment_text(),
@ -410,8 +410,8 @@ pub(crate) fn description_from_symbol(db: &RootDatabase, symbol: &FileSymbol) ->
ast::TraitDef(it) => it.short_label(), ast::TraitDef(it) => it.short_label(),
ast::Module(it) => it.short_label(), ast::Module(it) => it.short_label(),
ast::TypeAlias(it) => it.short_label(), ast::TypeAlias(it) => it.short_label(),
ast::ConstDef(it) => it.short_label(), ast::Const(it) => it.short_label(),
ast::StaticDef(it) => it.short_label(), ast::Static(it) => it.short_label(),
ast::RecordField(it) => it.short_label(), ast::RecordField(it) => it.short_label(),
ast::Variant(it) => it.short_label(), ast::Variant(it) => it.short_label(),
_ => None, _ => None,

View file

@ -53,13 +53,13 @@ impl ShortLabel for ast::TypeAlias {
} }
} }
impl ShortLabel for ast::ConstDef { impl ShortLabel for ast::Const {
fn short_label(&self) -> Option<String> { fn short_label(&self) -> Option<String> {
short_label_from_ascribed_node(self, "const ") short_label_from_ascribed_node(self, "const ")
} }
} }
impl ShortLabel for ast::StaticDef { impl ShortLabel for ast::Static {
fn short_label(&self) -> Option<String> { fn short_label(&self) -> Option<String> {
short_label_from_ascribed_node(self, "static ") short_label_from_ascribed_node(self, "static ")
} }

View file

@ -137,8 +137,8 @@ fn structure_node(node: &SyntaxNode) -> Option<StructureNode> {
decl_with_type_ref(it, ty) decl_with_type_ref(it, ty)
}, },
ast::RecordField(it) => decl_with_ascription(it), ast::RecordField(it) => decl_with_ascription(it),
ast::ConstDef(it) => decl_with_ascription(it), ast::Const(it) => decl_with_ascription(it),
ast::StaticDef(it) => decl_with_ascription(it), ast::Static(it) => decl_with_ascription(it),
ast::ImplDef(it) => { ast::ImplDef(it) => {
let target_type = it.target_type()?; let target_type = it.target_type()?;
let target_trait = it.target_trait(); let target_trait = it.target_trait();
@ -350,7 +350,7 @@ fn very_obsolete() {}
label: "S", label: "S",
navigation_range: 201..202, navigation_range: 201..202,
node_range: 194..213, node_range: 194..213,
kind: STATIC_DEF, kind: STATIC,
detail: Some( detail: Some(
"i32", "i32",
), ),
@ -361,7 +361,7 @@ fn very_obsolete() {}
label: "C", label: "C",
navigation_range: 220..221, navigation_range: 220..221,
node_range: 214..232, node_range: 214..232,
kind: CONST_DEF, kind: CONST,
detail: Some( detail: Some(
"i32", "i32",
), ),

View file

@ -714,8 +714,8 @@ fn highlight_name_by_syntax(name: ast::Name) -> Highlight {
RECORD_FIELD => HighlightTag::Field, RECORD_FIELD => HighlightTag::Field,
MODULE => HighlightTag::Module, MODULE => HighlightTag::Module,
FN => HighlightTag::Function, FN => HighlightTag::Function,
CONST_DEF => HighlightTag::Constant, CONST => HighlightTag::Constant,
STATIC_DEF => HighlightTag::Static, STATIC => HighlightTag::Static,
VARIANT => HighlightTag::EnumVariant, VARIANT => HighlightTag::EnumVariant,
BIND_PAT => HighlightTag::Local, BIND_PAT => HighlightTag::Local,
_ => default, _ => default,

View file

@ -166,7 +166,7 @@ pub fn classify_name(sema: &Semantics<RootDatabase>, name: &ast::Name) -> Option
let def: hir::Trait = sema.to_def(&it)?; let def: hir::Trait = sema.to_def(&it)?;
Some(NameClass::Definition(Definition::ModuleDef(def.into()))) Some(NameClass::Definition(Definition::ModuleDef(def.into())))
}, },
ast::StaticDef(it) => { ast::Static(it) => {
let def: hir::Static = sema.to_def(&it)?; let def: hir::Static = sema.to_def(&it)?;
Some(NameClass::Definition(Definition::ModuleDef(def.into()))) Some(NameClass::Definition(Definition::ModuleDef(def.into())))
}, },
@ -178,7 +178,7 @@ pub fn classify_name(sema: &Semantics<RootDatabase>, name: &ast::Name) -> Option
let def: hir::Function = sema.to_def(&it)?; let def: hir::Function = sema.to_def(&it)?;
Some(NameClass::Definition(Definition::ModuleDef(def.into()))) Some(NameClass::Definition(Definition::ModuleDef(def.into())))
}, },
ast::ConstDef(it) => { ast::Const(it) => {
let def: hir::Const = sema.to_def(&it)?; let def: hir::Const = sema.to_def(&it)?;
Some(NameClass::Definition(Definition::ModuleDef(def.into()))) Some(NameClass::Definition(Definition::ModuleDef(def.into())))
}, },

View file

@ -403,8 +403,8 @@ fn to_symbol(node: &SyntaxNode) -> Option<(SmolStr, SyntaxNodePtr, TextRange)> {
ast::TraitDef(it) => decl(it), ast::TraitDef(it) => decl(it),
ast::Module(it) => decl(it), ast::Module(it) => decl(it),
ast::TypeAlias(it) => decl(it), ast::TypeAlias(it) => decl(it),
ast::ConstDef(it) => decl(it), ast::Const(it) => decl(it),
ast::StaticDef(it) => decl(it), ast::Static(it) => decl(it),
ast::MacroCall(it) => { ast::MacroCall(it) => {
if it.is_macro_rules().is_some() { if it.is_macro_rules().is_some() {
decl(it) decl(it)

View file

@ -3,11 +3,11 @@
use super::*; use super::*;
pub(super) fn static_def(p: &mut Parser, m: Marker) { pub(super) fn static_def(p: &mut Parser, m: Marker) {
const_or_static(p, m, T![static], STATIC_DEF) const_or_static(p, m, T![static], STATIC)
} }
pub(super) fn const_def(p: &mut Parser, m: Marker) { pub(super) fn const_def(p: &mut Parser, m: Marker) {
const_or_static(p, m, T![const], CONST_DEF) const_or_static(p, m, T![const], CONST)
} }
fn const_or_static(p: &mut Parser, m: Marker, kw: SyntaxKind, def: SyntaxKind) { fn const_or_static(p: &mut Parser, m: Marker, kw: SyntaxKind, def: SyntaxKind) {

View file

@ -131,8 +131,8 @@ pub enum SyntaxKind {
EXTERN_CRATE, EXTERN_CRATE,
MODULE, MODULE,
USE, USE,
STATIC_DEF, STATIC,
CONST_DEF, CONST,
TRAIT_DEF, TRAIT_DEF,
IMPL_DEF, IMPL_DEF,
TYPE_ALIAS, TYPE_ALIAS,

View file

@ -139,7 +139,7 @@ fn test_doc_comment_of_statics() {
) )
.ok() .ok()
.unwrap(); .unwrap();
let st = file.syntax().descendants().find_map(StaticDef::cast).unwrap(); let st = file.syntax().descendants().find_map(Static::cast).unwrap();
assert_eq!("Number of levels", st.doc_comment_text().unwrap()); assert_eq!("Number of levels", st.doc_comment_text().unwrap());
} }

View file

@ -28,16 +28,17 @@ impl Attr {
pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) } pub fn r_brack_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![']']) }
} }
#[derive(Debug, Clone, PartialEq, Eq, Hash)] #[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ConstDef { pub struct Const {
pub(crate) syntax: SyntaxNode, pub(crate) syntax: SyntaxNode,
} }
impl ast::AttrsOwner for ConstDef {} impl ast::AttrsOwner for Const {}
impl ast::NameOwner for ConstDef {} impl ast::NameOwner for Const {}
impl ast::VisibilityOwner for ConstDef {} impl ast::VisibilityOwner for Const {}
impl ast::TypeAscriptionOwner for ConstDef {} impl ast::TypeAscriptionOwner for Const {}
impl ConstDef { impl Const {
pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) } pub fn default_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![default]) }
pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) } pub fn const_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![const]) }
pub fn underscore_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![_]) }
pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) } pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }
pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) } pub fn eq_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![=]) }
pub fn body(&self) -> Option<Expr> { support::child(&self.syntax) } pub fn body(&self) -> Option<Expr> { support::child(&self.syntax) }
@ -139,14 +140,14 @@ impl Module {
pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) } pub fn semicolon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![;]) }
} }
#[derive(Debug, Clone, PartialEq, Eq, Hash)] #[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct StaticDef { pub struct Static {
pub(crate) syntax: SyntaxNode, pub(crate) syntax: SyntaxNode,
} }
impl ast::AttrsOwner for StaticDef {} impl ast::AttrsOwner for Static {}
impl ast::NameOwner for StaticDef {} impl ast::NameOwner for Static {}
impl ast::VisibilityOwner for StaticDef {} impl ast::VisibilityOwner for Static {}
impl ast::TypeAscriptionOwner for StaticDef {} impl ast::TypeAscriptionOwner for Static {}
impl StaticDef { impl Static {
pub fn static_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![static]) } pub fn static_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![static]) }
pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) } pub fn mut_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![mut]) }
pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) } pub fn colon_token(&self) -> Option<SyntaxToken> { support::token(&self.syntax, T![:]) }
@ -1272,7 +1273,7 @@ impl MetaItem {
} }
#[derive(Debug, Clone, PartialEq, Eq, Hash)] #[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum Item { pub enum Item {
ConstDef(ConstDef), Const(Const),
Enum(Enum), Enum(Enum),
ExternBlock(ExternBlock), ExternBlock(ExternBlock),
ExternCrate(ExternCrate), ExternCrate(ExternCrate),
@ -1280,7 +1281,7 @@ pub enum Item {
ImplDef(ImplDef), ImplDef(ImplDef),
MacroCall(MacroCall), MacroCall(MacroCall),
Module(Module), Module(Module),
StaticDef(StaticDef), Static(Static),
Struct(Struct), Struct(Struct),
TraitDef(TraitDef), TraitDef(TraitDef),
TypeAlias(TypeAlias), TypeAlias(TypeAlias),
@ -1365,7 +1366,7 @@ pub enum Expr {
pub enum AssocItem { pub enum AssocItem {
Fn(Fn), Fn(Fn),
TypeAlias(TypeAlias), TypeAlias(TypeAlias),
ConstDef(ConstDef), Const(Const),
MacroCall(MacroCall), MacroCall(MacroCall),
} }
impl ast::AttrsOwner for AssocItem {} impl ast::AttrsOwner for AssocItem {}
@ -1384,7 +1385,7 @@ pub enum AttrInput {
#[derive(Debug, Clone, PartialEq, Eq, Hash)] #[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum ExternItem { pub enum ExternItem {
Fn(Fn), Fn(Fn),
StaticDef(StaticDef), Static(Static),
} }
impl ast::AttrsOwner for ExternItem {} impl ast::AttrsOwner for ExternItem {}
impl ast::NameOwner for ExternItem {} impl ast::NameOwner for ExternItem {}
@ -1421,8 +1422,8 @@ impl AstNode for Attr {
} }
fn syntax(&self) -> &SyntaxNode { &self.syntax } fn syntax(&self) -> &SyntaxNode { &self.syntax }
} }
impl AstNode for ConstDef { impl AstNode for Const {
fn can_cast(kind: SyntaxKind) -> bool { kind == CONST_DEF } fn can_cast(kind: SyntaxKind) -> bool { kind == CONST }
fn cast(syntax: SyntaxNode) -> Option<Self> { fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) { if Self::can_cast(syntax.kind()) {
Some(Self { syntax }) Some(Self { syntax })
@ -1509,8 +1510,8 @@ impl AstNode for Module {
} }
fn syntax(&self) -> &SyntaxNode { &self.syntax } fn syntax(&self) -> &SyntaxNode { &self.syntax }
} }
impl AstNode for StaticDef { impl AstNode for Static {
fn can_cast(kind: SyntaxKind) -> bool { kind == STATIC_DEF } fn can_cast(kind: SyntaxKind) -> bool { kind == STATIC }
fn cast(syntax: SyntaxNode) -> Option<Self> { fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) { if Self::can_cast(syntax.kind()) {
Some(Self { syntax }) Some(Self { syntax })
@ -2774,8 +2775,8 @@ impl AstNode for MetaItem {
} }
fn syntax(&self) -> &SyntaxNode { &self.syntax } fn syntax(&self) -> &SyntaxNode { &self.syntax }
} }
impl From<ConstDef> for Item { impl From<Const> for Item {
fn from(node: ConstDef) -> Item { Item::ConstDef(node) } fn from(node: Const) -> Item { Item::Const(node) }
} }
impl From<Enum> for Item { impl From<Enum> for Item {
fn from(node: Enum) -> Item { Item::Enum(node) } fn from(node: Enum) -> Item { Item::Enum(node) }
@ -2798,8 +2799,8 @@ impl From<MacroCall> for Item {
impl From<Module> for Item { impl From<Module> for Item {
fn from(node: Module) -> Item { Item::Module(node) } fn from(node: Module) -> Item { Item::Module(node) }
} }
impl From<StaticDef> for Item { impl From<Static> for Item {
fn from(node: StaticDef) -> Item { Item::StaticDef(node) } fn from(node: Static) -> Item { Item::Static(node) }
} }
impl From<Struct> for Item { impl From<Struct> for Item {
fn from(node: Struct) -> Item { Item::Struct(node) } fn from(node: Struct) -> Item { Item::Struct(node) }
@ -2819,14 +2820,14 @@ impl From<Use> for Item {
impl AstNode for Item { impl AstNode for Item {
fn can_cast(kind: SyntaxKind) -> bool { fn can_cast(kind: SyntaxKind) -> bool {
match kind { match kind {
CONST_DEF | ENUM | EXTERN_BLOCK | EXTERN_CRATE | FN | IMPL_DEF | MACRO_CALL CONST | ENUM | EXTERN_BLOCK | EXTERN_CRATE | FN | IMPL_DEF | MACRO_CALL | MODULE
| MODULE | STATIC_DEF | STRUCT | TRAIT_DEF | TYPE_ALIAS | UNION | USE => true, | STATIC | STRUCT | TRAIT_DEF | TYPE_ALIAS | UNION | USE => true,
_ => false, _ => false,
} }
} }
fn cast(syntax: SyntaxNode) -> Option<Self> { fn cast(syntax: SyntaxNode) -> Option<Self> {
let res = match syntax.kind() { let res = match syntax.kind() {
CONST_DEF => Item::ConstDef(ConstDef { syntax }), CONST => Item::Const(Const { syntax }),
ENUM => Item::Enum(Enum { syntax }), ENUM => Item::Enum(Enum { syntax }),
EXTERN_BLOCK => Item::ExternBlock(ExternBlock { syntax }), EXTERN_BLOCK => Item::ExternBlock(ExternBlock { syntax }),
EXTERN_CRATE => Item::ExternCrate(ExternCrate { syntax }), EXTERN_CRATE => Item::ExternCrate(ExternCrate { syntax }),
@ -2834,7 +2835,7 @@ impl AstNode for Item {
IMPL_DEF => Item::ImplDef(ImplDef { syntax }), IMPL_DEF => Item::ImplDef(ImplDef { syntax }),
MACRO_CALL => Item::MacroCall(MacroCall { syntax }), MACRO_CALL => Item::MacroCall(MacroCall { syntax }),
MODULE => Item::Module(Module { syntax }), MODULE => Item::Module(Module { syntax }),
STATIC_DEF => Item::StaticDef(StaticDef { syntax }), STATIC => Item::Static(Static { syntax }),
STRUCT => Item::Struct(Struct { syntax }), STRUCT => Item::Struct(Struct { syntax }),
TRAIT_DEF => Item::TraitDef(TraitDef { syntax }), TRAIT_DEF => Item::TraitDef(TraitDef { syntax }),
TYPE_ALIAS => Item::TypeAlias(TypeAlias { syntax }), TYPE_ALIAS => Item::TypeAlias(TypeAlias { syntax }),
@ -2846,7 +2847,7 @@ impl AstNode for Item {
} }
fn syntax(&self) -> &SyntaxNode { fn syntax(&self) -> &SyntaxNode {
match self { match self {
Item::ConstDef(it) => &it.syntax, Item::Const(it) => &it.syntax,
Item::Enum(it) => &it.syntax, Item::Enum(it) => &it.syntax,
Item::ExternBlock(it) => &it.syntax, Item::ExternBlock(it) => &it.syntax,
Item::ExternCrate(it) => &it.syntax, Item::ExternCrate(it) => &it.syntax,
@ -2854,7 +2855,7 @@ impl AstNode for Item {
Item::ImplDef(it) => &it.syntax, Item::ImplDef(it) => &it.syntax,
Item::MacroCall(it) => &it.syntax, Item::MacroCall(it) => &it.syntax,
Item::Module(it) => &it.syntax, Item::Module(it) => &it.syntax,
Item::StaticDef(it) => &it.syntax, Item::Static(it) => &it.syntax,
Item::Struct(it) => &it.syntax, Item::Struct(it) => &it.syntax,
Item::TraitDef(it) => &it.syntax, Item::TraitDef(it) => &it.syntax,
Item::TypeAlias(it) => &it.syntax, Item::TypeAlias(it) => &it.syntax,
@ -3256,8 +3257,8 @@ impl From<Fn> for AssocItem {
impl From<TypeAlias> for AssocItem { impl From<TypeAlias> for AssocItem {
fn from(node: TypeAlias) -> AssocItem { AssocItem::TypeAlias(node) } fn from(node: TypeAlias) -> AssocItem { AssocItem::TypeAlias(node) }
} }
impl From<ConstDef> for AssocItem { impl From<Const> for AssocItem {
fn from(node: ConstDef) -> AssocItem { AssocItem::ConstDef(node) } fn from(node: Const) -> AssocItem { AssocItem::Const(node) }
} }
impl From<MacroCall> for AssocItem { impl From<MacroCall> for AssocItem {
fn from(node: MacroCall) -> AssocItem { AssocItem::MacroCall(node) } fn from(node: MacroCall) -> AssocItem { AssocItem::MacroCall(node) }
@ -3265,7 +3266,7 @@ impl From<MacroCall> for AssocItem {
impl AstNode for AssocItem { impl AstNode for AssocItem {
fn can_cast(kind: SyntaxKind) -> bool { fn can_cast(kind: SyntaxKind) -> bool {
match kind { match kind {
FN | TYPE_ALIAS | CONST_DEF | MACRO_CALL => true, FN | TYPE_ALIAS | CONST | MACRO_CALL => true,
_ => false, _ => false,
} }
} }
@ -3273,7 +3274,7 @@ impl AstNode for AssocItem {
let res = match syntax.kind() { let res = match syntax.kind() {
FN => AssocItem::Fn(Fn { syntax }), FN => AssocItem::Fn(Fn { syntax }),
TYPE_ALIAS => AssocItem::TypeAlias(TypeAlias { syntax }), TYPE_ALIAS => AssocItem::TypeAlias(TypeAlias { syntax }),
CONST_DEF => AssocItem::ConstDef(ConstDef { syntax }), CONST => AssocItem::Const(Const { syntax }),
MACRO_CALL => AssocItem::MacroCall(MacroCall { syntax }), MACRO_CALL => AssocItem::MacroCall(MacroCall { syntax }),
_ => return None, _ => return None,
}; };
@ -3283,7 +3284,7 @@ impl AstNode for AssocItem {
match self { match self {
AssocItem::Fn(it) => &it.syntax, AssocItem::Fn(it) => &it.syntax,
AssocItem::TypeAlias(it) => &it.syntax, AssocItem::TypeAlias(it) => &it.syntax,
AssocItem::ConstDef(it) => &it.syntax, AssocItem::Const(it) => &it.syntax,
AssocItem::MacroCall(it) => &it.syntax, AssocItem::MacroCall(it) => &it.syntax,
} }
} }
@ -3347,20 +3348,20 @@ impl AstNode for AttrInput {
impl From<Fn> for ExternItem { impl From<Fn> for ExternItem {
fn from(node: Fn) -> ExternItem { ExternItem::Fn(node) } fn from(node: Fn) -> ExternItem { ExternItem::Fn(node) }
} }
impl From<StaticDef> for ExternItem { impl From<Static> for ExternItem {
fn from(node: StaticDef) -> ExternItem { ExternItem::StaticDef(node) } fn from(node: Static) -> ExternItem { ExternItem::Static(node) }
} }
impl AstNode for ExternItem { impl AstNode for ExternItem {
fn can_cast(kind: SyntaxKind) -> bool { fn can_cast(kind: SyntaxKind) -> bool {
match kind { match kind {
FN | STATIC_DEF => true, FN | STATIC => true,
_ => false, _ => false,
} }
} }
fn cast(syntax: SyntaxNode) -> Option<Self> { fn cast(syntax: SyntaxNode) -> Option<Self> {
let res = match syntax.kind() { let res = match syntax.kind() {
FN => ExternItem::Fn(Fn { syntax }), FN => ExternItem::Fn(Fn { syntax }),
STATIC_DEF => ExternItem::StaticDef(StaticDef { syntax }), STATIC => ExternItem::Static(Static { syntax }),
_ => return None, _ => return None,
}; };
Some(res) Some(res)
@ -3368,7 +3369,7 @@ impl AstNode for ExternItem {
fn syntax(&self) -> &SyntaxNode { fn syntax(&self) -> &SyntaxNode {
match self { match self {
ExternItem::Fn(it) => &it.syntax, ExternItem::Fn(it) => &it.syntax,
ExternItem::StaticDef(it) => &it.syntax, ExternItem::Static(it) => &it.syntax,
} }
} }
} }
@ -3465,7 +3466,7 @@ impl std::fmt::Display for Attr {
std::fmt::Display::fmt(self.syntax(), f) std::fmt::Display::fmt(self.syntax(), f)
} }
} }
impl std::fmt::Display for ConstDef { impl std::fmt::Display for Const {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f) std::fmt::Display::fmt(self.syntax(), f)
} }
@ -3505,7 +3506,7 @@ impl std::fmt::Display for Module {
std::fmt::Display::fmt(self.syntax(), f) std::fmt::Display::fmt(self.syntax(), f)
} }
} }
impl std::fmt::Display for StaticDef { impl std::fmt::Display for Static {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f) std::fmt::Display::fmt(self.syntax(), f)
} }

View file

@ -483,8 +483,8 @@ impl ast::DocCommentsOwner for ast::Enum {}
impl ast::DocCommentsOwner for ast::Variant {} impl ast::DocCommentsOwner for ast::Variant {}
impl ast::DocCommentsOwner for ast::TraitDef {} impl ast::DocCommentsOwner for ast::TraitDef {}
impl ast::DocCommentsOwner for ast::Module {} impl ast::DocCommentsOwner for ast::Module {}
impl ast::DocCommentsOwner for ast::StaticDef {} impl ast::DocCommentsOwner for ast::Static {}
impl ast::DocCommentsOwner for ast::ConstDef {} impl ast::DocCommentsOwner for ast::Const {}
impl ast::DocCommentsOwner for ast::TypeAlias {} impl ast::DocCommentsOwner for ast::TypeAlias {}
impl ast::DocCommentsOwner for ast::ImplDef {} impl ast::DocCommentsOwner for ast::ImplDef {}
impl ast::DocCommentsOwner for ast::MacroCall {} impl ast::DocCommentsOwner for ast::MacroCall {}

View file

@ -146,8 +146,8 @@ 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 {
MACRO_CALL | CONST_DEF | TYPE_ALIAS | STRUCT | ENUM | VARIANT | FN | TRAIT_DEF MACRO_CALL | CONST | TYPE_ALIAS | STRUCT | ENUM | VARIANT | FN | TRAIT_DEF
| MODULE | RECORD_FIELD | STATIC_DEF => { | MODULE | RECORD_FIELD | STATIC => {
let mut res = 0; let mut res = 0;
let mut trivias = trivias.enumerate().peekable(); let mut trivias = trivias.enumerate().peekable();

View file

@ -4,7 +4,7 @@ mod block;
use crate::{ use crate::{
ast, match_ast, AstNode, SyntaxError, ast, match_ast, AstNode, SyntaxError,
SyntaxKind::{BYTE, BYTE_STRING, CHAR, CONST_DEF, FN, INT_NUMBER, STRING, TYPE_ALIAS}, SyntaxKind::{BYTE, BYTE_STRING, CHAR, CONST, FN, INT_NUMBER, STRING, TYPE_ALIAS},
SyntaxNode, SyntaxToken, TextSize, T, SyntaxNode, SyntaxToken, TextSize, T,
}; };
use rustc_lexer::unescape::{ use rustc_lexer::unescape::{
@ -200,7 +200,7 @@ fn validate_visibility(vis: ast::Visibility, errors: &mut Vec<SyntaxError>) {
None => return, None => return,
}; };
match parent.kind() { match parent.kind() {
FN | CONST_DEF | TYPE_ALIAS => (), FN | CONST | TYPE_ALIAS => (),
_ => return, _ => return,
} }

View file

@ -65,7 +65,7 @@ SOURCE_FILE@0..118
R_PAREN@79..80 ")" R_PAREN@79..80 ")"
SEMICOLON@80..81 ";" SEMICOLON@80..81 ";"
WHITESPACE@81..86 "\n " WHITESPACE@81..86 "\n "
CONST_DEF@86..115 CONST@86..115
VISIBILITY@86..96 VISIBILITY@86..96
PUB_KW@86..89 "pub" PUB_KW@86..89 "pub"
L_PAREN@89..90 "(" L_PAREN@89..90 "("

View file

@ -14,7 +14,7 @@ SOURCE_FILE@0..39
NAME_REF@12..19 NAME_REF@12..19
IDENT@12..19 "default" IDENT@12..19 "default"
WHITESPACE@19..20 " " WHITESPACE@19..20 " "
CONST_DEF@20..36 CONST@20..36
CONST_KW@20..25 "const" CONST_KW@20..25 "const"
WHITESPACE@25..26 " " WHITESPACE@25..26 " "
NAME@26..27 NAME@26..27

View file

@ -17,7 +17,7 @@ SOURCE_FILE@0..50
L_CURLY@22..23 "{" L_CURLY@22..23 "{"
R_CURLY@23..24 "}" R_CURLY@23..24 "}"
WHITESPACE@24..25 "\n" WHITESPACE@24..25 "\n"
CONST_DEF@25..46 CONST@25..46
UNSAFE_KW@25..31 "unsafe" UNSAFE_KW@25..31 "unsafe"
WHITESPACE@31..32 " " WHITESPACE@31..32 " "
CONST_KW@32..37 "const" CONST_KW@32..37 "const"

View file

@ -1,5 +1,5 @@
SOURCE_FILE@0..19 SOURCE_FILE@0..19
STATIC_DEF@0..18 STATIC@0..18
STATIC_KW@0..6 "static" STATIC_KW@0..6 "static"
WHITESPACE@6..7 " " WHITESPACE@6..7 " "
ERROR@7..8 ERROR@7..8

View file

@ -27,7 +27,7 @@ SOURCE_FILE@0..83
IDENT@21..26 "Clone" IDENT@21..26 "Clone"
SEMICOLON@26..27 ";" SEMICOLON@26..27 ";"
WHITESPACE@27..32 "\n " WHITESPACE@27..32 "\n "
CONST_DEF@32..45 CONST@32..45
CONST_KW@32..37 "const" CONST_KW@32..37 "const"
WHITESPACE@37..38 " " WHITESPACE@37..38 " "
NAME@38..39 NAME@38..39

View file

@ -26,7 +26,7 @@ SOURCE_FILE@0..89
IDENT@22..25 "i32" IDENT@22..25 "i32"
SEMICOLON@25..26 ";" SEMICOLON@25..26 ";"
WHITESPACE@26..31 "\n " WHITESPACE@26..31 "\n "
CONST_DEF@31..49 CONST@31..49
CONST_KW@31..36 "const" CONST_KW@31..36 "const"
WHITESPACE@36..37 " " WHITESPACE@36..37 " "
NAME@37..38 NAME@37..38

View file

@ -1,5 +1,5 @@
SOURCE_FILE@0..40 SOURCE_FILE@0..40
CONST_DEF@0..39 CONST@0..39
CONST_KW@0..5 "const" CONST_KW@0..5 "const"
WHITESPACE@5..6 " " WHITESPACE@5..6 " "
NAME@6..7 NAME@6..7

View file

@ -1,5 +1,5 @@
SOURCE_FILE@0..47 SOURCE_FILE@0..47
STATIC_DEF@0..20 STATIC@0..20
STATIC_KW@0..6 "static" STATIC_KW@0..6 "static"
WHITESPACE@6..7 " " WHITESPACE@6..7 " "
NAME@7..10 NAME@7..10
@ -18,7 +18,7 @@ SOURCE_FILE@0..47
INT_NUMBER@18..19 "1" INT_NUMBER@18..19 "1"
SEMICOLON@19..20 ";" SEMICOLON@19..20 ";"
WHITESPACE@20..21 "\n" WHITESPACE@20..21 "\n"
STATIC_DEF@21..46 STATIC@21..46
STATIC_KW@21..27 "static" STATIC_KW@21..27 "static"
WHITESPACE@27..28 " " WHITESPACE@27..28 " "
MUT_KW@28..31 "mut" MUT_KW@28..31 "mut"

View file

@ -1,5 +1,5 @@
SOURCE_FILE@0..64 SOURCE_FILE@0..64
CONST_DEF@0..17 CONST@0..17
CONST_KW@0..5 "const" CONST_KW@0..5 "const"
WHITESPACE@5..6 " " WHITESPACE@5..6 " "
UNDERSCORE@6..7 "_" UNDERSCORE@6..7 "_"
@ -17,7 +17,7 @@ SOURCE_FILE@0..64
INT_NUMBER@15..16 "0" INT_NUMBER@15..16 "0"
SEMICOLON@16..17 ";" SEMICOLON@16..17 ";"
WHITESPACE@17..18 "\n" WHITESPACE@17..18 "\n"
CONST_DEF@18..38 CONST@18..38
CONST_KW@18..23 "const" CONST_KW@18..23 "const"
WHITESPACE@23..24 " " WHITESPACE@23..24 " "
NAME@24..27 NAME@24..27
@ -36,7 +36,7 @@ SOURCE_FILE@0..64
INT_NUMBER@35..37 "92" INT_NUMBER@35..37 "92"
SEMICOLON@37..38 ";" SEMICOLON@37..38 ";"
WHITESPACE@38..39 "\n" WHITESPACE@38..39 "\n"
CONST_DEF@39..63 CONST@39..63
CONST_KW@39..44 "const" CONST_KW@39..44 "const"
WHITESPACE@44..45 " " WHITESPACE@44..45 " "
MUT_KW@45..48 "mut" MUT_KW@45..48 "mut"

View file

@ -19,7 +19,7 @@ SOURCE_FILE@0..46
ASSOC_ITEM_LIST@15..45 ASSOC_ITEM_LIST@15..45
L_CURLY@15..16 "{" L_CURLY@15..16 "{"
WHITESPACE@16..19 "\n " WHITESPACE@16..19 "\n "
CONST_DEF@19..43 CONST@19..43
DEFAULT_KW@19..26 "default" DEFAULT_KW@19..26 "default"
WHITESPACE@26..27 " " WHITESPACE@26..27 " "
CONST_KW@27..32 "const" CONST_KW@27..32 "const"

View file

@ -40,8 +40,8 @@ pub(crate) fn symbol_kind(syntax_kind: SyntaxKind) -> lsp_types::SymbolKind {
SyntaxKind::MODULE => lsp_types::SymbolKind::Module, SyntaxKind::MODULE => lsp_types::SymbolKind::Module,
SyntaxKind::TYPE_ALIAS => lsp_types::SymbolKind::TypeParameter, SyntaxKind::TYPE_ALIAS => lsp_types::SymbolKind::TypeParameter,
SyntaxKind::RECORD_FIELD => lsp_types::SymbolKind::Field, SyntaxKind::RECORD_FIELD => lsp_types::SymbolKind::Field,
SyntaxKind::STATIC_DEF => lsp_types::SymbolKind::Constant, SyntaxKind::STATIC => lsp_types::SymbolKind::Constant,
SyntaxKind::CONST_DEF => lsp_types::SymbolKind::Constant, SyntaxKind::CONST => lsp_types::SymbolKind::Constant,
SyntaxKind::IMPL_DEF => lsp_types::SymbolKind::Object, SyntaxKind::IMPL_DEF => lsp_types::SymbolKind::Object,
_ => lsp_types::SymbolKind::Variable, _ => lsp_types::SymbolKind::Variable,
} }

View file

@ -101,8 +101,8 @@ pub(crate) const KINDS_SRC: KindsSrc = KindsSrc {
"EXTERN_CRATE", "EXTERN_CRATE",
"MODULE", "MODULE",
"USE", "USE",
"STATIC_DEF", "STATIC",
"CONST_DEF", "CONST",
"TRAIT_DEF", "TRAIT_DEF",
"IMPL_DEF", "IMPL_DEF",
"TYPE_ALIAS", "TYPE_ALIAS",

View file

@ -4,7 +4,7 @@ SourceFile =
Item* Item*
Item = Item =
ConstDef Const
| Enum | Enum
| ExternBlock | ExternBlock
| ExternCrate | ExternCrate
@ -12,7 +12,7 @@ Item =
| ImplDef | ImplDef
| MacroCall | MacroCall
| Module | Module
| StaticDef | Static
| Struct | Struct
| TraitDef | TraitDef
| TypeAlias | TypeAlias
@ -112,6 +112,14 @@ Union =
Attr* Visibility? 'union' Name GenericParamList? WhereClause? Attr* Visibility? 'union' Name GenericParamList? WhereClause?
RecordFieldList RecordFieldList
Const =
Attr* Visibility? 'default'? 'const' (Name | '_') ':' ascribed_type:TypeRef
'=' body:Expr ';'
Static =
Attr* Visibility? 'static'? 'mut'? Name ':' ascribed_type:TypeRef
'=' body:Expr ';'
TraitDef = TraitDef =
Attr* Visibility? 'unsafe'? 'auto'? 'trait' Name GenericParamList Attr* Visibility? 'unsafe'? 'auto'? 'trait' Name GenericParamList
(':' TypeBoundList?)? WhereClause (':' TypeBoundList?)? WhereClause
@ -120,14 +128,6 @@ TraitDef =
AssocItemList = AssocItemList =
'{' AssocItem* '}' '{' AssocItem* '}'
ConstDef =
Attr* Visibility? 'default'? 'const' Name ':' ascribed_type:TypeRef
'=' body:Expr ';'
StaticDef =
Attr* Visibility? 'static'? 'mut'? 'static' Name ':' ascribed_type:TypeRef
'=' body:Expr ';'
ImplDef = ImplDef =
Attr* Visibility? 'const'? 'default'? 'unsafe'? 'impl' GenericParamList? '!'? 'for' Attr* Visibility? 'const'? 'default'? 'unsafe'? 'impl' GenericParamList? '!'? 'for'
WhereClause? WhereClause?
@ -475,11 +475,11 @@ TypeRef =
AssocItem = AssocItem =
Fn Fn
| TypeAlias | TypeAlias
| ConstDef | Const
| MacroCall | MacroCall
ExternItem = ExternItem =
Fn | StaticDef Fn | Static
AttrInput = AttrInput =
Literal Literal