@@ -419,13 +419,13 @@ where
419
419
levelMVarToParam' (type : Expr) : TermElabM Expr := do
420
420
Term.levelMVarToParam type (except := fun mvarId => univToInfer? == some mvarId)
421
421
422
- def mkResultUniverse (us : Array Level) (rOffset : Nat) : Level :=
422
+ def mkResultUniverse (us : Array Level) (rOffset : Nat) (defaultLevel : Level) : Level :=
423
423
if us.isEmpty && rOffset == 0 then
424
- levelOne
424
+ defaultLevel
425
425
else
426
426
let r := Level.mkNaryMax us.toList
427
- if rOffset == 0 && !r.isZero && !r.isNeverZero then
428
- mkLevelMax r levelOne |>.normalize
427
+ if rOffset == 0 && !r.isZero && !r.isNeverZero && !defaultLevel.isZero then
428
+ mkLevelMax r defaultLevel |>.normalize
429
429
else
430
430
r.normalize
431
431
@@ -446,6 +446,7 @@ where
446
446
go (u : Level) (rOffset : Nat) : OptionT (StateT (Array Level) Id) Unit := do
447
447
match u, rOffset with
448
448
| .max u v, rOffset => go u rOffset; go v rOffset
449
+ | .zero, _ => return ()
449
450
| .imax u v, rOffset => go u rOffset; go v rOffset
450
451
| .succ u, rOffset+1 => go u rOffset
451
452
| u, rOffset =>
@@ -513,7 +514,7 @@ private def updateResultingUniverse (views : Array InductiveView) (numParams : N
513
514
throwError "failed to compute resulting universe level of inductive datatype, provide universe explicitly: {r}"
514
515
let us ← collectUniverses views r rOffset numParams indTypes
515
516
trace[Elab.inductive] "updateResultingUniverse us: {us}, r: {r}, rOffset: {rOffset}"
516
- let rNew := mkResultUniverse us rOffset
517
+ let rNew := mkResultUniverse us rOffset levelOne
517
518
assignLevelMVar r.mvarId! rNew
518
519
indTypes.mapM fun indType => do
519
520
let type ← instantiateMVars indType.type
0 commit comments