diff options
Diffstat (limited to 'src/interp/compiler.boot')
-rw-r--r-- | src/interp/compiler.boot | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/interp/compiler.boot b/src/interp/compiler.boot index 60f2fc50..1d2921eb 100644 --- a/src/interp/compiler.boot +++ b/src/interp/compiler.boot @@ -327,9 +327,10 @@ finishLambdaExpression(expr is ['%lambda,vars,.],env) == compWithMappingMode(x,m is ["Mapping",m',:sl],oldE) == e := oldE isFunctor x => + db := currentDB e if get(x,"modemap",$CategoryFrame) is [[[.,target,:argModeList],.],:.] and - (and/[extendsCategoryForm("$",s,mode) for mode in argModeList for s in sl] - ) and extendsCategoryForm("$",target,m') then + (and/[extendsCategoryForm(db,"$",s,mode) for mode in argModeList for s in sl] + ) and extendsCategoryForm(db,"$",target,m') then return [['%function,x],m,e] x is ["+->",:.] => compLambda(x,m,oldE) if string? x then x := makeSymbol x @@ -1843,7 +1844,7 @@ coerceHard(T,m) == string? T.expr and T.expr=m => [T.expr,m,$e] isCategoryForm(m,$e) => $bootStrapMode => [T.expr,m,$e] - extendsCategoryForm(T.expr,T.mode,m) => [T.expr,m,$e] + extendsCategoryForm(currentDB $e,T.expr,T.mode,m) => [T.expr,m,$e] coerceExtraHard(T,m) (m' is "$" and m = $functorForm) or (m' = $functorForm and m = "$") => [T.expr,m,$e] |