Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/lang_items.rs')
-rw-r--r--crates/hir-ty/src/lang_items.rs57
1 files changed, 28 insertions, 29 deletions
diff --git a/crates/hir-ty/src/lang_items.rs b/crates/hir-ty/src/lang_items.rs
index c8e15e2f9c..19d2d29c9e 100644
--- a/crates/hir-ty/src/lang_items.rs
+++ b/crates/hir-ty/src/lang_items.rs
@@ -1,53 +1,52 @@
//! Functions to detect special lang items
-use hir_def::{TraitId, lang_item::LangItems};
-use intern::{Symbol, sym};
+use hir_def::{FunctionId, TraitId, lang_item::LangItems};
pub fn lang_items_for_bin_op(
lang_items: &LangItems,
op: syntax::ast::BinaryOp,
-) -> Option<(Symbol, Option<TraitId>)> {
+) -> Option<(Option<FunctionId>, Option<TraitId>)> {
use syntax::ast::{ArithOp, BinaryOp, CmpOp, Ordering};
Some(match op {
BinaryOp::LogicOp(_) => return None,
BinaryOp::ArithOp(aop) => match aop {
- ArithOp::Add => (sym::add, lang_items.Add),
- ArithOp::Mul => (sym::mul, lang_items.Mul),
- ArithOp::Sub => (sym::sub, lang_items.Sub),
- ArithOp::Div => (sym::div, lang_items.Div),
- ArithOp::Rem => (sym::rem, lang_items.Rem),
- ArithOp::Shl => (sym::shl, lang_items.Shl),
- ArithOp::Shr => (sym::shr, lang_items.Shr),
- ArithOp::BitXor => (sym::bitxor, lang_items.BitXor),
- ArithOp::BitOr => (sym::bitor, lang_items.BitOr),
- ArithOp::BitAnd => (sym::bitand, lang_items.BitAnd),
+ ArithOp::Add => (lang_items.Add_add, lang_items.Add),
+ ArithOp::Mul => (lang_items.Mul_mul, lang_items.Mul),
+ ArithOp::Sub => (lang_items.Sub_sub, lang_items.Sub),
+ ArithOp::Div => (lang_items.Div_div, lang_items.Div),
+ ArithOp::Rem => (lang_items.Rem_rem, lang_items.Rem),
+ ArithOp::Shl => (lang_items.Shl_shl, lang_items.Shl),
+ ArithOp::Shr => (lang_items.Shr_shr, lang_items.Shr),
+ ArithOp::BitXor => (lang_items.BitXor_bitxor, lang_items.BitXor),
+ ArithOp::BitOr => (lang_items.BitOr_bitor, lang_items.BitOr),
+ ArithOp::BitAnd => (lang_items.BitAnd_bitand, lang_items.BitAnd),
},
BinaryOp::Assignment { op: Some(aop) } => match aop {
- ArithOp::Add => (sym::add_assign, lang_items.AddAssign),
- ArithOp::Mul => (sym::mul_assign, lang_items.MulAssign),
- ArithOp::Sub => (sym::sub_assign, lang_items.SubAssign),
- ArithOp::Div => (sym::div_assign, lang_items.DivAssign),
- ArithOp::Rem => (sym::rem_assign, lang_items.RemAssign),
- ArithOp::Shl => (sym::shl_assign, lang_items.ShlAssign),
- ArithOp::Shr => (sym::shr_assign, lang_items.ShrAssign),
- ArithOp::BitXor => (sym::bitxor_assign, lang_items.BitXorAssign),
- ArithOp::BitOr => (sym::bitor_assign, lang_items.BitOrAssign),
- ArithOp::BitAnd => (sym::bitand_assign, lang_items.BitAndAssign),
+ ArithOp::Add => (lang_items.AddAssign_add_assign, lang_items.AddAssign),
+ ArithOp::Mul => (lang_items.MulAssign_mul_assign, lang_items.MulAssign),
+ ArithOp::Sub => (lang_items.SubAssign_sub_assign, lang_items.SubAssign),
+ ArithOp::Div => (lang_items.DivAssign_div_assign, lang_items.DivAssign),
+ ArithOp::Rem => (lang_items.RemAssign_rem_assign, lang_items.RemAssign),
+ ArithOp::Shl => (lang_items.ShlAssign_shl_assign, lang_items.ShlAssign),
+ ArithOp::Shr => (lang_items.ShrAssign_shr_assign, lang_items.ShrAssign),
+ ArithOp::BitXor => (lang_items.BitXorAssign_bitxor_assign, lang_items.BitXorAssign),
+ ArithOp::BitOr => (lang_items.BitOrAssign_bitor_assign, lang_items.BitOrAssign),
+ ArithOp::BitAnd => (lang_items.BitAndAssign_bitand_assign, lang_items.BitAndAssign),
},
BinaryOp::CmpOp(cop) => match cop {
- CmpOp::Eq { negated: false } => (sym::eq, lang_items.PartialEq),
- CmpOp::Eq { negated: true } => (sym::ne, lang_items.PartialEq),
+ CmpOp::Eq { negated: false } => (lang_items.PartialEq_eq, lang_items.PartialEq),
+ CmpOp::Eq { negated: true } => (lang_items.PartialEq_ne, lang_items.PartialEq),
CmpOp::Ord { ordering: Ordering::Less, strict: false } => {
- (sym::le, lang_items.PartialOrd)
+ (lang_items.PartialOrd_le, lang_items.PartialOrd)
}
CmpOp::Ord { ordering: Ordering::Less, strict: true } => {
- (sym::lt, lang_items.PartialOrd)
+ (lang_items.PartialOrd_lt, lang_items.PartialOrd)
}
CmpOp::Ord { ordering: Ordering::Greater, strict: false } => {
- (sym::ge, lang_items.PartialOrd)
+ (lang_items.PartialOrd_ge, lang_items.PartialOrd)
}
CmpOp::Ord { ordering: Ordering::Greater, strict: true } => {
- (sym::gt, lang_items.PartialOrd)
+ (lang_items.PartialOrd_gt, lang_items.PartialOrd)
}
},
BinaryOp::Assignment { op: None } => return None,