Expand description
Type checking expressions.
See rustc_hir_analysis::check for more context on type checking in general.
Re-exportsยง
use std::borrow::Cow;๐use rustc_abi::FIRST_VARIANT;๐use rustc_abi::FieldIdx;๐use rustc_ast as ast;๐use rustc_ast::util::parser::ExprPrecedence;๐use rustc_attr_ir::find_attr;๐use rustc_attr_ir::lang_items::LangItem;๐use rustc_data_structures::fx::FxHashMap;๐use rustc_data_structures::fx::FxHashSet;๐use rustc_data_structures::thin_vec::ThinVec;๐use rustc_data_structures::unord::UnordMap;๐use rustc_errors::Applicability;๐use rustc_errors::Diag;๐use rustc_errors::ErrorGuaranteed;๐use rustc_errors::MultiSpan;๐use rustc_errors::StashKey;๐use rustc_errors::Subdiagnostic;๐use rustc_errors::listify;๐use rustc_errors::pluralize;๐use rustc_errors::struct_span_code_err;๐use rustc_hir as hir;๐use rustc_hir::def::CtorKind;๐use rustc_hir::def::DefKind;๐use rustc_hir::def::Res;๐use rustc_hir::def_id::DefId;๐use rustc_hir::ExprKind;๐use rustc_hir::HirId;๐use rustc_hir::QPath;๐use rustc_hir::is_range_literal;๐use rustc_hir_analysis::diagnostics::NoFieldOnType;๐use rustc_hir_analysis::diagnostics::NoVariantNamed;๐use rustc_hir_analysis::hir_ty_lowering::HirTyLowerer as _;๐use rustc_infer::infer;๐use rustc_infer::infer::RegionVariableOrigin;๐use rustc_infer::traits::WellFormedLoc;๐use rustc_infer::traits::query::NoSolution;๐use rustc_middle::ty::adjustment::Adjust;๐use rustc_middle::ty::adjustment::Adjustment;๐use rustc_middle::ty::adjustment::AllowTwoPhase;๐use rustc_middle::ty::error::ExpectedFound;๐use rustc_middle::ty::error::TypeError;๐use rustc_middle::ty;๐use rustc_middle::ty::AdtKind;๐use rustc_middle::ty::GenericArgsRef;๐use rustc_middle::ty::Ty;๐use rustc_middle::ty::TypeVisitableExt;๐use rustc_middle::ty::Unnormalized;๐use rustc_session::diagnostics::feature_err;๐use rustc_span::edit_distance::find_best_match_for_name;๐use rustc_span::hygiene::DesugaringKind;๐use rustc_span::Ident;๐use rustc_span::Span;๐use rustc_span::Spanned;๐use rustc_span::Symbol;๐use rustc_span::bug;๐use rustc_span::kw;๐use rustc_span::span_bug;๐use rustc_span::sym;๐use rustc_trait_selection::infer::InferCtxtExt;๐use rustc_trait_selection::traits;๐use rustc_trait_selection::traits::ObligationCauseCode;๐use rustc_trait_selection::traits::ObligationCtxt;๐use tracing::debug;๐use tracing::instrument;๐use tracing::instrument;๐use tracing::trace;๐use crate::Expectation;๐use crate::Expectation::ExpectCastableToType;๐use crate::Expectation::ExpectHasType;๐use crate::Expectation::NoExpectation;๐use crate::callee::SplatLoweringInfo;๐use crate::coercion::CoerceMany;๐use crate::diagnostics::AddressOfTemporaryTaken;๐use crate::diagnostics::BaseExpressionDoubleDot;๐use crate::diagnostics::BaseExpressionDoubleDotAddExpr;๐use crate::diagnostics::BaseExpressionDoubleDotRemove;๐use crate::diagnostics::CantDereference;๐use crate::diagnostics::ExprParenthesesNeeded;๐use crate::diagnostics::FieldMultiplySpecifiedInInitializer;๐use crate::diagnostics::FunctionalRecordUpdateOnNonStruct;๐use crate::diagnostics::HelpUseLatestEdition;๐use crate::diagnostics::NakedAsmOutsideNakedFn;๐use crate::diagnostics::NoFieldOnVariant;๐use crate::diagnostics::ReturnLikeStatementKind;๐use crate::diagnostics::ReturnStmtOutsideOfFnBody;๐use crate::diagnostics::StructExprNonExhaustive;๐use crate::diagnostics::TypeMismatchFruTypo;๐use crate::diagnostics::YieldExprOutsideOfCoroutine;๐use crate::op::contains_let_in_chain;๐use crate::BreakableCtxt;๐use crate::CoroutineTypes;๐use crate::Diverges;๐use crate::FnCtxt;๐use crate::GatherLocalsVisitor;๐use crate::Needs;๐use crate::TupleArgumentsFlag;๐use crate::cast;๐use crate::fatally_break_rust;๐use crate::type_error_struct;๐use rustc_errors::codes::*;๐