mirror of https://github.com/astral-sh/ruff
[red-knot] simplify union size limit handling (#17429)
This commit is contained in:
parent
e6a2de3ac6
commit
b67590bfde
|
|
@ -97,14 +97,13 @@ impl<'db> UnionBuilder<'db> {
|
||||||
// means we shouldn't add it. Otherwise, add a new `UnionElement::StringLiterals`
|
// means we shouldn't add it. Otherwise, add a new `UnionElement::StringLiterals`
|
||||||
// containing it.
|
// containing it.
|
||||||
Type::StringLiteral(literal) => {
|
Type::StringLiteral(literal) => {
|
||||||
let mut too_large = false;
|
|
||||||
let mut found = false;
|
let mut found = false;
|
||||||
for element in &mut self.elements {
|
for element in &mut self.elements {
|
||||||
match element {
|
match element {
|
||||||
UnionElement::StringLiterals(literals) => {
|
UnionElement::StringLiterals(literals) => {
|
||||||
if literals.len() >= MAX_UNION_LITERALS {
|
if literals.len() >= MAX_UNION_LITERALS {
|
||||||
too_large = true;
|
let replace_with = KnownClass::Str.to_instance(self.db);
|
||||||
break;
|
return self.add(replace_with);
|
||||||
}
|
}
|
||||||
literals.insert(literal);
|
literals.insert(literal);
|
||||||
found = true;
|
found = true;
|
||||||
|
|
@ -116,10 +115,6 @@ impl<'db> UnionBuilder<'db> {
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if too_large {
|
|
||||||
let replace_with = KnownClass::Str.to_instance(self.db);
|
|
||||||
return self.add(replace_with);
|
|
||||||
}
|
|
||||||
if !found {
|
if !found {
|
||||||
self.elements
|
self.elements
|
||||||
.push(UnionElement::StringLiterals(FxOrderSet::from_iter([
|
.push(UnionElement::StringLiterals(FxOrderSet::from_iter([
|
||||||
|
|
@ -130,13 +125,12 @@ impl<'db> UnionBuilder<'db> {
|
||||||
// Same for bytes literals as for string literals, above.
|
// Same for bytes literals as for string literals, above.
|
||||||
Type::BytesLiteral(literal) => {
|
Type::BytesLiteral(literal) => {
|
||||||
let mut found = false;
|
let mut found = false;
|
||||||
let mut too_large = false;
|
|
||||||
for element in &mut self.elements {
|
for element in &mut self.elements {
|
||||||
match element {
|
match element {
|
||||||
UnionElement::BytesLiterals(literals) => {
|
UnionElement::BytesLiterals(literals) => {
|
||||||
if literals.len() >= MAX_UNION_LITERALS {
|
if literals.len() >= MAX_UNION_LITERALS {
|
||||||
too_large = true;
|
let replace_with = KnownClass::Bytes.to_instance(self.db);
|
||||||
break;
|
return self.add(replace_with);
|
||||||
}
|
}
|
||||||
literals.insert(literal);
|
literals.insert(literal);
|
||||||
found = true;
|
found = true;
|
||||||
|
|
@ -148,10 +142,6 @@ impl<'db> UnionBuilder<'db> {
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if too_large {
|
|
||||||
let replace_with = KnownClass::Bytes.to_instance(self.db);
|
|
||||||
return self.add(replace_with);
|
|
||||||
}
|
|
||||||
if !found {
|
if !found {
|
||||||
self.elements
|
self.elements
|
||||||
.push(UnionElement::BytesLiterals(FxOrderSet::from_iter([
|
.push(UnionElement::BytesLiterals(FxOrderSet::from_iter([
|
||||||
|
|
@ -162,13 +152,12 @@ impl<'db> UnionBuilder<'db> {
|
||||||
// And same for int literals as well.
|
// And same for int literals as well.
|
||||||
Type::IntLiteral(literal) => {
|
Type::IntLiteral(literal) => {
|
||||||
let mut found = false;
|
let mut found = false;
|
||||||
let mut too_large = false;
|
|
||||||
for element in &mut self.elements {
|
for element in &mut self.elements {
|
||||||
match element {
|
match element {
|
||||||
UnionElement::IntLiterals(literals) => {
|
UnionElement::IntLiterals(literals) => {
|
||||||
if literals.len() >= MAX_UNION_LITERALS {
|
if literals.len() >= MAX_UNION_LITERALS {
|
||||||
too_large = true;
|
let replace_with = KnownClass::Int.to_instance(self.db);
|
||||||
break;
|
return self.add(replace_with);
|
||||||
}
|
}
|
||||||
literals.insert(literal);
|
literals.insert(literal);
|
||||||
found = true;
|
found = true;
|
||||||
|
|
@ -180,10 +169,6 @@ impl<'db> UnionBuilder<'db> {
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if too_large {
|
|
||||||
let replace_with = KnownClass::Int.to_instance(self.db);
|
|
||||||
return self.add(replace_with);
|
|
||||||
}
|
|
||||||
if !found {
|
if !found {
|
||||||
self.elements
|
self.elements
|
||||||
.push(UnionElement::IntLiterals(FxOrderSet::from_iter([literal])));
|
.push(UnionElement::IntLiterals(FxOrderSet::from_iter([literal])));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue