Unyeet const param defaults

This commit is contained in:
Ellen 2021-04-28 20:44:40 +01:00 committed by Caleb Cartwright
parent e7fa07036f
commit 0b21ea2161
3 changed files with 56 additions and 1 deletions

View File

@ -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));
}

View 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},>;

View 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
},
>;