aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/lux/tool/compiler/default/cache.lux
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/source/lux/tool/compiler/default/cache.lux')
-rw-r--r--stdlib/source/lux/tool/compiler/default/cache.lux35
1 files changed, 35 insertions, 0 deletions
diff --git a/stdlib/source/lux/tool/compiler/default/cache.lux b/stdlib/source/lux/tool/compiler/default/cache.lux
new file mode 100644
index 000000000..1770b4a82
--- /dev/null
+++ b/stdlib/source/lux/tool/compiler/default/cache.lux
@@ -0,0 +1,35 @@
+(.module:
+ [lux #*
+ [data
+ [format
+ ["_" binary (#+ Format)]]]])
+
+(def: definition
+ (Format Definition)
+ ($_ _.and _.type _.code _.any))
+
+(def: alias
+ (Format [Text Text])
+ (_.and _.text _.text))
+
+## TODO: Remove #module-hash, #imports & #module-state ASAP.
+## TODO: Not just from this parser, but from the lux.Module type.
+(def: #export module
+ (Format Module)
+ ($_ _.and
+ ## #module-hash
+ (_.ignore 0)
+ ## #module-aliases
+ (_.list ..alias)
+ ## #definitions
+ (_.list (_.and _.text ..definition))
+ ## #imports
+ (_.list _.text)
+ ## #tags
+ (_.ignore (list))
+ ## #types
+ (_.ignore (list))
+ ## #module-annotations
+ (_.maybe _.code)
+ ## #module-state
+ (_.ignore #.Cached)))