Auto merge of #15688 - Veykril:rustc_layout_scalar_valid_range, r=Veykril
Make rustc_layout_scalar_valid_range attributes work for non-decimal literals Closes https://github.com/rust-lang/rust-analyzer/issues/15687
This commit is contained in:
commit
547bcf8bbf
@ -119,7 +119,15 @@ fn layout_scalar_valid_range(db: &dyn HirDatabase, def: AdtId) -> (Bound<u128>,
|
|||||||
let attr = attrs.by_key(name).tt_values();
|
let attr = attrs.by_key(name).tt_values();
|
||||||
for tree in attr {
|
for tree in attr {
|
||||||
if let Some(it) = tree.token_trees.first() {
|
if let Some(it) = tree.token_trees.first() {
|
||||||
if let Ok(it) = it.to_string().parse() {
|
let text = it.to_string().replace('_', "");
|
||||||
|
let base = match text.as_bytes() {
|
||||||
|
[b'0', b'x', ..] => 16,
|
||||||
|
[b'0', b'o', ..] => 8,
|
||||||
|
[b'0', b'b', ..] => 2,
|
||||||
|
_ => 10,
|
||||||
|
};
|
||||||
|
|
||||||
|
if let Ok(it) = u128::from_str_radix(&text, base) {
|
||||||
return Bound::Included(it);
|
return Bound::Included(it);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user