@@ -33,36 +33,23 @@ final class Check(pipelineContext: PipelineContext) {
33
33
def checkFun (f : FunDecl , spec : FunSpec ): Unit = {
34
34
val ft = freshen(spec.ty)
35
35
val FunType (_, argTys, resTy) = ft
36
- if (occurrence.eqwater(f.clauses)) {
37
- val clauseEnvs = occurrence.clausesEnvs(f.clauses, ft.argTys, Map .empty)
38
- f.clauses
39
- .lazyZip(1 to f.clauses.length)
40
- .lazyZip(clauseEnvs)
41
- .foreach((clause, index, occEnv) =>
42
- checkClause(clause, argTys, resTy, occEnv, Set .empty, checkCoverage = (index != f.clauses.length))
43
- )
44
- } else {
45
- f.clauses
46
- .lazyZip(1 to f.clauses.length)
47
- .foreach((clause, index) =>
48
- checkClause(clause, argTys, resTy, Env .empty, Set .empty, checkCoverage = (index != f.clauses.length))
49
- )
50
- }
36
+ val clauseEnvs = occurrence.clausesEnvs(f.clauses, ft.argTys, Map .empty)
37
+ f.clauses
38
+ .lazyZip(1 to f.clauses.length)
39
+ .lazyZip(clauseEnvs)
40
+ .foreach((clause, index, occEnv) =>
41
+ checkClause(clause, argTys, resTy, occEnv, Set .empty, checkCoverage = (index != f.clauses.length))
42
+ )
51
43
}
52
44
53
45
def checkOverloadedFun (f : FunDecl , overloadedSpec : OverloadedFunSpec ): Unit = {
54
- val occTyping = occurrence.eqwater(f.clauses)
55
46
overloadedSpec.tys.foreach { funTy =>
56
47
val ft = freshen(funTy)
57
48
val FunType (_, argTys, resTy) = ft
58
- if (occTyping) {
59
- val clauseEnvs = occurrence.clausesEnvs(f.clauses, ft.argTys, Env .empty)
60
- f.clauses
61
- .lazyZip(clauseEnvs)
62
- .map((clause, occEnv) => checkClauseOverloadedClause(clause, argTys, resTy, occEnv))
63
- } else {
64
- f.clauses.map(checkClauseOverloadedClause(_, argTys, resTy, Env .empty))
65
- }
49
+ val clauseEnvs = occurrence.clausesEnvs(f.clauses, ft.argTys, Env .empty)
50
+ f.clauses
51
+ .lazyZip(clauseEnvs)
52
+ .map((clause, occEnv) => checkClauseOverloadedClause(clause, argTys, resTy, occEnv))
66
53
}
67
54
}
68
55
@@ -250,14 +237,10 @@ final class Check(pipelineContext: PipelineContext) {
250
237
val env2 = env.updated(name, funType)
251
238
checkExpr(l, funType, env2)
252
239
case _ =>
253
- if (occurrence.eqwater(l.clauses)) {
254
- val envs = occurrence.clausesEnvs(l.clauses, argTys, env1)
255
- l.clauses
256
- .lazyZip(envs)
257
- .map((clause, occEnv) => checkClause(clause, argTys, resTy, occEnv, Set .empty))
258
- } else {
259
- l.clauses.foreach(checkClause(_, argTys, resTy, env1, Set .empty))
260
- }
240
+ val envs = occurrence.clausesEnvs(l.clauses, argTys, env1)
241
+ l.clauses
242
+ .lazyZip(envs)
243
+ .map((clause, occEnv) => checkClause(clause, argTys, resTy, occEnv, Set .empty))
261
244
}
262
245
env1
263
246
case DynCall (dynRemoteFun : DynRemoteFun , args) =>
@@ -378,16 +361,11 @@ final class Check(pipelineContext: PipelineContext) {
378
361
case TryOfCatchExpr (tryBody, tryClauses, catchClauses, afterBody) =>
379
362
val (tryBodyT, tryEnv) = elab.elabBody(tryBody, env)
380
363
val stackType = clsExnStackTypeDynamic
381
- if (occurrence.eqwater(tryClauses)) {
382
- val tryEnvs = occurrence.clausesEnvs(tryClauses, List (tryBodyT), tryEnv)
383
- tryClauses
384
- .lazyZip(tryEnvs)
385
- .map((clause, occEnv) => checkClause(clause, List (tryBodyT), resTy, occEnv, Set .empty))
386
- catchClauses.map(checkClause(_, List (stackType), resTy, env, Set .empty))
387
- } else {
388
- tryClauses.map(checkClause(_, List (tryBodyT), resTy, tryEnv, Set .empty))
389
- catchClauses.map(checkClause(_, List (stackType), resTy, env, Set .empty))
390
- }
364
+ val tryEnvs = occurrence.clausesEnvs(tryClauses, List (tryBodyT), tryEnv)
365
+ tryClauses
366
+ .lazyZip(tryEnvs)
367
+ .map((clause, occEnv) => checkClause(clause, List (tryBodyT), resTy, occEnv, Set .empty))
368
+ catchClauses.map(checkClause(_, List (stackType), resTy, env, Set .empty))
391
369
afterBody match {
392
370
case Some (block) => elab.elabBody(block, env)._2
393
371
case None => env
@@ -516,14 +494,10 @@ final class Check(pipelineContext: PipelineContext) {
516
494
case _ =>
517
495
env
518
496
}
519
- if (occurrence.eqwater(lambda.clauses)) {
520
- val envs = occurrence.clausesEnvs(lambda.clauses, fParamTys, env1)
521
- lambda.clauses
522
- .lazyZip(envs)
523
- .map((clause, occEnv) => checkClause(clause, fParamTys, fResTy, occEnv, Set .empty))
524
- } else {
525
- lambda.clauses.foreach(checkClause(_, fParamTys, fResTy, env1, exportedVars = Set .empty))
526
- }
497
+ val envs = occurrence.clausesEnvs(lambda.clauses, fParamTys, env1)
498
+ lambda.clauses
499
+ .lazyZip(envs)
500
+ .map((clause, occEnv) => checkClause(clause, fParamTys, fResTy, occEnv, Set .empty))
527
501
env
528
502
}
529
503
0 commit comments