Skip to content

Commit 9816915

Browse files
committed
Change DefKind::Static to a struct variant
1 parent 12e2846 commit 9816915

File tree

47 files changed

+90
-86
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+90
-86
lines changed

compiler/rustc_ast_lowering/src/asm.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
196196
.get_partial_res(sym.id)
197197
.and_then(|res| res.full_res())
198198
.and_then(|res| match res {
199-
Res::Def(DefKind::Static(_), def_id) => Some(def_id),
199+
Res::Def(DefKind::Static { .. }, def_id) => Some(def_id),
200200
_ => None,
201201
});
202202

compiler/rustc_codegen_ssa/src/back/symbol_export.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ fn reachable_non_generics_provider(tcx: TyCtxt<'_>, _: LocalCrate) -> DefIdMap<S
8787

8888
// Only consider nodes that actually have exported symbols.
8989
match tcx.def_kind(def_id) {
90-
DefKind::Fn | DefKind::Static(_) => {}
90+
DefKind::Fn | DefKind::Static { .. } => {}
9191
DefKind::AssocFn if tcx.impl_of_method(def_id.to_def_id()).is_some() => {}
9292
_ => return None,
9393
};
@@ -483,7 +483,7 @@ fn symbol_export_level(tcx: TyCtxt<'_>, sym_def_id: DefId) -> SymbolExportLevel
483483
let target = &tcx.sess.target.llvm_target;
484484
// WebAssembly cannot export data symbols, so reduce their export level
485485
if target.contains("emscripten") {
486-
if let DefKind::Static(_) = tcx.def_kind(sym_def_id) {
486+
if let DefKind::Static { .. } = tcx.def_kind(sym_def_id) {
487487
return SymbolExportLevel::Rust;
488488
}
489489
}

compiler/rustc_const_eval/src/const_eval/eval_queries.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ fn eval_body_using_ecx<'mir, 'tcx>(
3737
|| matches!(
3838
ecx.tcx.def_kind(cid.instance.def_id()),
3939
DefKind::Const
40-
| DefKind::Static(_)
40+
| DefKind::Static { .. }
4141
| DefKind::ConstParam
4242
| DefKind::AnonConst
4343
| DefKind::InlineConst

compiler/rustc_const_eval/src/interpret/validity.rs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -457,15 +457,16 @@ impl<'rt, 'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> ValidityVisitor<'rt, 'mir, '
457457
// Special handling for pointers to statics (irrespective of their type).
458458
assert!(!self.ecx.tcx.is_thread_local_static(did));
459459
assert!(self.ecx.tcx.is_static(did));
460-
let is_mut =
461-
matches!(self.ecx.tcx.def_kind(did), DefKind::Static(Mutability::Mut))
462-
|| !self
463-
.ecx
464-
.tcx
465-
.type_of(did)
466-
.no_bound_vars()
467-
.expect("statics should not have generic parameters")
468-
.is_freeze(*self.ecx.tcx, ty::ParamEnv::reveal_all());
460+
let is_mut = matches!(
461+
self.ecx.tcx.def_kind(did),
462+
DefKind::Static { mt: Mutability::Mut }
463+
) || !self
464+
.ecx
465+
.tcx
466+
.type_of(did)
467+
.no_bound_vars()
468+
.expect("statics should not have generic parameters")
469+
.is_freeze(*self.ecx.tcx, ty::ParamEnv::reveal_all());
469470
// Mode-specific checks
470471
match self.ctfe_mode {
471472
Some(

compiler/rustc_hir/src/def.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,10 @@ pub enum DefKind {
7575
Const,
7676
/// Constant generic parameter: `struct Foo<const N: usize> { ... }`
7777
ConstParam,
78-
Static(ast::Mutability),
78+
Static {
79+
/// Whether it's a `static mut` or just a `static`.
80+
mt: ast::Mutability,
81+
},
7982
/// Refers to the struct or enum variant's constructor.
8083
///
8184
/// The reason `Ctor` exists in addition to [`DefKind::Struct`] and
@@ -136,7 +139,7 @@ impl DefKind {
136139
DefKind::Fn => "function",
137140
DefKind::Mod if def_id.is_crate_root() && !def_id.is_local() => "crate",
138141
DefKind::Mod => "module",
139-
DefKind::Static(..) => "static",
142+
DefKind::Static { .. } => "static",
140143
DefKind::Enum => "enum",
141144
DefKind::Variant => "variant",
142145
DefKind::Ctor(CtorOf::Variant, CtorKind::Fn) => "tuple variant",
@@ -209,7 +212,7 @@ impl DefKind {
209212
DefKind::Fn
210213
| DefKind::Const
211214
| DefKind::ConstParam
212-
| DefKind::Static(..)
215+
| DefKind::Static { .. }
213216
| DefKind::Ctor(..)
214217
| DefKind::AssocFn
215218
| DefKind::AssocConst => Some(Namespace::ValueNS),
@@ -248,7 +251,7 @@ impl DefKind {
248251
DefKind::Fn
249252
| DefKind::Const
250253
| DefKind::ConstParam
251-
| DefKind::Static(..)
254+
| DefKind::Static { .. }
252255
| DefKind::AssocFn
253256
| DefKind::AssocConst
254257
| DefKind::Field => DefPathData::ValueNs(name),
@@ -278,7 +281,7 @@ impl DefKind {
278281
| DefKind::AssocFn
279282
| DefKind::Ctor(..)
280283
| DefKind::Closure
281-
| DefKind::Static(_) => true,
284+
| DefKind::Static { .. } => true,
282285
DefKind::Mod
283286
| DefKind::Struct
284287
| DefKind::Union

compiler/rustc_hir/src/hir.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1616,7 +1616,7 @@ impl Expr<'_> {
16161616
pub fn is_place_expr(&self, mut allow_projections_from: impl FnMut(&Self) -> bool) -> bool {
16171617
match self.kind {
16181618
ExprKind::Path(QPath::Resolved(_, ref path)) => {
1619-
matches!(path.res, Res::Local(..) | Res::Def(DefKind::Static(_), _) | Res::Err)
1619+
matches!(path.res, Res::Local(..) | Res::Def(DefKind::Static { .. }, _) | Res::Err)
16201620
}
16211621

16221622
// Type ascription inherits its place expression kind from its

compiler/rustc_hir/src/target.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ impl Target {
107107
match item.kind {
108108
ItemKind::ExternCrate(..) => Target::ExternCrate,
109109
ItemKind::Use(..) => Target::Use,
110-
ItemKind::Static(..) => Target::Static,
110+
ItemKind::Static { .. } => Target::Static,
111111
ItemKind::Const(..) => Target::Const,
112112
ItemKind::Fn(..) => Target::Fn,
113113
ItemKind::Macro(..) => Target::MacroDef,
@@ -130,7 +130,7 @@ impl Target {
130130
match def_kind {
131131
DefKind::ExternCrate => Target::ExternCrate,
132132
DefKind::Use => Target::Use,
133-
DefKind::Static(..) => Target::Static,
133+
DefKind::Static { .. } => Target::Static,
134134
DefKind::Const => Target::Const,
135135
DefKind::Fn => Target::Fn,
136136
DefKind::Macro(..) => Target::MacroDef,

compiler/rustc_hir_analysis/src/astconv/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1934,7 +1934,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
19341934
}
19351935

19361936
// Case 3. Reference to a top-level value.
1937-
DefKind::Fn | DefKind::Const | DefKind::ConstParam | DefKind::Static(_) => {
1937+
DefKind::Fn | DefKind::Const | DefKind::ConstParam | DefKind::Static { .. } => {
19381938
path_segs.push(PathSeg(def_id, last));
19391939
}
19401940

compiler/rustc_hir_analysis/src/check/check.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ fn check_static_inhabited(tcx: TyCtxt<'_>, def_id: LocalDefId) {
226226
Ok(l) => l,
227227
// Foreign statics that overflow their allowed size should emit an error
228228
Err(LayoutError::SizeOverflow(_))
229-
if matches!(tcx.def_kind(def_id), DefKind::Static(_)
229+
if matches!(tcx.def_kind(def_id), DefKind::Static{..}
230230
if tcx.def_kind(tcx.local_parent(def_id)) == DefKind::ForeignMod) =>
231231
{
232232
tcx.dcx().emit_err(errors::TooLargeStatic { span });
@@ -505,7 +505,7 @@ fn check_static_linkage(tcx: TyCtxt<'_>, def_id: LocalDefId) {
505505
pub(crate) fn check_item_type(tcx: TyCtxt<'_>, def_id: LocalDefId) {
506506
let _indenter = indenter();
507507
match tcx.def_kind(def_id) {
508-
DefKind::Static(..) => {
508+
DefKind::Static { .. } => {
509509
tcx.ensure().typeck(def_id);
510510
maybe_check_static_with_link_section(tcx, def_id);
511511
check_static_inhabited(tcx, def_id);

compiler/rustc_hir_analysis/src/check/errs.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ fn is_path_static_mut(expr: hir::Expr<'_>) -> Option<String> {
4848
if let hir::ExprKind::Path(qpath) = expr.kind
4949
&& let hir::QPath::Resolved(_, path) = qpath
5050
&& let hir::def::Res::Def(def_kind, _) = path.res
51-
&& let hir::def::DefKind::Static(mt) = def_kind
51+
&& let hir::def::DefKind::Static { mt } = def_kind
5252
&& matches!(mt, Mutability::Mut)
5353
{
5454
return Some(qpath_to_string(&qpath));

compiler/rustc_hir_analysis/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ pub fn check_crate(tcx: TyCtxt<'_>) {
182182
tcx.hir().par_body_owners(|item_def_id| {
183183
let def_kind = tcx.def_kind(item_def_id);
184184
match def_kind {
185-
DefKind::Static(_) => tcx.ensure().eval_static_initializer(item_def_id),
185+
DefKind::Static { .. } => tcx.ensure().eval_static_initializer(item_def_id),
186186
DefKind::Const => tcx.ensure().const_eval_poly(item_def_id.into()),
187187
_ => (),
188188
}

compiler/rustc_hir_typeck/src/demand.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -699,7 +699,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
699699
hir::Path {
700700
res:
701701
hir::def::Res::Def(
702-
hir::def::DefKind::Static(_) | hir::def::DefKind::Const,
702+
hir::def::DefKind::Static { .. } | hir::def::DefKind::Const,
703703
def_id,
704704
),
705705
..

compiler/rustc_hir_typeck/src/mem_categorization.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ impl<'a, 'tcx> MemCategorizationContext<'a, 'tcx> {
398398
)
399399
| Res::SelfCtor(..) => Ok(self.cat_rvalue(hir_id, expr_ty)),
400400

401-
Res::Def(DefKind::Static(_), _) => {
401+
Res::Def(DefKind::Static { .. }, _) => {
402402
Ok(PlaceWithHirId::new(hir_id, expr_ty, PlaceBase::StaticItem, Vec::new()))
403403
}
404404

compiler/rustc_infer/src/infer/error_reporting/note_and_explain.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ impl<T> Trait<T> for X {
372372
&& matches!(
373373
tcx.def_kind(body_owner_def_id),
374374
DefKind::Fn
375-
| DefKind::Static(_)
375+
| DefKind::Static { .. }
376376
| DefKind::Const
377377
| DefKind::AssocFn
378378
| DefKind::AssocConst

compiler/rustc_metadata/src/rmeta/encoder.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -863,7 +863,7 @@ fn should_encode_span(def_kind: DefKind) -> bool {
863863
| DefKind::LifetimeParam
864864
| DefKind::Fn
865865
| DefKind::Const
866-
| DefKind::Static(_)
866+
| DefKind::Static { .. }
867867
| DefKind::Ctor(..)
868868
| DefKind::AssocFn
869869
| DefKind::AssocConst
@@ -894,7 +894,7 @@ fn should_encode_attrs(def_kind: DefKind) -> bool {
894894
| DefKind::AssocTy
895895
| DefKind::Fn
896896
| DefKind::Const
897-
| DefKind::Static(_)
897+
| DefKind::Static { .. }
898898
| DefKind::AssocFn
899899
| DefKind::AssocConst
900900
| DefKind::Macro(_)
@@ -936,7 +936,7 @@ fn should_encode_expn_that_defined(def_kind: DefKind) -> bool {
936936
| DefKind::Fn
937937
| DefKind::Const
938938
| DefKind::ConstParam
939-
| DefKind::Static(_)
939+
| DefKind::Static { .. }
940940
| DefKind::Ctor(..)
941941
| DefKind::AssocFn
942942
| DefKind::AssocConst
@@ -968,7 +968,7 @@ fn should_encode_visibility(def_kind: DefKind) -> bool {
968968
| DefKind::AssocTy
969969
| DefKind::Fn
970970
| DefKind::Const
971-
| DefKind::Static(..)
971+
| DefKind::Static { .. }
972972
| DefKind::Ctor(..)
973973
| DefKind::AssocFn
974974
| DefKind::AssocConst
@@ -1001,7 +1001,7 @@ fn should_encode_stability(def_kind: DefKind) -> bool {
10011001
| DefKind::AssocConst
10021002
| DefKind::TyParam
10031003
| DefKind::ConstParam
1004-
| DefKind::Static(..)
1004+
| DefKind::Static { .. }
10051005
| DefKind::Const
10061006
| DefKind::Fn
10071007
| DefKind::ForeignMod
@@ -1099,7 +1099,7 @@ fn should_encode_variances<'tcx>(tcx: TyCtxt<'tcx>, def_id: DefId, def_kind: Def
10991099
| DefKind::AssocConst
11001100
| DefKind::TyParam
11011101
| DefKind::ConstParam
1102-
| DefKind::Static(..)
1102+
| DefKind::Static { .. }
11031103
| DefKind::Const
11041104
| DefKind::ForeignMod
11051105
| DefKind::Impl { .. }
@@ -1131,7 +1131,7 @@ fn should_encode_generics(def_kind: DefKind) -> bool {
11311131
| DefKind::AssocTy
11321132
| DefKind::Fn
11331133
| DefKind::Const
1134-
| DefKind::Static(..)
1134+
| DefKind::Static { .. }
11351135
| DefKind::Ctor(..)
11361136
| DefKind::AssocFn
11371137
| DefKind::AssocConst
@@ -1163,7 +1163,7 @@ fn should_encode_type(tcx: TyCtxt<'_>, def_id: LocalDefId, def_kind: DefKind) ->
11631163
| DefKind::Field
11641164
| DefKind::Fn
11651165
| DefKind::Const
1166-
| DefKind::Static(..)
1166+
| DefKind::Static { .. }
11671167
| DefKind::TyAlias
11681168
| DefKind::ForeignTy
11691169
| DefKind::Impl { .. }
@@ -1222,7 +1222,7 @@ fn should_encode_fn_sig(def_kind: DefKind) -> bool {
12221222
| DefKind::Variant
12231223
| DefKind::Field
12241224
| DefKind::Const
1225-
| DefKind::Static(..)
1225+
| DefKind::Static { .. }
12261226
| DefKind::Ctor(..)
12271227
| DefKind::TyAlias
12281228
| DefKind::OpaqueTy
@@ -1263,7 +1263,7 @@ fn should_encode_constness(def_kind: DefKind) -> bool {
12631263
| DefKind::Const
12641264
| DefKind::AssocConst
12651265
| DefKind::AnonConst
1266-
| DefKind::Static(..)
1266+
| DefKind::Static { .. }
12671267
| DefKind::TyAlias
12681268
| DefKind::OpaqueTy
12691269
| DefKind::Impl { of_trait: false }
@@ -1295,7 +1295,7 @@ fn should_encode_const(def_kind: DefKind) -> bool {
12951295
| DefKind::Ctor(..)
12961296
| DefKind::Field
12971297
| DefKind::Fn
1298-
| DefKind::Static(..)
1298+
| DefKind::Static { .. }
12991299
| DefKind::TyAlias
13001300
| DefKind::OpaqueTy
13011301
| DefKind::ForeignTy
@@ -1469,7 +1469,7 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
14691469
.coroutine_for_closure
14701470
.set_some(def_id.index, self.tcx.coroutine_for_closure(def_id).into());
14711471
}
1472-
if let DefKind::Static(_) = def_kind {
1472+
if let DefKind::Static { .. } = def_kind {
14731473
if !self.tcx.is_foreign_item(def_id) {
14741474
let data = self.tcx.eval_static_initializer(def_id).unwrap();
14751475
record!(self.tables.eval_static_initializer[def_id] <- data);

compiler/rustc_metadata/src/rmeta/table.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,8 +155,8 @@ fixed_size_enum! {
155155
( Impl { of_trait: false } )
156156
( Impl { of_trait: true } )
157157
( Closure )
158-
( Static(ast::Mutability::Not) )
159-
( Static(ast::Mutability::Mut) )
158+
( Static{mt:ast::Mutability::Not} )
159+
( Static{mt:ast::Mutability::Mut} )
160160
( Ctor(CtorOf::Struct, CtorKind::Fn) )
161161
( Ctor(CtorOf::Struct, CtorKind::Const) )
162162
( Ctor(CtorOf::Variant, CtorKind::Fn) )

compiler/rustc_middle/src/hir/map/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,7 @@ impl<'hir> Map<'hir> {
343343
DefKind::InlineConst => BodyOwnerKind::Const { inline: true },
344344
DefKind::Ctor(..) | DefKind::Fn | DefKind::AssocFn => BodyOwnerKind::Fn,
345345
DefKind::Closure => BodyOwnerKind::Closure,
346-
DefKind::Static(mt) => BodyOwnerKind::Static(mt),
346+
DefKind::Static { mt } => BodyOwnerKind::Static(mt),
347347
dk => bug!("{:?} is not a body node: {:?}", def_id, dk),
348348
}
349349
}

compiler/rustc_middle/src/mir/pretty.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -498,8 +498,8 @@ fn write_mir_sig(tcx: TyCtxt<'_>, body: &Body<'_>, w: &mut dyn io::Write) -> io:
498498
match (kind, body.source.promoted) {
499499
(_, Some(_)) => write!(w, "const ")?, // promoteds are the closest to consts
500500
(DefKind::Const | DefKind::AssocConst, _) => write!(w, "const ")?,
501-
(DefKind::Static(hir::Mutability::Not), _) => write!(w, "static ")?,
502-
(DefKind::Static(hir::Mutability::Mut), _) => write!(w, "static mut ")?,
501+
(DefKind::Static { mt: hir::Mutability::Not }, _) => write!(w, "static ")?,
502+
(DefKind::Static { mt: hir::Mutability::Mut }, _) => write!(w, "static mut ")?,
503503
(_, _) if is_function => write!(w, "fn ")?,
504504
(DefKind::AnonConst | DefKind::InlineConst, _) => {} // things like anon const, not an item
505505
_ => bug!("Unexpected def kind {:?}", kind),

compiler/rustc_middle/src/ty/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1708,7 +1708,7 @@ impl<'tcx> TyCtxt<'tcx> {
17081708
debug!("returned from def_kind: {:?}", def_kind);
17091709
match def_kind {
17101710
DefKind::Const
1711-
| DefKind::Static(..)
1711+
| DefKind::Static { .. }
17121712
| DefKind::AssocConst
17131713
| DefKind::Ctor(..)
17141714
| DefKind::AnonConst

compiler/rustc_middle/src/ty/print/pretty.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -359,7 +359,7 @@ pub trait PrettyPrinter<'tcx>: Printer<'tcx> + fmt::Write {
359359
| DefKind::TyAlias
360360
| DefKind::Fn
361361
| DefKind::Const
362-
| DefKind::Static(_) = kind
362+
| DefKind::Static { .. } = kind
363363
{
364364
} else {
365365
// If not covered above, like for example items out of `impl` blocks, fallback.

compiler/rustc_middle/src/ty/util.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -616,12 +616,12 @@ impl<'tcx> TyCtxt<'tcx> {
616616
/// Returns `true` if the node pointed to by `def_id` is a `static` item.
617617
#[inline]
618618
pub fn is_static(self, def_id: DefId) -> bool {
619-
matches!(self.def_kind(def_id), DefKind::Static(_))
619+
matches!(self.def_kind(def_id), DefKind::Static { .. })
620620
}
621621

622622
#[inline]
623623
pub fn static_mutability(self, def_id: DefId) -> Option<hir::Mutability> {
624-
if let DefKind::Static(mt) = self.def_kind(def_id) { Some(mt) } else { None }
624+
if let DefKind::Static { mt } = self.def_kind(def_id) { Some(mt) } else { None }
625625
}
626626

627627
/// Returns `true` if this is a `static` item with the `#[thread_local]` attribute.

compiler/rustc_mir_build/src/build/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -631,7 +631,7 @@ fn construct_error(tcx: TyCtxt<'_>, def_id: LocalDefId, guar: ErrorGuaranteed) -
631631
| DefKind::AssocConst
632632
| DefKind::AnonConst
633633
| DefKind::InlineConst
634-
| DefKind::Static(_) => (vec![], tcx.type_of(def_id).instantiate_identity(), None),
634+
| DefKind::Static { .. } => (vec![], tcx.type_of(def_id).instantiate_identity(), None),
635635
DefKind::Ctor(..) | DefKind::Fn | DefKind::AssocFn => {
636636
let sig = tcx.liberate_late_bound_regions(
637637
def_id.to_def_id(),

compiler/rustc_mir_build/src/thir/cx/expr.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -942,7 +942,7 @@ impl<'tcx> Cx<'tcx> {
942942

943943
// We encode uses of statics as a `*&STATIC` where the `&STATIC` part is
944944
// a constant reference (or constant raw pointer for `static mut`) in MIR
945-
Res::Def(DefKind::Static(_), id) => {
945+
Res::Def(DefKind::Static { .. }, id) => {
946946
let ty = self.tcx.static_ptr_ty(id);
947947
let temp_lifetime = self
948948
.rvalue_scopes

0 commit comments

Comments
 (0)