Auto merge of #73176 - LeSeulArtichaut:tyctxtat-err, r=eddyb
Add `TyCtxtAt::{ty_error, ty_error_with_message}` ~~Only e2d957d was added, the rest comes from #70551.~~ I was unsure where to put the implementation for those methods, please tell me if there is a better place for it. Closes #72619, ~~blocked on #70551~~. r? @eddyb cc @mark-i-m, maybe this should be part of #70551? If so feel free to cherry-pick or ask me to file a PR against your fork.
This commit is contained in:
commit
9b4db695b0
1 changed files with 19 additions and 3 deletions
|
@ -13,13 +13,14 @@ use crate::middle::stability;
|
||||||
use crate::mir::interpret::{self, Allocation, ConstValue, Scalar};
|
use crate::mir::interpret::{self, Allocation, ConstValue, Scalar};
|
||||||
use crate::mir::{Body, Field, Local, Place, PlaceElem, ProjectionKind, Promoted};
|
use crate::mir::{Body, Field, Local, Place, PlaceElem, ProjectionKind, Promoted};
|
||||||
use crate::traits;
|
use crate::traits;
|
||||||
|
use crate::ty::query::{self, TyCtxtAt};
|
||||||
use crate::ty::steal::Steal;
|
use crate::ty::steal::Steal;
|
||||||
use crate::ty::subst::{GenericArg, GenericArgKind, InternalSubsts, Subst, SubstsRef, UserSubsts};
|
use crate::ty::subst::{GenericArg, GenericArgKind, InternalSubsts, Subst, SubstsRef, UserSubsts};
|
||||||
use crate::ty::TyKind::*;
|
use crate::ty::TyKind::*;
|
||||||
use crate::ty::{
|
use crate::ty::{
|
||||||
self, query, AdtDef, AdtKind, BindingMode, BoundVar, CanonicalPolyFnSig, Const, ConstVid,
|
self, AdtDef, AdtKind, BindingMode, BoundVar, CanonicalPolyFnSig, Const, ConstVid, DefIdTree,
|
||||||
DefIdTree, ExistentialPredicate, FloatVar, FloatVid, GenericParamDefKind, InferConst, InferTy,
|
ExistentialPredicate, FloatVar, FloatVid, GenericParamDefKind, InferConst, InferTy, IntVar,
|
||||||
IntVar, IntVid, List, ParamConst, ParamTy, PolyFnSig, Predicate, PredicateInner, PredicateKind,
|
IntVid, List, ParamConst, ParamTy, PolyFnSig, Predicate, PredicateInner, PredicateKind,
|
||||||
ProjectionTy, Region, RegionKind, ReprOptions, TraitObjectVisitor, Ty, TyKind, TyS, TyVar,
|
ProjectionTy, Region, RegionKind, ReprOptions, TraitObjectVisitor, Ty, TyKind, TyS, TyVar,
|
||||||
TyVid, TypeAndMut,
|
TyVid, TypeAndMut,
|
||||||
};
|
};
|
||||||
|
@ -2615,6 +2616,21 @@ impl<'tcx> TyCtxt<'tcx> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl TyCtxtAt<'tcx> {
|
||||||
|
/// Constructs a `TyKind::Error` type and registers a `delay_span_bug` to ensure it gets used.
|
||||||
|
#[track_caller]
|
||||||
|
pub fn ty_error(self) -> Ty<'tcx> {
|
||||||
|
self.tcx.ty_error_with_message(self.span, "TyKind::Error constructed but no error reported")
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Constructs a `TyKind::Error` type and registers a `delay_span_bug` with the given `msg to
|
||||||
|
/// ensure it gets used.
|
||||||
|
#[track_caller]
|
||||||
|
pub fn ty_error_with_message(self, msg: &str) -> Ty<'tcx> {
|
||||||
|
self.tcx.ty_error_with_message(self.span, msg)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub trait InternAs<T: ?Sized, R> {
|
pub trait InternAs<T: ?Sized, R> {
|
||||||
type Output;
|
type Output;
|
||||||
fn intern_with<F>(self, f: F) -> Self::Output
|
fn intern_with<F>(self, f: F) -> Self::Output
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue