aboutsummaryrefslogtreecommitdiff
path: root/src/interp/template.boot
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2007-12-12 07:44:36 +0000
committerdos-reis <gdr@axiomatics.org>2007-12-12 07:44:36 +0000
commit6d7d09414b6a40d3005b591ed05f2f466a4494f0 (patch)
tree3caaf1c274428eecaad29cf876f983f9b510e40f /src/interp/template.boot
parent59c74f79255a713a633fc6b7ca3e18ff89d018b7 (diff)
downloadopen-axiom-6d7d09414b6a40d3005b591ed05f2f466a4494f0.tar.gz
* compiler.boot (comp3): Use isQuasiquote.
(compSymbol): Use condition type view for non Union objects. (getUniqueCaseView): New. Subroutine of compSymbol. (compForm2): Don't infer type for flag parameter through unique compilcation. (checkCallingConvention): New. (compileQuasiquote): coerce, don't convert. (compCase1): Handle non Union type object through modemap selection. (maybeSpliceMode): New. Subroutine of compCase1. Register special form compiler with their names, not pointers. * define.boot (candidateSignatures): New. (hasSigInTargetCategory): Use it. Tidy. (checkAndDeclare): Use isQuasiquote. (spadCompileorSetq): Rename non atomic parameters before calling LISP compiler. * g-util.boot (quasiquote): New. (isQuasiquote): Likewise. * i-intern.boot (flagArguments): New. (signatureFromModemap): Likewise. (mkAtree3): Use them. Handle functions taking flag arguments. * i-object.boot (getFlagArgsPos): New. * i-spec1.boot (userDefinedCase): Now prepare form and hands back to bottomUp. (upcase): Adjust call to userDefinedCase. * modemap.boot (addDomain): Don't add flag domains to the environment. * nruncomp.boot (NRTencode): Handle flag values. (NRTgetLocalIndex1): Likewise. * nrunfast.boot (lazyMatch): Likewise. (newExpandLocalTypeForm): Likewise. * sys-constants.boot ($DummyFunctorNames): Include quasiquote constructor. * template.boot (NRTaddInner): Handle flag values.
Diffstat (limited to 'src/interp/template.boot')
-rw-r--r--src/interp/template.boot3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/interp/template.boot b/src/interp/template.boot
index 75e61ac8..a8abe566 100644
--- a/src/interp/template.boot
+++ b/src/interp/template.boot
@@ -286,6 +286,7 @@ NRTaddInner x ==
getConstructorSignature x is [.,:ml] =>
for y in rest x for m in ml | not (y = '$) repeat
isCategoryForm(m,$CategoryFrame) => NRTinnerGetLocalIndex y
+ isQuasiquote x => NRTinnerGetLocalIndex x
keyedSystemError("S2NR0003",[x])
x
@@ -294,7 +295,7 @@ NRTaddInner x ==
NRTinnerGetLocalIndex x ==
atom x => x
-- following test should skip Unions, Records, Mapping
- MEMQ(opOf x,'(Union Record Mapping)) => NRTgetLocalIndex x
+ MEMQ(opOf x,'(Union Record Mapping _[_|_|_])) => NRTgetLocalIndex x
constructor?(x) => NRTgetLocalIndex x
NRTaddInner x