aboutsummaryrefslogtreecommitdiff
path: root/new-luxc/source/luxc/lang/host/macro.lux
diff options
context:
space:
mode:
authorEduardo Julian2017-11-15 23:40:46 -0400
committerEduardo Julian2017-11-15 23:40:46 -0400
commit37b94ba49afb272c63ec66e42d56b8fba35cea9f (patch)
tree85c5ad242dc2a0d4bf187094e90f779b7072ef8c /new-luxc/source/luxc/lang/host/macro.lux
parent190b512a822fefbb9c66271feb189cc6ccebaf85 (diff)
- Moved "luxc/lang/host/macro" to "luxc/lang/macro".
Diffstat (limited to 'new-luxc/source/luxc/lang/host/macro.lux')
-rw-r--r--new-luxc/source/luxc/lang/host/macro.lux37
1 files changed, 0 insertions, 37 deletions
diff --git a/new-luxc/source/luxc/lang/host/macro.lux b/new-luxc/source/luxc/lang/host/macro.lux
deleted file mode 100644
index d557b6750..000000000
--- a/new-luxc/source/luxc/lang/host/macro.lux
+++ /dev/null
@@ -1,37 +0,0 @@
-(;module:
- lux
- (lux (control [monad #+ do])
- (data ["e" error])
- [macro]
- [host])
- (luxc (lang (translation [";T" common])))
- [..])
-
-(for {"JVM" (as-is (host;import java.lang.reflect.Method
- (invoke [Object (Array Object)] #try Object))
- (host;import (java.lang.Class c)
- (getMethod [String (Array (Class Object))] #try Method))
- (host;import java.lang.Object
- (getClass [] (Class Object))
- (toString [] String))
- (def: _object-class (Class Object) (host;class-for Object))
- (def: _apply-args
- (Array (Class Object))
- (|> (host;array (Class Object) +2)
- (host;array-write +0 _object-class)
- (host;array-write +1 _object-class)))
- (def: #export (expand macro inputs)
- (-> Macro (List Code) (Meta (List Code)))
- (do macro;Monad<Meta>
- [class (commonT;load-class ..;function-class)]
- (function [compiler]
- (do e;Monad<Error>
- [apply-method (Class.getMethod ["apply" _apply-args] class)
- output (Method.invoke [(:! Object macro)
- (|> (host;array Object +2)
- (host;array-write +0 (:! Object inputs))
- (host;array-write +1 (:! Object compiler)))]
- apply-method)]
- (:! (e;Error [Compiler (List Code)])
- output))))))
- })