about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2014-10-30 17:34:34 -0700
committerKartik K. Agaram <vc@akkartik.com>2014-10-30 17:34:34 -0700
commit13315b2a579d560c93f69aa033840e1c2facf67d (patch)
tree3c600151a689523073a4f9e11008150ef6a4349d
parent3eb350738277cf7694136550cf3560415a3b0a08 (diff)
downloadmu-13315b2a579d560c93f69aa033840e1c2facf67d.tar.gz
182
-rw-r--r--mu.arc3
-rw-r--r--mu.arc.t22
2 files changed, 24 insertions, 1 deletions
diff --git a/mu.arc b/mu.arc
index 19c8946d..df6aff2a 100644
--- a/mu.arc
+++ b/mu.arc
@@ -671,7 +671,8 @@
 (def maybe-add (arg offset idx)
   (unless (or (in ty.arg 'literal 'offset)
               (offset v.arg)
-              (~isa v.arg 'sym))
+              (~isa v.arg 'sym)
+              (in v.arg 'nil 'default-scope))
     (= (offset v.arg) idx)))
 
 ;; literate tangling system for reordering code
diff --git a/mu.arc.t b/mu.arc.t
index 96e7c866..6e8a0ad7 100644
--- a/mu.arc.t
+++ b/mu.arc.t
@@ -1368,6 +1368,17 @@
   (prn "F - convert-names renames symbolic names to integer offsets"))
 
 (reset)
+(new-trace "convert-names-nil")
+(if (~iso (convert-names
+            '(((x integer) <- copy (4 literal))
+              ((y integer) <- copy (2 literal))
+              ((nil integer) <- add (x integer) (y integer))))
+          '(((1 integer) <- copy (4 literal))
+            ((2 integer) <- copy (2 literal))
+            ((nil integer) <- add (1 integer) (2 integer))))
+  (prn "F - convert-names never renames nil"))
+
+(reset)
 (new-trace "convert-quotes-defer")
 (if (~iso (convert-quotes
             '(((1 integer) <- copy (4 literal))
@@ -1421,4 +1432,15 @@
   (if (no rep.last-routine!error)
     (prn "F - default-scope checks bounds")))
 
+(reset)
+(new-trace "convert-names-default-scope")
+(if (~iso (convert-names
+            '(((x integer) <- copy (4 literal))
+              ((y integer) <- copy (2 literal))
+              ((default-scope integer) <- add (x integer) (y integer))))
+          '(((1 integer) <- copy (4 literal))
+            ((2 integer) <- copy (2 literal))
+            ((default-scope integer) <- add (1 integer) (2 integer))))
+  (prn "F - convert-names never renames default-scope"))
+
 (reset)  ; end file with this to persist the trace for the final test