message: use ty::Unevaluated<'tcx, ()> in type system
diff: @@ -124,11 +124,7 @@ pub(crate) fn codegen_constant<'tcx>(
  ) -> CValue<'tcx> {
  let const_ = match fx.monomorphize(constant.literal) {
  ConstantKind::Ty(ct) => ct,
  - ConstantKind::Val(val, ty) => return codegen_const_value(fx, val, ty),
  - };
  - let const_val = match const_.kind() {
  - ConstKind::Value(valtree) => fx.tcx.valtree_to_const_val((const_.ty(), valtree)),
  - ConstKind::Unevaluated(ty::Unevaluated { def, substs, promoted })
  + ConstantKind::Unevaluated(mir::Unevaluated { def, substs, promoted })
  if fx.tcx.is_static(def.did) =>
  {
  assert!(substs.is_empty());
  @@ -136,7 +132,7 @@ pub(crate) fn codegen_constant<'tcx>(
  return codegen_static_ref(fx, def.did, fx.layout_of(const_.ty())).to_cvalue(fx);
  }
  - ConstKind::Unevaluated(unevaluated) => {
  + ConstantKind::Unevaluated(unevaluated) => {
  match fx.tcx.const_eval_resolve(ParamEnv::reveal_all(), unevaluated, None) {
  Ok(const_val) => const_val,
  Err(_) => {
  @@ -144,6 +140,17 @@ pub(crate) fn codegen_constant<'tcx>(
  }
  }
  }
  + ConstantKind::Val(val, ty) => return codegen_const_value(fx, val, ty),
  + };
  + let const_val = match const_.kind() {
  + ConstKind::Value(valtree) => fx.tcx.valtree_to_const_val((const_.ty(), valtree)),
  + ConstKind::Unevaluated(ty::Unevaluated { def, substs, promoted })
  + if fx.tcx.is_static(def.did) =>
  + {
  + assert!(substs.is_empty());
  + assert!(promoted.is_none());
  + return codegen_static_ref(fx, def.did, fx.layout_of(const_.ty())).to_cvalue(fx);
  + }
  ConstKind::Param(_)
  | ConstKind::Infer(_)
  | ConstKind::Bound(_, _)
  