about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2015-02-08 11:33:29 -0800
committerKartik K. Agaram <vc@akkartik.com>2015-02-08 11:33:29 -0800
commite898c419dbd81d24071e0e4592f87ee63d4f6b9f (patch)
tree0201530be94a5d97ef5c6c56a09a1e6faf50d31c
parent21ba80df9a835b9c4251ebbe79ad04d6c777c31b (diff)
downloadmu-e898c419dbd81d24071e0e4592f87ee63d4f6b9f.tar.gz
715 - support metadata in top-level names
-rw-r--r--mu.arc13
1 files changed, 12 insertions, 1 deletions
diff --git a/mu.arc b/mu.arc
index 1628256c..4da94d2b 100644
--- a/mu.arc
+++ b/mu.arc
@@ -1482,10 +1482,12 @@
       function!
         (let (name (_make-br-fn body))  rest
           (assert (is 'make-br-fn _make-br-fn))
+          (= name (v tokenize-arg.name))
           (= function*.name body))
       function
         (let (name (_make-br-fn body))  rest
           (assert (is 'make-br-fn _make-br-fn))
+          (= name (v tokenize-arg.name))
           (when function*.name
             (prn "adding new clause to @name"))
           (= function*.name (join body function*.name)))
@@ -1494,6 +1496,7 @@
       and-record
         (let (name (_make-br-fn fields))  rest
           (assert (is 'make-br-fn _make-br-fn))
+          (= name (v tokenize-arg.name))
           (let fields (map tokenize-arg fields)
             (= type*.name (obj size len.fields
                                and-record t
@@ -1504,11 +1507,13 @@
       ; primitive <type>
       primitive
         (let (name) rest
+          (= name (v tokenize-arg.name))
           (= type*.name (obj size 1)))
 
       ; address <type> <elem-type>
       address
         (let (name types)  rest
+          (= name (v tokenize-arg.name))
           (= type*.name (obj size 1
                              address t
                              elem types)))
@@ -1516,6 +1521,7 @@
       ; array <type> <elem-type>
       array
         (let (name types)  rest
+          (= name (v tokenize-arg.name))
           (= type*.name (obj array t
                              elem types)))
 
@@ -1525,6 +1531,8 @@
       before
         (let (label (_make-br-fn fragment))  rest
           (assert (is 'make-br-fn _make-br-fn))
+          ; todo: stop using '/' in non-standard manner
+          ;(= label (v tokenize-arg.label))
           (or= before*.label (queue))
           (enq fragment before*.label))
 
@@ -1536,6 +1544,8 @@
       after
         (let (label (_make-br-fn fragment))  rest
           (assert (is 'make-br-fn _make-br-fn))
+          ; todo: stop using '/' in non-standard manner
+          ;(= label (v tokenize-arg.label))
           (push fragment after*.label))
 
       ;else
@@ -1682,7 +1692,8 @@
 (= system-function* (table))
 
 (mac init-fn (name . body)
-  `(= (system-function* ',name) ',body))
+  (let real-name (v tokenize-arg.name)
+    `(= (system-function* ',real-name) ',body)))
 
 (def load-system-functions ()
   (each (name f) system-function*