1
Fork 0

Also compute implicit params in THIR.

This commit is contained in:
Camille GILLOT 2022-08-22 22:29:25 +02:00
parent 445841cda3
commit af128b0144
3 changed files with 98 additions and 84 deletions

View file

@ -73,6 +73,8 @@ macro_rules! thir_with_elements {
}
}
pub const UPVAR_ENV_PARAM: ParamId = ParamId::from_u32(0);
thir_with_elements! {
arms: ArmId => Arm<'tcx> => "a{}",
blocks: BlockId => Block => "b{}",
@ -84,8 +86,8 @@ thir_with_elements! {
/// Description of a type-checked function parameter.
#[derive(Clone, Debug, HashStable)]
pub struct Param<'tcx> {
/// The pattern that appears in the parameter list.
pub pat: Box<Pat<'tcx>>,
/// The pattern that appears in the parameter list, or None for implicit parameters.
pub pat: Option<Box<Pat<'tcx>>>,
/// The possibly inferred type.
pub ty: Ty<'tcx>,
/// Span of the explicitly provided type, or None if inferred for closures.
@ -93,7 +95,7 @@ pub struct Param<'tcx> {
/// Whether this param is `self`, and how it is bound.
pub self_kind: Option<hir::ImplicitSelfKind>,
/// HirId for lints.
pub hir_id: hir::HirId,
pub hir_id: Option<hir::HirId>,
}
#[derive(Copy, Clone, Debug, HashStable)]