diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2014-12-17 11:01:38 -0800 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2014-12-17 11:01:38 -0800 |
commit | a0bb6c04201ac347f597c63932ea9d8f70f70189 (patch) | |
tree | 91e8b0402318d36fed1aeda6b00582b97f00a9c5 | |
parent | b93d2cd357a127a35b6cf488f5a90df6cc4fdc76 (diff) | |
download | mu-a0bb6c04201ac347f597c63932ea9d8f70f70189.tar.gz |
435 - starting to allow type definitions
-rw-r--r-- | mu.arc | 10 | ||||
-rw-r--r-- | mu.arc.t | 10 |
2 files changed, 20 insertions, 0 deletions
diff --git a/mu.arc b/mu.arc index a4b910b0..0205b863 100644 --- a/mu.arc +++ b/mu.arc @@ -1014,6 +1014,16 @@ (assert (is 'make-br-fn _make-br-fn)) (= function*.name (join body function*.name))) + ; and-record <type> [ <name:types> ] + and-record + (let (name (_make-br-fn fields)) rest + (assert (is 'make-br-fn _make-br-fn)) + (let fields (map tokenize-arg fields) + (= type*.name (obj size len.fields + and-record t + elems (map cdar fields) + fields (map caar fields))))) + ; before <label> [ <instructions> ] ; ; multiple before directives => code in order diff --git a/mu.arc.t b/mu.arc.t index 0a31d8ff..e6c0183c 100644 --- a/mu.arc.t +++ b/mu.arc.t @@ -3319,6 +3319,16 @@ ) ; section 100 for string utilities +(reset) +(new-trace "parse-and-record") +(add-code '((and-record foo [ + x:string + y:integer + z:boolean + ]))) +(if (~iso type*!foo (obj size 3 and-record t elems '((string) (integer) (boolean)) fields '(x y z))) + (prn "F - 'add-code' can add new and-records")) + ;; unit tests for various helpers ; tokenize-args |