Unyeet const param defaults
This commit is contained in:
parent
e7fa07036f
commit
0b21ea2161
12
src/types.rs
12
src/types.rs
@ -571,13 +571,23 @@ impl Rewrite for ast::GenericParam {
|
||||
if let ast::GenericParamKind::Const {
|
||||
ref ty,
|
||||
kw_span: _,
|
||||
default: _,
|
||||
default,
|
||||
} = &self.kind
|
||||
{
|
||||
result.push_str("const ");
|
||||
result.push_str(rewrite_ident(context, self.ident));
|
||||
result.push_str(": ");
|
||||
result.push_str(&ty.rewrite(context, shape)?);
|
||||
if let Some(default) = default {
|
||||
let eq_str = match context.config.type_punctuation_density() {
|
||||
TypeDensity::Compressed => "=",
|
||||
TypeDensity::Wide => " = ",
|
||||
};
|
||||
result.push_str(eq_str);
|
||||
let budget = shape.width.checked_sub(result.len())?;
|
||||
let rewrite = default.rewrite(context, Shape::legacy(budget, shape.indent))?;
|
||||
result.push_str(&rewrite);
|
||||
}
|
||||
} else {
|
||||
result.push_str(rewrite_ident(context, self.ident));
|
||||
}
|
||||
|
10
tests/source/issue-4816/lib.rs
Normal file
10
tests/source/issue-4816/lib.rs
Normal file
@ -0,0 +1,10 @@
|
||||
#![feature(const_generics_defaults)]
|
||||
struct Foo<const N: usize = 1, const N2: usize = 2>;
|
||||
struct Bar<const N: usize, const N2: usize = { N +
|
||||
1 }>;
|
||||
struct Lots<const N1BlahFooUwU: usize = { 10 + 28 + 1872 / 10 * 3 },const N2SecondParamOhmyyy: usize = { N1BlahFooUwU / 2 + 10 * 2 },>;
|
||||
struct NamesRHard<const N: usize = { 1 + 1 + 1 + 1 + 1 + 1 }>;
|
||||
struct FooBar<
|
||||
const LessThan100ButClose: usize = {1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1}
|
||||
>;
|
||||
struct FooBarrrrrrrr<const N: usize = {13478234326456456444323871+ 1+ 1+ 1+ 1+ 1+ 1+ 1+ 1+ 1+ 1+ 1+ 1+ 1+1+1+1 + 1},>;
|
35
tests/target/issue-4816/lib.rs
Normal file
35
tests/target/issue-4816/lib.rs
Normal file
@ -0,0 +1,35 @@
|
||||
#![feature(const_generics_defaults)]
|
||||
struct Foo<const N: usize = 1, const N2: usize = 2>;
|
||||
struct Bar<const N: usize, const N2: usize = { N + 1 }>;
|
||||
struct Lots<
|
||||
const N1BlahFooUwU: usize = { 10 + 28 + 1872 / 10 * 3 },
|
||||
const N2SecondParamOhmyyy: usize = { N1BlahFooUwU / 2 + 10 * 2 },
|
||||
>;
|
||||
struct NamesRHard<const N: usize = { 1 + 1 + 1 + 1 + 1 + 1 }>;
|
||||
struct FooBar<
|
||||
const LessThan100ButClose: usize = {
|
||||
1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1
|
||||
},
|
||||
>;
|
||||
struct FooBarrrrrrrr<
|
||||
const N: usize = {
|
||||
13478234326456456444323871
|
||||
+ 1
|
||||
+ 1
|
||||
+ 1
|
||||
+ 1
|
||||
+ 1
|
||||
+ 1
|
||||
+ 1
|
||||
+ 1
|
||||
+ 1
|
||||
+ 1
|
||||
+ 1
|
||||
+ 1
|
||||
+ 1
|
||||
+ 1
|
||||
+ 1
|
||||
+ 1
|
||||
+ 1
|
||||
},
|
||||
>;
|
Loading…
x
Reference in New Issue
Block a user