aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/lux/tool
diff options
context:
space:
mode:
authorEduardo Julian2019-09-18 19:20:50 -0400
committerEduardo Julian2019-09-18 19:20:50 -0400
commit5d9fe393959c4c9c9bcbd04cef3115f7f834612f (patch)
treea683700f7221a5410a65502d73d3d46016951b3c /stdlib/source/lux/tool
parentf0a95ee657fef968df1f5f88dc741256e1153e63 (diff)
Added packaging machinery for the JVM compiler.
Diffstat (limited to '')
-rw-r--r--stdlib/source/lux/tool/compiler/default/platform.lux24
-rw-r--r--stdlib/source/lux/tool/compiler/meta/packager/js.lux (renamed from stdlib/source/lux/tool/compiler/meta/packager/script.lux)19
2 files changed, 28 insertions, 15 deletions
diff --git a/stdlib/source/lux/tool/compiler/default/platform.lux b/stdlib/source/lux/tool/compiler/default/platform.lux
index 4ed6d6d42..04937092a 100644
--- a/stdlib/source/lux/tool/compiler/default/platform.lux
+++ b/stdlib/source/lux/tool/compiler/default/platform.lux
@@ -24,7 +24,7 @@
[macro (#+ Expander)]
## TODO: Get rid of this import ASAP
[extension (#+)]
- ["." generation]
+ ["." generation (#+ Buffer)]
[analysis
["." module]]]
[meta
@@ -67,8 +67,26 @@
(///directive.Bundle anchor expression directive)
(-> expression directive)
(! (Try <State+>))))
- (|> platform
- (get@ #runtime)
+ (|> (do ///phase.monad
+ [_ (:share [anchor expression directive]
+ {(///directive.Bundle anchor expression directive)
+ host-directive-bundle}
+ {(generation.Operation anchor expression directive Any)
+ (generation.set-buffer (:share [anchor expression directive]
+ {(///directive.Bundle anchor expression directive)
+ host-directive-bundle}
+ {(Buffer directive)
+ generation.empty-buffer}))})
+ _ (:share [anchor expression directive]
+ {(///directive.Bundle anchor expression directive)
+ host-directive-bundle}
+ {(generation.Operation anchor expression directive Any)
+ (get@ #runtime platform)})]
+ (:share [anchor expression directive]
+ {(///directive.Bundle anchor expression directive)
+ host-directive-bundle}
+ {(generation.Operation anchor expression directive Any)
+ (generation.save-buffer! "")}))
///directive.lift-generation
(///phase.run' (//init.state target
expander
diff --git a/stdlib/source/lux/tool/compiler/meta/packager/script.lux b/stdlib/source/lux/tool/compiler/meta/packager/js.lux
index 8e7988f37..e4c52af5a 100644
--- a/stdlib/source/lux/tool/compiler/meta/packager/script.lux
+++ b/stdlib/source/lux/tool/compiler/meta/packager/js.lux
@@ -1,7 +1,8 @@
(.module:
[lux #*
[control
- [pipe (#+ case>)]]
+ [pipe (#+ case>)]
+ ["." function]]
[data
[binary (#+ Binary)]
["." product]
@@ -18,21 +19,15 @@
[generation (#+ Output)]]]]])
(def: #export (package outputs)
- (All [statements]
- (-> (Output statements) Binary))
+ (-> (Output _.Statement) Binary)
(|> outputs
row.to-list
- (list@map (function (_ [module buffer])
- (|> buffer
- row.to-list
- (:coerce (List [Name _.Statement]))
- (list@map product.right))))
+ (list@map (|>> product.right
+ row.to-list
+ (list@map product.right)))
list@join
(case> (#.Cons head tail)
- (|> (list@fold (function (_ post! pre!)
- (_.then pre! post!))
- head
- tail)
+ (|> (list@fold (function.flip _.then) head tail)
(: _.Statement)
_.code
encoding.to-utf8)