aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/lux/tool/compiler/language/lux/generation.lux
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/source/lux/tool/compiler/language/lux/generation.lux')
-rw-r--r--stdlib/source/lux/tool/compiler/language/lux/generation.lux17
1 files changed, 13 insertions, 4 deletions
diff --git a/stdlib/source/lux/tool/compiler/language/lux/generation.lux b/stdlib/source/lux/tool/compiler/language/lux/generation.lux
index 1cfd7db0f..84f4f35d4 100644
--- a/stdlib/source/lux/tool/compiler/language/lux/generation.lux
+++ b/stdlib/source/lux/tool/compiler/language/lux/generation.lux
@@ -4,7 +4,8 @@
[monad (#+ do)]]
[control
["." try (#+ Try)]
- ["." exception (#+ exception:)]]
+ ["." exception (#+ exception:)]
+ ["." function]]
[data
["." product]
["." name ("#@." equivalence)]
@@ -146,6 +147,11 @@
(-> Text (Operation anchor expression directive Text)))
(:: phase.monad map (|>> %.nat (format prefix)) ..next))
+(def: #export (enter-module module)
+ (All [anchor expression directive]
+ (-> Module (Operation anchor expression directive Any)))
+ (extension.update (set@ #module module)))
+
(template [<name> <inputT>]
[(def: #export (<name> label code)
(All [anchor expression directive]
@@ -200,9 +206,12 @@
(#try.Success [[bundle (set@ #registry registry' state)]
id]))))
-(exception: #export (unknown-definition {name Name})
+(exception: #export (unknown-definition {name Name}
+ {known-definitions (List Text)})
(exception.report
- ["Name" (%.name name)]))
+ ["Definition" (name.short name)]
+ ["Module" (name.module name)]
+ ["Known Definitions" (exception.enumerate function.identity known-definitions)]))
(def: #export (remember archive name)
(All [anchor expression directive]
@@ -217,7 +226,7 @@
(#try.Success (get@ #descriptor.registry descriptor))))]
(case (artifact.remember _name registry)
#.None
- (exception.throw ..unknown-definition name)
+ (exception.throw ..unknown-definition [name (artifact.definitions registry)])
(#.Some id)
(#try.Success [stateE [_module id]]))))))