Skip to content

Commit 6c0c6d6

Browse files
committed
Auto merge of #106103 - matthiaskrgr:rollup-8xe9ddz, r=matthiaskrgr
Rollup of 7 pull requests Successful merges: - #105970 (docs/test: add UI test and long-form error docs for E0462) - #105975 (rustc: Remove needless lifetimes) - #106069 (rustdoc: use a more evocative name for CSS/JS `#titles`) - #106084 (fix vec::IntoIter::drop on high-alignment ZST) - #106091 (Use correct CSS pseudo-element selector) - #106093 (rustdoc: remove no-op CSS from `.docblock-short`) - #106102 (Fix `triagebot.toml`) Failed merges: - #106028 (docs/test: add UI test and long-form error docs for `E0461`) r? `@ghost` `@rustbot` modify labels: rollup
2 parents 2c3f284 + da4be75 commit 6c0c6d6

File tree

133 files changed

+426
-402
lines changed

Some content is hidden

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

133 files changed

+426
-402
lines changed

compiler/rustc_ast/src/util/comments.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ pub fn beautify_doc_string(data: Symbol, kind: CommentKind) -> Symbol {
5151
if i != 0 || j != lines.len() { Some((i, j)) } else { None }
5252
}
5353

54-
fn get_horizontal_trim<'a>(lines: &'a [&str], kind: CommentKind) -> Option<String> {
54+
fn get_horizontal_trim(lines: &[&str], kind: CommentKind) -> Option<String> {
5555
let mut i = usize::MAX;
5656
let mut first = true;
5757

compiler/rustc_ast_lowering/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,7 @@ fn compute_hir_hash(
414414
})
415415
}
416416

417-
pub fn lower_to_hir<'hir>(tcx: TyCtxt<'hir>, (): ()) -> hir::Crate<'hir> {
417+
pub fn lower_to_hir(tcx: TyCtxt<'_>, (): ()) -> hir::Crate<'_> {
418418
let sess = tcx.sess;
419419
let krate = tcx.untracked_crate.steal();
420420
let mut resolver = tcx.resolver_for_lowering(()).steal();

compiler/rustc_borrowck/src/consumers.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@ pub use super::{
2828
/// that shows how to do this at `src/test/run-make/obtain-borrowck/`.
2929
///
3030
/// * Polonius is highly unstable, so expect regular changes in its signature or other details.
31-
pub fn get_body_with_borrowck_facts<'tcx>(
32-
tcx: TyCtxt<'tcx>,
31+
pub fn get_body_with_borrowck_facts(
32+
tcx: TyCtxt<'_>,
3333
def: ty::WithOptConstParam<LocalDefId>,
34-
) -> BodyWithBorrowckFacts<'tcx> {
34+
) -> BodyWithBorrowckFacts<'_> {
3535
let (input_body, promoted) = tcx.mir_promoted(def);
3636
let infcx = tcx.infer_ctxt().with_opaque_type_inference(DefiningAnchor::Bind(def.did)).build();
3737
let input_body: &Body<'_> = &input_body.borrow();

compiler/rustc_borrowck/src/diagnostics/find_all_local_uses.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use rustc_middle::mir::{Body, Local, Location};
99
/// Find all uses of (including assignments to) a [`Local`].
1010
///
1111
/// Uses `BTreeSet` so output is deterministic.
12-
pub(super) fn find<'tcx>(body: &Body<'tcx>, local: Local) -> BTreeSet<Location> {
12+
pub(super) fn find(body: &Body<'_>, local: Local) -> BTreeSet<Location> {
1313
let mut visitor = AllLocalUsesVisitor { for_local: local, uses: BTreeSet::default() };
1414
visitor.visit_body(body);
1515
visitor.uses

compiler/rustc_borrowck/src/lib.rs

+1-4
Original file line numberDiff line numberDiff line change
@@ -124,10 +124,7 @@ pub fn provide(providers: &mut Providers) {
124124
};
125125
}
126126

127-
fn mir_borrowck<'tcx>(
128-
tcx: TyCtxt<'tcx>,
129-
def: ty::WithOptConstParam<LocalDefId>,
130-
) -> &'tcx BorrowCheckResult<'tcx> {
127+
fn mir_borrowck(tcx: TyCtxt<'_>, def: ty::WithOptConstParam<LocalDefId>) -> &BorrowCheckResult<'_> {
131128
let (input_body, promoted) = tcx.mir_promoted(def);
132129
debug!("run query mir_borrowck: {}", tcx.def_path_str(def.did.to_def_id()));
133130

compiler/rustc_borrowck/src/type_check/free_region_relations.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ impl UniversalRegionRelations<'_> {
8585
/// outlives `fr` and (b) is not local.
8686
///
8787
/// (*) If there are multiple competing choices, we return all of them.
88-
pub(crate) fn non_local_upper_bounds<'a>(&'a self, fr: RegionVid) -> Vec<RegionVid> {
88+
pub(crate) fn non_local_upper_bounds(&self, fr: RegionVid) -> Vec<RegionVid> {
8989
debug!("non_local_upper_bound(fr={:?})", fr);
9090
let res = self.non_local_bounds(&self.inverse_outlives, fr);
9191
assert!(!res.is_empty(), "can't find an upper bound!?");
@@ -148,9 +148,9 @@ impl UniversalRegionRelations<'_> {
148148
/// Helper for `non_local_upper_bounds` and `non_local_lower_bounds`.
149149
/// Repeatedly invokes `postdom_parent` until we find something that is not
150150
/// local. Returns `None` if we never do so.
151-
fn non_local_bounds<'a>(
151+
fn non_local_bounds(
152152
&self,
153-
relation: &'a TransitiveRelation<RegionVid>,
153+
relation: &TransitiveRelation<RegionVid>,
154154
fr0: RegionVid,
155155
) -> Vec<RegionVid> {
156156
// This method assumes that `fr0` is one of the universally

compiler/rustc_builtin_macros/src/asm.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ pub fn parse_asm_args<'a>(
352352
///
353353
/// This function must be called immediately after the option token is parsed.
354354
/// Otherwise, the suggestion will be incorrect.
355-
fn err_duplicate_option<'a>(p: &mut Parser<'a>, symbol: Symbol, span: Span) {
355+
fn err_duplicate_option(p: &mut Parser<'_>, symbol: Symbol, span: Span) {
356356
let mut err = p
357357
.sess
358358
.span_diagnostic

compiler/rustc_codegen_gcc/src/base.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ pub fn linkage_to_gcc(linkage: Linkage) -> FunctionType {
5252
}
5353
}
5454

55-
pub fn compile_codegen_unit<'tcx>(tcx: TyCtxt<'tcx>, cgu_name: Symbol, supports_128bit_integers: bool) -> (ModuleCodegen<GccContext>, u64) {
55+
pub fn compile_codegen_unit(tcx: TyCtxt<'_>, cgu_name: Symbol, supports_128bit_integers: bool) -> (ModuleCodegen<GccContext>, u64) {
5656
let prof_timer = tcx.prof.generic_activity("codegen_module");
5757
let start_time = Instant::now();
5858

compiler/rustc_codegen_gcc/src/common.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ pub fn bytes_in_context<'gcc, 'tcx>(cx: &CodegenCx<'gcc, 'tcx>, bytes: &[u8]) ->
4444
context.new_array_constructor(None, typ, &elements)
4545
}
4646

47-
pub fn type_is_pointer<'gcc>(typ: Type<'gcc>) -> bool {
47+
pub fn type_is_pointer(typ: Type<'_>) -> bool {
4848
typ.get_pointee().is_some()
4949
}
5050

compiler/rustc_codegen_gcc/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ impl ExtraBackendMethods for GccCodegenBackend {
161161
mods
162162
}
163163

164-
fn compile_codegen_unit<'tcx>(&self, tcx: TyCtxt<'tcx>, cgu_name: Symbol) -> (ModuleCodegen<Self::Module>, u64) {
164+
fn compile_codegen_unit(&self, tcx: TyCtxt<'_>, cgu_name: Symbol) -> (ModuleCodegen<Self::Module>, u64) {
165165
base::compile_codegen_unit(tcx, cgu_name, *self.supports_128bit_integers.lock().expect("lock"))
166166
}
167167

compiler/rustc_codegen_llvm/src/coverageinfo/mapgen.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ use std::ffi::CString;
3030
/// implementing this Rust version, and though the format documentation is very explicit and
3131
/// detailed, some undocumented details in Clang's implementation (that may or may not be important)
3232
/// were also replicated for Rust's Coverage Map.
33-
pub fn finalize<'ll, 'tcx>(cx: &CodegenCx<'ll, 'tcx>) {
33+
pub fn finalize(cx: &CodegenCx<'_, '_>) {
3434
let tcx = cx.tcx;
3535

3636
// Ensure the installed version of LLVM supports at least Coverage Map
@@ -284,7 +284,7 @@ fn save_function_record(
284284
/// "code coverage dead code cgu" during the partitioning process. This prevents us from generating
285285
/// code regions for the same function more than once which can lead to linker errors regarding
286286
/// duplicate symbols.
287-
fn add_unused_functions<'ll, 'tcx>(cx: &CodegenCx<'ll, 'tcx>) {
287+
fn add_unused_functions(cx: &CodegenCx<'_, '_>) {
288288
assert!(cx.codegen_unit.is_code_coverage_dead_code_cgu());
289289

290290
let tcx = cx.tcx;

compiler/rustc_codegen_llvm/src/debuginfo/metadata.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ macro_rules! return_if_di_node_created_in_meantime {
111111

112112
/// Extract size and alignment from a TyAndLayout.
113113
#[inline]
114-
fn size_and_align_of<'tcx>(ty_and_layout: TyAndLayout<'tcx>) -> (Size, Align) {
114+
fn size_and_align_of(ty_and_layout: TyAndLayout<'_>) -> (Size, Align) {
115115
(ty_and_layout.size, ty_and_layout.align.abi)
116116
}
117117

compiler/rustc_codegen_llvm/src/llvm/ffi.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -2390,11 +2390,11 @@ extern "C" {
23902390

23912391
pub fn LLVMRustSetDataLayoutFromTargetMachine<'a>(M: &'a Module, TM: &'a TargetMachine);
23922392

2393-
pub fn LLVMRustBuildOperandBundleDef<'a>(
2393+
pub fn LLVMRustBuildOperandBundleDef(
23942394
Name: *const c_char,
2395-
Inputs: *const &'a Value,
2395+
Inputs: *const &'_ Value,
23962396
NumInputs: c_uint,
2397-
) -> &'a mut OperandBundleDef<'a>;
2397+
) -> &mut OperandBundleDef<'_>;
23982398
pub fn LLVMRustFreeOperandBundleDef<'a>(Bundle: &'a mut OperandBundleDef<'a>);
23992399

24002400
pub fn LLVMRustPositionBuilderAtStart<'a>(B: &Builder<'a>, BB: &'a BasicBlock);

compiler/rustc_codegen_ssa/src/back/link.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -607,21 +607,21 @@ fn link_dwarf_object<'a>(
607607
}
608608

609609
impl<Relocations> ThorinSession<Relocations> {
610-
fn alloc_mmap<'arena>(&'arena self, data: Mmap) -> &'arena Mmap {
610+
fn alloc_mmap(&self, data: Mmap) -> &Mmap {
611611
(*self.arena_mmap.alloc(data)).borrow()
612612
}
613613
}
614614

615615
impl<Relocations> thorin::Session<Relocations> for ThorinSession<Relocations> {
616-
fn alloc_data<'arena>(&'arena self, data: Vec<u8>) -> &'arena [u8] {
616+
fn alloc_data(&self, data: Vec<u8>) -> &[u8] {
617617
(*self.arena_data.alloc(data)).borrow()
618618
}
619619

620-
fn alloc_relocation<'arena>(&'arena self, data: Relocations) -> &'arena Relocations {
620+
fn alloc_relocation(&self, data: Relocations) -> &Relocations {
621621
(*self.arena_relocations.alloc(data)).borrow()
622622
}
623623

624-
fn read_input<'arena>(&'arena self, path: &Path) -> std::io::Result<&'arena [u8]> {
624+
fn read_input(&self, path: &Path) -> std::io::Result<&[u8]> {
625625
let file = File::open(&path)?;
626626
let mmap = (unsafe { Mmap::map(file) })?;
627627
Ok(self.alloc_mmap(mmap))

compiler/rustc_codegen_ssa/src/back/symbol_export.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -163,10 +163,10 @@ fn is_reachable_non_generic_provider_extern(tcx: TyCtxt<'_>, def_id: DefId) -> b
163163
tcx.reachable_non_generics(def_id.krate).contains_key(&def_id)
164164
}
165165

166-
fn exported_symbols_provider_local<'tcx>(
167-
tcx: TyCtxt<'tcx>,
166+
fn exported_symbols_provider_local(
167+
tcx: TyCtxt<'_>,
168168
cnum: CrateNum,
169-
) -> &'tcx [(ExportedSymbol<'tcx>, SymbolExportInfo)] {
169+
) -> &[(ExportedSymbol<'_>, SymbolExportInfo)] {
170170
assert_eq!(cnum, LOCAL_CRATE);
171171

172172
if !tcx.sess.opts.output_types.should_codegen() {

compiler/rustc_codegen_ssa/src/debuginfo/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ pub mod type_names;
1010
/// NOTE: This is somewhat inconsistent right now: For empty enums and enums with a single
1111
/// fieldless variant, we generate DW_TAG_struct_type, although a
1212
/// DW_TAG_enumeration_type would be a better fit.
13-
pub fn wants_c_like_enum_debuginfo<'tcx>(enum_type_and_layout: TyAndLayout<'tcx>) -> bool {
13+
pub fn wants_c_like_enum_debuginfo(enum_type_and_layout: TyAndLayout<'_>) -> bool {
1414
match enum_type_and_layout.ty.kind() {
1515
ty::Adt(adt_def, _) => {
1616
if !adt_def.is_enum() {

compiler/rustc_codegen_ssa/src/meth.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ impl<'a, 'tcx> VirtualIndex {
6565

6666
/// This takes a valid `self` receiver type and extracts the principal trait
6767
/// ref of the type.
68-
fn expect_dyn_trait_in_self<'tcx>(ty: Ty<'tcx>) -> ty::PolyExistentialTraitRef<'tcx> {
68+
fn expect_dyn_trait_in_self(ty: Ty<'_>) -> ty::PolyExistentialTraitRef<'_> {
6969
for arg in ty.peel_refs().walk() {
7070
if let GenericArgKind::Type(ty) = arg.unpack() {
7171
if let ty::Dynamic(data, _, _) = ty.kind() {

compiler/rustc_codegen_ssa/src/target_features.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,7 @@ pub fn from_target_feature(
419419

420420
/// Computes the set of target features used in a function for the purposes of
421421
/// inline assembly.
422-
fn asm_target_features<'tcx>(tcx: TyCtxt<'tcx>, did: DefId) -> &'tcx FxHashSet<Symbol> {
422+
fn asm_target_features(tcx: TyCtxt<'_>, did: DefId) -> &FxHashSet<Symbol> {
423423
let mut target_features = tcx.sess.unstable_target_features.clone();
424424
if tcx.def_kind(did).has_codegen_attrs() {
425425
let attrs = tcx.codegen_fn_attrs(did);

compiler/rustc_data_structures/src/profiling.rs

+4-7
Original file line numberDiff line numberDiff line change
@@ -205,22 +205,19 @@ impl SelfProfilerRef {
205205
/// VerboseTimingGuard returned from this call is dropped. In addition to recording
206206
/// a measureme event, "verbose" generic activities also print a timing entry to
207207
/// stderr if the compiler is invoked with -Ztime-passes.
208-
pub fn verbose_generic_activity<'a>(
209-
&'a self,
210-
event_label: &'static str,
211-
) -> VerboseTimingGuard<'a> {
208+
pub fn verbose_generic_activity(&self, event_label: &'static str) -> VerboseTimingGuard<'_> {
212209
let message =
213210
if self.print_verbose_generic_activities { Some(event_label.to_owned()) } else { None };
214211

215212
VerboseTimingGuard::start(message, self.generic_activity(event_label))
216213
}
217214

218215
/// Like `verbose_generic_activity`, but with an extra arg.
219-
pub fn verbose_generic_activity_with_arg<'a, A>(
220-
&'a self,
216+
pub fn verbose_generic_activity_with_arg<A>(
217+
&self,
221218
event_label: &'static str,
222219
event_arg: A,
223-
) -> VerboseTimingGuard<'a>
220+
) -> VerboseTimingGuard<'_>
224221
where
225222
A: Borrow<str> + Into<String>,
226223
{

compiler/rustc_data_structures/src/transitive_relation.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ impl<T: Eq + Hash + Copy> TransitiveRelation<T> {
199199
/// Viewing the relation as a graph, computes the "mutual
200200
/// immediate postdominator" of a set of points (if one
201201
/// exists). See `postdom_upper_bound` for details.
202-
pub fn mutual_immediate_postdominator<'a>(&'a self, mut mubs: Vec<T>) -> Option<T> {
202+
pub fn mutual_immediate_postdominator(&self, mut mubs: Vec<T>) -> Option<T> {
203203
loop {
204204
match mubs.len() {
205205
0 => return None,

compiler/rustc_data_structures/src/unord.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ impl<V: Eq + Hash> UnordSet<V> {
178178
}
179179

180180
#[inline]
181-
pub fn items<'a>(&'a self) -> UnordItems<&'a V, impl Iterator<Item = &'a V>> {
181+
pub fn items(&self) -> UnordItems<&V, impl Iterator<Item = &V>> {
182182
UnordItems(self.inner.iter())
183183
}
184184

@@ -255,7 +255,7 @@ impl<K: Eq + Hash, V> UnordMap<K, V> {
255255
}
256256

257257
#[inline]
258-
pub fn items<'a>(&'a self) -> UnordItems<(&'a K, &'a V), impl Iterator<Item = (&'a K, &'a V)>> {
258+
pub fn items(&self) -> UnordItems<(&K, &V), impl Iterator<Item = (&K, &V)>> {
259259
UnordItems(self.inner.iter())
260260
}
261261

@@ -311,7 +311,7 @@ impl<V> UnordBag<V> {
311311
}
312312

313313
#[inline]
314-
pub fn items<'a>(&'a self) -> UnordItems<&'a V, impl Iterator<Item = &'a V>> {
314+
pub fn items(&self) -> UnordItems<&V, impl Iterator<Item = &V>> {
315315
UnordItems(self.inner.iter())
316316
}
317317

compiler/rustc_error_codes/src/error_codes.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,7 @@ E0457: include_str!("./error_codes/E0457.md"),
244244
E0458: include_str!("./error_codes/E0458.md"),
245245
E0459: include_str!("./error_codes/E0459.md"),
246246
E0460: include_str!("./error_codes/E0460.md"),
247+
E0462: include_str!("./error_codes/E0462.md"),
247248
E0463: include_str!("./error_codes/E0463.md"),
248249
E0464: include_str!("./error_codes/E0464.md"),
249250
E0466: include_str!("./error_codes/E0466.md"),
@@ -595,7 +596,6 @@ E0791: include_str!("./error_codes/E0791.md"),
595596
// E0427, // merged into 530
596597
// E0456, // plugin `..` is not available for triple `..`
597598
E0461, // couldn't find crate `..` with expected target triple ..
598-
E0462, // found staticlib `..` instead of rlib or dylib
599599
E0465, // multiple .. candidates for `..` found
600600
// E0467, // removed
601601
// E0470, // removed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
Found `staticlib` `..` instead of `rlib` or `dylib`.
2+
3+
Consider the following two files:
4+
5+
`a.rs`
6+
```ignore (cannot-link-with-other-tests)
7+
#![crate_type = "staticlib"]
8+
9+
fn foo() {}
10+
```
11+
12+
`main.rs`
13+
```ignore (cannot-link-with-other-tests)
14+
extern crate a;
15+
16+
fn main() {
17+
a::foo();
18+
}
19+
```
20+
21+
Crate `a` is compiled as a `staticlib`. A `staticlib` is a system-dependant
22+
library only intended for linking with non-Rust applications (C programs). Note
23+
that `staticlib`s include all upstream dependencies (`core`, `std`, other user
24+
dependencies, etc) which makes them significantly larger than `dylib`s:
25+
prefer `staticlib` for linking with C programs. Learn more about different
26+
`crate_type`s in [this section of the Reference](../reference/linkage.html).
27+
28+
This error can be fixed by:
29+
* Using [Cargo](../cargo/index.html), the Rust package manager, automatically
30+
fixing this issue.
31+
* Recompiling the crate as a `rlib` or `dylib`; formats suitable for Rust
32+
linking.

compiler/rustc_error_messages/src/lib.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -549,9 +549,7 @@ fn icu_locale_from_unic_langid(lang: LanguageIdentifier) -> Option<icu_locid::Lo
549549
icu_locid::Locale::try_from_bytes(lang.to_string().as_bytes()).ok()
550550
}
551551

552-
pub fn fluent_value_from_str_list_sep_by_and<'source>(
553-
l: Vec<Cow<'source, str>>,
554-
) -> FluentValue<'source> {
552+
pub fn fluent_value_from_str_list_sep_by_and(l: Vec<Cow<'_, str>>) -> FluentValue<'_> {
555553
// Fluent requires 'static value here for its AnyEq usages.
556554
#[derive(Clone, PartialEq, Debug)]
557555
struct FluentStrListSepByAnd(Vec<String>);

compiler/rustc_expand/src/mbe/quoted.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ fn parse_sep_and_kleene_op(
356356
// `$$` or a meta-variable is the lhs of a macro but shouldn't.
357357
//
358358
// For example, `macro_rules! foo { ( ${length()} ) => {} }`
359-
fn span_dollar_dollar_or_metavar_in_the_lhs_err<'sess>(sess: &'sess ParseSess, token: &Token) {
359+
fn span_dollar_dollar_or_metavar_in_the_lhs_err(sess: &ParseSess, token: &Token) {
360360
sess.span_diagnostic
361361
.span_err(token.span, &format!("unexpected token: {}", pprust::token_to_string(token)));
362362
sess.span_diagnostic.span_note_without_error(

compiler/rustc_graphviz/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@
164164
//! fn node_id(&'a self, n: &Nd) -> dot::Id<'a> {
165165
//! dot::Id::new(format!("N{}", n)).unwrap()
166166
//! }
167-
//! fn node_label<'b>(&'b self, n: &Nd) -> dot::LabelText<'b> {
167+
//! fn node_label(&self, n: &Nd) -> dot::LabelText<'_> {
168168
//! dot::LabelText::LabelStr(self.nodes[*n].into())
169169
//! }
170170
//! fn edge_label<'b>(&'b self, _: &Ed) -> dot::LabelText<'b> {

0 commit comments

Comments
 (0)