mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 06:44:35 +00:00
rust-analyzer guided enum variant structification
This commit is contained in:
parent
35d06f9c74
commit
b08a557f80
@ -2890,6 +2890,9 @@ pub struct Fn {
|
|||||||
pub body: Option<P<Block>>,
|
pub body: Option<P<Block>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Encodable, Decodable, Debug)]
|
||||||
|
pub struct Static(pub P<Ty>, pub Mutability, pub Option<P<Expr>>);
|
||||||
|
|
||||||
#[derive(Clone, Encodable, Decodable, Debug)]
|
#[derive(Clone, Encodable, Decodable, Debug)]
|
||||||
pub enum ItemKind {
|
pub enum ItemKind {
|
||||||
/// An `extern crate` item, with the optional *original* crate name if the crate was renamed.
|
/// An `extern crate` item, with the optional *original* crate name if the crate was renamed.
|
||||||
@ -2903,7 +2906,7 @@ pub enum ItemKind {
|
|||||||
/// A static item (`static`).
|
/// A static item (`static`).
|
||||||
///
|
///
|
||||||
/// E.g., `static FOO: i32 = 42;` or `static FOO: &'static str = "bar";`.
|
/// E.g., `static FOO: i32 = 42;` or `static FOO: &'static str = "bar";`.
|
||||||
Static(P<Ty>, Mutability, Option<P<Expr>>),
|
Static(Static),
|
||||||
/// A constant item (`const`).
|
/// A constant item (`const`).
|
||||||
///
|
///
|
||||||
/// E.g., `const FOO: i32 = 42;`.
|
/// E.g., `const FOO: i32 = 42;`.
|
||||||
@ -2975,7 +2978,7 @@ impl ItemKind {
|
|||||||
match self {
|
match self {
|
||||||
ItemKind::ExternCrate(..) => "extern crate",
|
ItemKind::ExternCrate(..) => "extern crate",
|
||||||
ItemKind::Use(..) => "`use` import",
|
ItemKind::Use(..) => "`use` import",
|
||||||
ItemKind::Static(..) => "static item",
|
ItemKind::Static(Static(..)) => "static item",
|
||||||
ItemKind::Const(..) => "constant item",
|
ItemKind::Const(..) => "constant item",
|
||||||
ItemKind::Fn(..) => "function",
|
ItemKind::Fn(..) => "function",
|
||||||
ItemKind::Mod(..) => "module",
|
ItemKind::Mod(..) => "module",
|
||||||
@ -3084,7 +3087,7 @@ pub enum ForeignItemKind {
|
|||||||
impl From<ForeignItemKind> for ItemKind {
|
impl From<ForeignItemKind> for ItemKind {
|
||||||
fn from(foreign_item_kind: ForeignItemKind) -> ItemKind {
|
fn from(foreign_item_kind: ForeignItemKind) -> ItemKind {
|
||||||
match foreign_item_kind {
|
match foreign_item_kind {
|
||||||
ForeignItemKind::Static(a, b, c) => ItemKind::Static(a, b, c),
|
ForeignItemKind::Static(a, b, c) => ItemKind::Static(Static(a, b, c)),
|
||||||
ForeignItemKind::Fn(fn_kind) => ItemKind::Fn(fn_kind),
|
ForeignItemKind::Fn(fn_kind) => ItemKind::Fn(fn_kind),
|
||||||
ForeignItemKind::TyAlias(ty_alias_kind) => ItemKind::TyAlias(ty_alias_kind),
|
ForeignItemKind::TyAlias(ty_alias_kind) => ItemKind::TyAlias(ty_alias_kind),
|
||||||
ForeignItemKind::MacCall(a) => ItemKind::MacCall(a),
|
ForeignItemKind::MacCall(a) => ItemKind::MacCall(a),
|
||||||
@ -3097,7 +3100,7 @@ impl TryFrom<ItemKind> for ForeignItemKind {
|
|||||||
|
|
||||||
fn try_from(item_kind: ItemKind) -> Result<ForeignItemKind, ItemKind> {
|
fn try_from(item_kind: ItemKind) -> Result<ForeignItemKind, ItemKind> {
|
||||||
Ok(match item_kind {
|
Ok(match item_kind {
|
||||||
ItemKind::Static(a, b, c) => ForeignItemKind::Static(a, b, c),
|
ItemKind::Static(Static(a, b, c)) => ForeignItemKind::Static(a, b, c),
|
||||||
ItemKind::Fn(fn_kind) => ForeignItemKind::Fn(fn_kind),
|
ItemKind::Fn(fn_kind) => ForeignItemKind::Fn(fn_kind),
|
||||||
ItemKind::TyAlias(ty_alias_kind) => ForeignItemKind::TyAlias(ty_alias_kind),
|
ItemKind::TyAlias(ty_alias_kind) => ForeignItemKind::TyAlias(ty_alias_kind),
|
||||||
ItemKind::MacCall(a) => ForeignItemKind::MacCall(a),
|
ItemKind::MacCall(a) => ForeignItemKind::MacCall(a),
|
||||||
|
@ -7,10 +7,10 @@
|
|||||||
//! a `MutVisitor` renaming item names in a module will miss all of those
|
//! a `MutVisitor` renaming item names in a module will miss all of those
|
||||||
//! that are created by the expansion of a macro.
|
//! that are created by the expansion of a macro.
|
||||||
|
|
||||||
use crate::ast::*;
|
|
||||||
use crate::ptr::P;
|
use crate::ptr::P;
|
||||||
use crate::token::{self, Token};
|
use crate::token::{self, Token};
|
||||||
use crate::tokenstream::*;
|
use crate::tokenstream::*;
|
||||||
|
use crate::{ast::*, Static};
|
||||||
|
|
||||||
use rustc_data_structures::flat_map_in_place::FlatMapInPlace;
|
use rustc_data_structures::flat_map_in_place::FlatMapInPlace;
|
||||||
use rustc_data_structures::sync::Lrc;
|
use rustc_data_structures::sync::Lrc;
|
||||||
@ -1030,7 +1030,7 @@ pub fn noop_visit_item_kind<T: MutVisitor>(kind: &mut ItemKind, vis: &mut T) {
|
|||||||
match kind {
|
match kind {
|
||||||
ItemKind::ExternCrate(_orig_name) => {}
|
ItemKind::ExternCrate(_orig_name) => {}
|
||||||
ItemKind::Use(use_tree) => vis.visit_use_tree(use_tree),
|
ItemKind::Use(use_tree) => vis.visit_use_tree(use_tree),
|
||||||
ItemKind::Static(ty, _, expr) => {
|
ItemKind::Static(Static(ty, _, expr)) => {
|
||||||
vis.visit_ty(ty);
|
vis.visit_ty(ty);
|
||||||
visit_opt(expr, |expr| vis.visit_expr(expr));
|
visit_opt(expr, |expr| vis.visit_expr(expr));
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
//! instance, a walker looking for item names in a module will miss all of
|
//! instance, a walker looking for item names in a module will miss all of
|
||||||
//! those that are created by the expansion of a macro.
|
//! those that are created by the expansion of a macro.
|
||||||
|
|
||||||
use crate::ast::*;
|
use crate::{ast::*, Static};
|
||||||
|
|
||||||
use rustc_span::symbol::Ident;
|
use rustc_span::symbol::Ident;
|
||||||
use rustc_span::Span;
|
use rustc_span::Span;
|
||||||
@ -305,7 +305,7 @@ pub fn walk_item<'a, V: Visitor<'a>>(visitor: &mut V, item: &'a Item) {
|
|||||||
match &item.kind {
|
match &item.kind {
|
||||||
ItemKind::ExternCrate(_) => {}
|
ItemKind::ExternCrate(_) => {}
|
||||||
ItemKind::Use(use_tree) => visitor.visit_use_tree(use_tree, item.id, false),
|
ItemKind::Use(use_tree) => visitor.visit_use_tree(use_tree, item.id, false),
|
||||||
ItemKind::Static(typ, _, expr) | ItemKind::Const(_, typ, expr) => {
|
ItemKind::Static(Static(typ, _, expr)) | ItemKind::Const(_, typ, expr) => {
|
||||||
visitor.visit_ty(typ);
|
visitor.visit_ty(typ);
|
||||||
walk_list!(visitor, visit_expr, expr);
|
walk_list!(visitor, visit_expr, expr);
|
||||||
}
|
}
|
||||||
|
@ -229,7 +229,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
|
|||||||
|
|
||||||
self.lower_use_tree(use_tree, &prefix, id, vis_span, ident, attrs)
|
self.lower_use_tree(use_tree, &prefix, id, vis_span, ident, attrs)
|
||||||
}
|
}
|
||||||
ItemKind::Static(t, m, e) => {
|
ItemKind::Static(ast::Static(t, m, e)) => {
|
||||||
let (ty, body_id) = self.lower_const_item(t, span, e.as_deref());
|
let (ty, body_id) = self.lower_const_item(t, span, e.as_deref());
|
||||||
hir::ItemKind::Static(ty, *m, body_id)
|
hir::ItemKind::Static(ty, *m, body_id)
|
||||||
}
|
}
|
||||||
|
@ -9,8 +9,8 @@
|
|||||||
use itertools::{Either, Itertools};
|
use itertools::{Either, Itertools};
|
||||||
use rustc_ast::ptr::P;
|
use rustc_ast::ptr::P;
|
||||||
use rustc_ast::visit::{self, AssocCtxt, BoundKind, FnCtxt, FnKind, Visitor};
|
use rustc_ast::visit::{self, AssocCtxt, BoundKind, FnCtxt, FnKind, Visitor};
|
||||||
use rustc_ast::walk_list;
|
|
||||||
use rustc_ast::*;
|
use rustc_ast::*;
|
||||||
|
use rustc_ast::{walk_list, Static};
|
||||||
use rustc_ast_pretty::pprust::{self, State};
|
use rustc_ast_pretty::pprust::{self, State};
|
||||||
use rustc_data_structures::fx::FxIndexMap;
|
use rustc_data_structures::fx::FxIndexMap;
|
||||||
use rustc_macros::Subdiagnostic;
|
use rustc_macros::Subdiagnostic;
|
||||||
@ -990,7 +990,7 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
|
|||||||
replace_span: self.ending_semi_or_hi(item.span),
|
replace_span: self.ending_semi_or_hi(item.span),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
ItemKind::Static(.., None) => {
|
ItemKind::Static(Static(.., None)) => {
|
||||||
self.session.emit_err(errors::StaticWithoutBody {
|
self.session.emit_err(errors::StaticWithoutBody {
|
||||||
span: item.span,
|
span: item.span,
|
||||||
replace_span: self.ending_semi_or_hi(item.span),
|
replace_span: self.ending_semi_or_hi(item.span),
|
||||||
|
@ -2,6 +2,7 @@ use crate::pp::Breaks::Inconsistent;
|
|||||||
use crate::pprust::state::delimited::IterDelimited;
|
use crate::pprust::state::delimited::IterDelimited;
|
||||||
use crate::pprust::state::{AnnNode, PrintState, State, INDENT_UNIT};
|
use crate::pprust::state::{AnnNode, PrintState, State, INDENT_UNIT};
|
||||||
|
|
||||||
|
use ast::Static;
|
||||||
use rustc_ast as ast;
|
use rustc_ast as ast;
|
||||||
use rustc_ast::GenericBound;
|
use rustc_ast::GenericBound;
|
||||||
use rustc_ast::ModKind;
|
use rustc_ast::ModKind;
|
||||||
@ -156,7 +157,7 @@ impl<'a> State<'a> {
|
|||||||
self.print_use_tree(tree);
|
self.print_use_tree(tree);
|
||||||
self.word(";");
|
self.word(";");
|
||||||
}
|
}
|
||||||
ast::ItemKind::Static(ty, mutbl, body) => {
|
ast::ItemKind::Static(Static(ty, mutbl, body)) => {
|
||||||
let def = ast::Defaultness::Final;
|
let def = ast::Defaultness::Final;
|
||||||
self.print_item_const(
|
self.print_item_const(
|
||||||
item.ident,
|
item.ident,
|
||||||
|
@ -25,12 +25,12 @@ pub fn expand(
|
|||||||
// FIXME - if we get deref patterns, use them to reduce duplication here
|
// FIXME - if we get deref patterns, use them to reduce duplication here
|
||||||
let (item, is_stmt, ty_span) =
|
let (item, is_stmt, ty_span) =
|
||||||
if let Annotatable::Item(item) = &item
|
if let Annotatable::Item(item) = &item
|
||||||
&& let ItemKind::Static(ty, ..) = &item.kind
|
&& let ItemKind::Static(ast::Static(ty, ..)) = &item.kind
|
||||||
{
|
{
|
||||||
(item, false, ecx.with_def_site_ctxt(ty.span))
|
(item, false, ecx.with_def_site_ctxt(ty.span))
|
||||||
} else if let Annotatable::Stmt(stmt) = &item
|
} else if let Annotatable::Stmt(stmt) = &item
|
||||||
&& let StmtKind::Item(item) = &stmt.kind
|
&& let StmtKind::Item(item) = &stmt.kind
|
||||||
&& let ItemKind::Static(ty, ..) = &item.kind
|
&& let ItemKind::Static(ast::Static(ty, ..)) = &item.kind
|
||||||
{
|
{
|
||||||
(item, true, ecx.with_def_site_ctxt(ty.span))
|
(item, true, ecx.with_def_site_ctxt(ty.span))
|
||||||
} else {
|
} else {
|
||||||
|
@ -623,7 +623,12 @@ impl<'a> ExtCtxt<'a> {
|
|||||||
mutbl: ast::Mutability,
|
mutbl: ast::Mutability,
|
||||||
expr: P<ast::Expr>,
|
expr: P<ast::Expr>,
|
||||||
) -> P<ast::Item> {
|
) -> P<ast::Item> {
|
||||||
self.item(span, name, AttrVec::new(), ast::ItemKind::Static(ty, mutbl, Some(expr)))
|
self.item(
|
||||||
|
span,
|
||||||
|
name,
|
||||||
|
AttrVec::new(),
|
||||||
|
ast::ItemKind::Static(ast::Static(ty, mutbl, Some(expr))),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn item_const(
|
pub fn item_const(
|
||||||
|
@ -43,6 +43,7 @@ use crate::{
|
|||||||
types::{transparent_newtype_field, CItemKind},
|
types::{transparent_newtype_field, CItemKind},
|
||||||
EarlyContext, EarlyLintPass, LateContext, LateLintPass, LintContext,
|
EarlyContext, EarlyLintPass, LateContext, LateLintPass, LintContext,
|
||||||
};
|
};
|
||||||
|
use ast::Static;
|
||||||
use hir::IsAsync;
|
use hir::IsAsync;
|
||||||
use rustc_ast::attr;
|
use rustc_ast::attr;
|
||||||
use rustc_ast::tokenstream::{TokenStream, TokenTree};
|
use rustc_ast::tokenstream::{TokenStream, TokenTree};
|
||||||
@ -370,7 +371,7 @@ impl EarlyLintPass for UnsafeCode {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ast::ItemKind::Static(..) => {
|
ast::ItemKind::Static(Static(..)) => {
|
||||||
if let Some(attr) = attr::find_by_name(&it.attrs, sym::no_mangle) {
|
if let Some(attr) = attr::find_by_name(&it.attrs, sym::no_mangle) {
|
||||||
self.report_unsafe(cx, attr.span, BuiltinUnsafe::NoMangleStatic);
|
self.report_unsafe(cx, attr.span, BuiltinUnsafe::NoMangleStatic);
|
||||||
}
|
}
|
||||||
|
@ -805,7 +805,7 @@ trait UnusedDelimLint {
|
|||||||
fn check_item(&mut self, cx: &EarlyContext<'_>, item: &ast::Item) {
|
fn check_item(&mut self, cx: &EarlyContext<'_>, item: &ast::Item) {
|
||||||
use ast::ItemKind::*;
|
use ast::ItemKind::*;
|
||||||
|
|
||||||
if let Const(.., Some(expr)) | Static(.., Some(expr)) = &item.kind {
|
if let Const(.., Some(expr)) | Static(ast::Static(.., Some(expr))) = &item.kind {
|
||||||
self.check_unused_delims_expr(
|
self.check_unused_delims_expr(
|
||||||
cx,
|
cx,
|
||||||
expr,
|
expr,
|
||||||
|
@ -3,6 +3,7 @@ use crate::errors;
|
|||||||
use super::diagnostics::{dummy_arg, ConsumeClosingDelim};
|
use super::diagnostics::{dummy_arg, ConsumeClosingDelim};
|
||||||
use super::ty::{AllowPlus, RecoverQPath, RecoverReturnSign};
|
use super::ty::{AllowPlus, RecoverQPath, RecoverReturnSign};
|
||||||
use super::{AttrWrapper, FollowedByType, ForceCollect, Parser, PathStyle, TrailingToken};
|
use super::{AttrWrapper, FollowedByType, ForceCollect, Parser, PathStyle, TrailingToken};
|
||||||
|
use ast::Static;
|
||||||
use rustc_ast::ast::*;
|
use rustc_ast::ast::*;
|
||||||
use rustc_ast::ptr::P;
|
use rustc_ast::ptr::P;
|
||||||
use rustc_ast::token::{self, Delimiter, TokenKind};
|
use rustc_ast::token::{self, Delimiter, TokenKind};
|
||||||
@ -227,7 +228,7 @@ impl<'a> Parser<'a> {
|
|||||||
self.bump(); // `static`
|
self.bump(); // `static`
|
||||||
let m = self.parse_mutability();
|
let m = self.parse_mutability();
|
||||||
let (ident, ty, expr) = self.parse_item_global(Some(m))?;
|
let (ident, ty, expr) = self.parse_item_global(Some(m))?;
|
||||||
(ident, ItemKind::Static(ty, m, expr))
|
(ident, ItemKind::Static(Static(ty, m, expr)))
|
||||||
} else if let Const::Yes(const_span) = self.parse_constness(Case::Sensitive) {
|
} else if let Const::Yes(const_span) = self.parse_constness(Case::Sensitive) {
|
||||||
// CONST ITEM
|
// CONST ITEM
|
||||||
if self.token.is_keyword(kw::Impl) {
|
if self.token.is_keyword(kw::Impl) {
|
||||||
@ -862,7 +863,7 @@ impl<'a> Parser<'a> {
|
|||||||
let kind = match AssocItemKind::try_from(kind) {
|
let kind = match AssocItemKind::try_from(kind) {
|
||||||
Ok(kind) => kind,
|
Ok(kind) => kind,
|
||||||
Err(kind) => match kind {
|
Err(kind) => match kind {
|
||||||
ItemKind::Static(a, _, b) => {
|
ItemKind::Static(Static(a, _, b)) => {
|
||||||
self.sess.emit_err(errors::AssociatedStaticItemNotAllowed { span });
|
self.sess.emit_err(errors::AssociatedStaticItemNotAllowed { span });
|
||||||
AssocItemKind::Const(Defaultness::Final, a, b)
|
AssocItemKind::Const(Defaultness::Final, a, b)
|
||||||
}
|
}
|
||||||
|
@ -688,7 +688,7 @@ impl<'a, 'b, 'tcx> BuildReducedGraphVisitor<'a, 'b, 'tcx> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// These items live in the value namespace.
|
// These items live in the value namespace.
|
||||||
ItemKind::Static(_, mt, _) => {
|
ItemKind::Static(ast::Static(_, mt, _)) => {
|
||||||
let res = Res::Def(DefKind::Static(mt), def_id);
|
let res = Res::Def(DefKind::Static(mt), def_id);
|
||||||
self.r.define(parent, ident, ValueNS, (res, vis, sp, expansion));
|
self.r.define(parent, ident, ValueNS, (res, vis, sp, expansion));
|
||||||
}
|
}
|
||||||
|
@ -2346,7 +2346,7 @@ impl<'a: 'ast, 'b, 'ast, 'tcx> LateResolutionVisitor<'a, 'b, 'ast, 'tcx> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemKind::Static(ref ty, _, ref expr) | ItemKind::Const(_, ref ty, ref expr) => {
|
ItemKind::Static(ast::Static(ref ty, _, ref expr)) | ItemKind::Const(_, ref ty, ref expr) => {
|
||||||
self.with_static_rib(|this| {
|
self.with_static_rib(|this| {
|
||||||
this.with_lifetime_rib(LifetimeRibKind::Elided(LifetimeRes::Static), |this| {
|
this.with_lifetime_rib(LifetimeRibKind::Elided(LifetimeRes::Static), |this| {
|
||||||
this.visit_ty(ty);
|
this.visit_ty(ty);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
use clippy_utils::diagnostics::span_lint_and_then;
|
use clippy_utils::diagnostics::span_lint_and_then;
|
||||||
use clippy_utils::msrvs::{self, Msrv};
|
use clippy_utils::msrvs::{self, Msrv};
|
||||||
use clippy_utils::source::snippet;
|
use clippy_utils::source::snippet;
|
||||||
use rustc_ast::ast::{Item, ItemKind, Ty, TyKind};
|
use rustc_ast::ast::{Item, ItemKind, Ty, TyKind, Static};
|
||||||
use rustc_errors::Applicability;
|
use rustc_errors::Applicability;
|
||||||
use rustc_lint::{EarlyContext, EarlyLintPass};
|
use rustc_lint::{EarlyContext, EarlyLintPass};
|
||||||
use rustc_session::{declare_tool_lint, impl_lint_pass};
|
use rustc_session::{declare_tool_lint, impl_lint_pass};
|
||||||
@ -106,7 +106,7 @@ impl EarlyLintPass for RedundantStaticLifetimes {
|
|||||||
// #2438)
|
// #2438)
|
||||||
}
|
}
|
||||||
|
|
||||||
if let ItemKind::Static(ref var_type, _, _) = item.kind {
|
if let ItemKind::Static(Static(ref var_type, _, _)) = item.kind {
|
||||||
Self::visit_type(var_type, cx, "statics have by default a `'static` lifetime");
|
Self::visit_type(var_type, cx, "statics have by default a `'static` lifetime");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -286,7 +286,7 @@ pub fn eq_item_kind(l: &ItemKind, r: &ItemKind) -> bool {
|
|||||||
match (l, r) {
|
match (l, r) {
|
||||||
(ExternCrate(l), ExternCrate(r)) => l == r,
|
(ExternCrate(l), ExternCrate(r)) => l == r,
|
||||||
(Use(l), Use(r)) => eq_use_tree(l, r),
|
(Use(l), Use(r)) => eq_use_tree(l, r),
|
||||||
(Static(lt, lm, le), Static(rt, rm, re)) => lm == rm && eq_ty(lt, rt) && eq_expr_opt(le, re),
|
(Static(ast::Static(lt, lm, le)), Static(ast::Static(rt, rm, re))) => lm == rm && eq_ty(lt, rt) && eq_expr_opt(le, re),
|
||||||
(Const(ld, lt, le), Const(rd, rt, re)) => eq_defaultness(*ld, *rd) && eq_ty(lt, rt) && eq_expr_opt(le, re),
|
(Const(ld, lt, le), Const(rd, rt, re)) => eq_defaultness(*ld, *rd) && eq_ty(lt, rt) && eq_expr_opt(le, re),
|
||||||
(
|
(
|
||||||
Fn(box ast::Fn {
|
Fn(box ast::Fn {
|
||||||
|
@ -1805,7 +1805,7 @@ pub(crate) struct StaticParts<'a> {
|
|||||||
impl<'a> StaticParts<'a> {
|
impl<'a> StaticParts<'a> {
|
||||||
pub(crate) fn from_item(item: &'a ast::Item) -> Self {
|
pub(crate) fn from_item(item: &'a ast::Item) -> Self {
|
||||||
let (defaultness, prefix, ty, mutability, expr) = match item.kind {
|
let (defaultness, prefix, ty, mutability, expr) = match item.kind {
|
||||||
ast::ItemKind::Static(ref ty, mutability, ref expr) => {
|
ast::ItemKind::Static(ast::Static(ref ty, mutability, ref expr)) => {
|
||||||
(None, "static", ty, mutability, expr)
|
(None, "static", ty, mutability, expr)
|
||||||
}
|
}
|
||||||
ast::ItemKind::Const(defaultness, ref ty, ref expr) => {
|
ast::ItemKind::Const(defaultness, ref ty, ref expr) => {
|
||||||
|
Loading…
Reference in New Issue
Block a user