Skip to content

Commit f9c59d3

Browse files
committed
Use known names instead of string literals
1 parent 067d87e commit f9c59d3

File tree

3 files changed

+43
-36
lines changed

3 files changed

+43
-36
lines changed

crates/hir_expand/src/name.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,13 @@ pub mod known {
334334
gt,
335335
le,
336336
lt,
337+
// lang items
338+
not,
339+
neg,
340+
future_trait,
341+
owned_box,
342+
index,
343+
partial_ord
337344
);
338345

339346
// self/Self cannot be used as an identifier

crates/hir_ty/src/infer.rs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,10 @@ use hir_def::{
2828
AdtId, AssocItemId, DefWithBodyId, EnumVariantId, FieldId, FunctionId, HasModule, Lookup,
2929
TraitId, TypeAliasId, VariantId,
3030
};
31-
use hir_expand::name::name;
31+
use hir_expand::name::{name, Name};
3232
use la_arena::ArenaMap;
3333
use rustc_hash::FxHashMap;
3434
use stdx::impl_from;
35-
use syntax::SmolStr;
3635

3736
use crate::{
3837
db::HirDatabase, fold_tys, infer::coerce::CoerceMany, lower::ImplTraitLoweringMode,
@@ -719,10 +718,9 @@ impl<'a> InferenceContext<'a> {
719718
self.infer_expr_coerce(self.body.body_expr, &Expectation::has_type(self.return_ty.clone()));
720719
}
721720

722-
fn resolve_lang_item(&self, name: &str) -> Option<LangItemTarget> {
721+
fn resolve_lang_item(&self, name: Name) -> Option<LangItemTarget> {
723722
let krate = self.resolver.krate()?;
724-
let name = SmolStr::new_inline(name);
725-
self.db.lang_item(krate, name)
723+
self.db.lang_item(krate, name.to_smol_str())
726724
}
727725

728726
fn resolve_into_iter_item(&self) -> Option<TypeAliasId> {
@@ -743,22 +741,22 @@ impl<'a> InferenceContext<'a> {
743741
}
744742

745743
fn resolve_ops_neg_output(&self) -> Option<TypeAliasId> {
746-
let trait_ = self.resolve_lang_item("neg")?.as_trait()?;
744+
let trait_ = self.resolve_lang_item(name![neg])?.as_trait()?;
747745
self.db.trait_data(trait_).associated_type_by_name(&name![Output])
748746
}
749747

750748
fn resolve_ops_not_output(&self) -> Option<TypeAliasId> {
751-
let trait_ = self.resolve_lang_item("not")?.as_trait()?;
749+
let trait_ = self.resolve_lang_item(name![not])?.as_trait()?;
752750
self.db.trait_data(trait_).associated_type_by_name(&name![Output])
753751
}
754752

755753
fn resolve_future_future_output(&self) -> Option<TypeAliasId> {
756-
let trait_ = self.resolve_lang_item("future_trait")?.as_trait()?;
754+
let trait_ = self.resolve_lang_item(name![future_trait])?.as_trait()?;
757755
self.db.trait_data(trait_).associated_type_by_name(&name![Output])
758756
}
759757

760758
fn resolve_boxed_box(&self) -> Option<AdtId> {
761-
let struct_ = self.resolve_lang_item("owned_box")?.as_struct()?;
759+
let struct_ = self.resolve_lang_item(name![owned_box])?.as_struct()?;
762760
Some(struct_.into())
763761
}
764762

@@ -799,7 +797,7 @@ impl<'a> InferenceContext<'a> {
799797
}
800798

801799
fn resolve_ops_index(&self) -> Option<TraitId> {
802-
self.resolve_lang_item("index")?.as_trait()
800+
self.resolve_lang_item(name![index])?.as_trait()
803801
}
804802

805803
fn resolve_ops_index_output(&self) -> Option<TypeAliasId> {

crates/hir_ty/src/infer/expr.rs

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1276,41 +1276,43 @@ impl<'a> InferenceContext<'a> {
12761276
let (name, lang_item) = match op {
12771277
BinaryOp::LogicOp(_) => return None,
12781278
BinaryOp::ArithOp(aop) => match aop {
1279-
ArithOp::Add => (name!(add), "add"),
1280-
ArithOp::Mul => (name!(mul), "mul"),
1281-
ArithOp::Sub => (name!(sub), "sub"),
1282-
ArithOp::Div => (name!(div), "div"),
1283-
ArithOp::Rem => (name!(rem), "rem"),
1284-
ArithOp::Shl => (name!(shl), "shl"),
1285-
ArithOp::Shr => (name!(shr), "shr"),
1286-
ArithOp::BitXor => (name!(bitxor), "bitxor"),
1287-
ArithOp::BitOr => (name!(bitor), "bitor"),
1288-
ArithOp::BitAnd => (name!(bitand), "bitand"),
1279+
ArithOp::Add => (name!(add), name!(add)),
1280+
ArithOp::Mul => (name!(mul), name!(mul)),
1281+
ArithOp::Sub => (name!(sub), name!(sub)),
1282+
ArithOp::Div => (name!(div), name!(div)),
1283+
ArithOp::Rem => (name!(rem), name!(rem)),
1284+
ArithOp::Shl => (name!(shl), name!(shl)),
1285+
ArithOp::Shr => (name!(shr), name!(shr)),
1286+
ArithOp::BitXor => (name!(bitxor), name!(bitxor)),
1287+
ArithOp::BitOr => (name!(bitor), name!(bitor)),
1288+
ArithOp::BitAnd => (name!(bitand), name!(bitand)),
12891289
},
12901290
BinaryOp::Assignment { op: Some(aop) } => match aop {
1291-
ArithOp::Add => (name!(add_assign), "add_assign"),
1292-
ArithOp::Mul => (name!(mul_assign), "mul_assign"),
1293-
ArithOp::Sub => (name!(sub_assign), "sub_assign"),
1294-
ArithOp::Div => (name!(div_assign), "div_assign"),
1295-
ArithOp::Rem => (name!(rem_assign), "rem_assign"),
1296-
ArithOp::Shl => (name!(shl_assign), "shl_assign"),
1297-
ArithOp::Shr => (name!(shr_assign), "shr_assign"),
1298-
ArithOp::BitXor => (name!(bitxor_assign), "bitxor_assign"),
1299-
ArithOp::BitOr => (name!(bitor_assign), "bitor_assign"),
1300-
ArithOp::BitAnd => (name!(bitand_assign), "bitand_assign"),
1291+
ArithOp::Add => (name!(add_assign), name!(add_assign)),
1292+
ArithOp::Mul => (name!(mul_assign), name!(mul_assign)),
1293+
ArithOp::Sub => (name!(sub_assign), name!(sub_assign)),
1294+
ArithOp::Div => (name!(div_assign), name!(div_assign)),
1295+
ArithOp::Rem => (name!(rem_assign), name!(rem_assign)),
1296+
ArithOp::Shl => (name!(shl_assign), name!(shl_assign)),
1297+
ArithOp::Shr => (name!(shr_assign), name!(shr_assign)),
1298+
ArithOp::BitXor => (name!(bitxor_assign), name!(bitxor_assign)),
1299+
ArithOp::BitOr => (name!(bitor_assign), name!(bitor_assign)),
1300+
ArithOp::BitAnd => (name!(bitand_assign), name!(bitand_assign)),
13011301
},
13021302
BinaryOp::CmpOp(cop) => match cop {
1303-
CmpOp::Eq { negated: false } => (name!(eq), "eq"),
1304-
CmpOp::Eq { negated: true } => (name!(ne), "eq"),
1303+
CmpOp::Eq { negated: false } => (name!(eq), name!(eq)),
1304+
CmpOp::Eq { negated: true } => (name!(ne), name!(eq)),
13051305
CmpOp::Ord { ordering: Ordering::Less, strict: false } => {
1306-
(name!(le), "partial_ord")
1306+
(name!(le), name!(partial_ord))
1307+
}
1308+
CmpOp::Ord { ordering: Ordering::Less, strict: true } => {
1309+
(name!(lt), name!(partial_ord))
13071310
}
1308-
CmpOp::Ord { ordering: Ordering::Less, strict: true } => (name!(lt), "partial_ord"),
13091311
CmpOp::Ord { ordering: Ordering::Greater, strict: false } => {
1310-
(name!(ge), "partial_ord")
1312+
(name!(ge), name!(partial_ord))
13111313
}
13121314
CmpOp::Ord { ordering: Ordering::Greater, strict: true } => {
1313-
(name!(gt), "partial_ord")
1315+
(name!(gt), name!(partial_ord))
13141316
}
13151317
},
13161318
BinaryOp::Assignment { op: None } => return None,

0 commit comments

Comments
 (0)