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.rs | 57 |
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, |