aboutsummaryrefslogtreecommitdiff
path: root/src/interp/compiler.boot
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2008-12-19 22:14:21 +0000
committerdos-reis <gdr@axiomatics.org>2008-12-19 22:14:21 +0000
commitba161fefd4ab91c4908e7c7da8f6d84373f8e7ce (patch)
treea24aae76cc98229502e4b143804ad5ae8f2dd9a9 /src/interp/compiler.boot
parenta03f68879f697998e2a3f41029a2034dc76767e0 (diff)
downloadopen-axiom-ba161fefd4ab91c4908e7c7da8f6d84373f8e7ce.tar.gz
* interp/define.boot (insertViewMorphisms): New.
(checkRepresentation): Rename from maybeInsertViewMorphisms. Tidy. (compDefineFunctor1): Tidy. (doIt): Insert view morphisms if appropriate.
Diffstat (limited to 'src/interp/compiler.boot')
-rw-r--r--src/interp/compiler.boot4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/interp/compiler.boot b/src/interp/compiler.boot
index 49d99f9a..6885ba74 100644
--- a/src/interp/compiler.boot
+++ b/src/interp/compiler.boot
@@ -220,12 +220,14 @@ applyMapping([op,:argl],m,e,ml) ==
T() == [.,.,e]:= comp(x,m',e) or return "failed"
if argl'="failed" then return nil
form:=
- atom op and not(op in $formalArgList) and not get(op,"value",e) =>
+ atom op and not(op in $formalArgList) and null (u := get(op,"value",e)) =>
nprefix := $prefix or
-- following needed for referencing local funs at capsule level
getAbbreviation($op,#rest $form)
[op',:argl',"$"] where
op':= INTERN STRCONC(encodeItem nprefix,";",encodeItem op)
+ -- Compiler synthetized operators are inline.
+ u ^= nil and u.expr is ["XLAM",:.] => ["call",u.expr,:argl']
['call,['applyFun,op],:argl']
pairlis:= [[v,:a] for a in argl' for v in $FormalMapVariableList]
convert([form,SUBLIS(pairlis,first ml),e],m)