e2: Option<&Expr>,
lims: RangeLimits,
) -> hir::ExprKind<'hir> {
- use rustc_ast::ast::RangeLimits::*;
+ use rustc_ast::RangeLimits::*;
- let path = match (e1, e2, lims) {
- (None, None, HalfOpen) => sym::RangeFull,
- (Some(..), None, HalfOpen) => sym::RangeFrom,
- (None, Some(..), HalfOpen) => sym::RangeTo,
- (Some(..), Some(..), HalfOpen) => sym::Range,
- (None, Some(..), Closed) => sym::RangeToInclusive,
+ let lang_item = match (e1, e2, lims) {
+ (None, None, HalfOpen) => hir::LangItem::RangeFull,
+ (Some(..), None, HalfOpen) => hir::LangItem::RangeFrom,
+ (None, Some(..), HalfOpen) => hir::LangItem::RangeTo,
+ (Some(..), Some(..), HalfOpen) => hir::LangItem::Range,
+ (None, Some(..), Closed) => hir::LangItem::RangeToInclusive,
(Some(..), Some(..), Closed) => unreachable!(),
(_, None, Closed) => {
self.diagnostic().span_fatal(span, "inclusive range with no end").raise()
use crate::def::{DefKind, Namespace, Res};
use crate::def_id::DefId;
crate use crate::hir_id::HirId;
-use crate::itemlikevisit;
+use crate::{itemlikevisit, LangItem};
- use rustc_ast::ast::{self, CrateSugar, LlvmAsmDialect};
- use rustc_ast::ast::{AttrVec, Attribute, FloatTy, IntTy, Label, LitKind, StrStyle, UintTy};
- pub use rustc_ast::ast::{BorrowKind, ImplPolarity, IsAuto};
- pub use rustc_ast::ast::{CaptureBy, Movability, Mutability};
- use rustc_ast::ast::{InlineAsmOptions, InlineAsmTemplatePiece};
use rustc_ast::node_id::NodeMap;
use rustc_ast::util::parser::ExprPrecedence;
+ use rustc_ast::{self as ast, CrateSugar, LlvmAsmDialect};
+ use rustc_ast::{AttrVec, Attribute, FloatTy, IntTy, Label, LitKind, StrStyle, UintTy};
+ pub use rustc_ast::{BorrowKind, ImplPolarity, IsAuto};
+ pub use rustc_ast::{CaptureBy, Movability, Mutability};
+ use rustc_ast::{InlineAsmOptions, InlineAsmTemplatePiece};
use rustc_data_structures::sync::{par_for_each_in, Send, Sync};
use rustc_macros::HashStable_Generic;
use rustc_span::def_id::LocalDefId;
pub use self::LangItem::*;
use crate::def_id::DefId;
-use crate::Target;
+use crate::{MethodKind, Target};
- use rustc_ast::ast;
+ use rustc_ast as ast;
use rustc_data_structures::fx::FxHashMap;
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
use rustc_macros::HashStable_Generic;