aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--stdlib/source/lux.lux47
-rw-r--r--stdlib/source/lux/host.jvm.lux27
2 files changed, 28 insertions, 46 deletions
diff --git a/stdlib/source/lux.lux b/stdlib/source/lux.lux
index 7ae8c2847..fc606bc36 100644
--- a/stdlib/source/lux.lux
+++ b/stdlib/source/lux.lux
@@ -603,7 +603,6 @@
## #expected (Maybe Type)
## #seed Nat
## #scope-type-vars (List Nat)
-## #catching (List Text)
## #host Void})
(_lux_def Compiler
(#NamedT ["lux" "Compiler"]
@@ -627,10 +626,7 @@
(#ProdT ## scope-type-vars
(#AppT List Nat)
## "lux;host"
- (#ProdT ## catching
- (#AppT List Text)
- ## "lux;host"
- Void)))))))))))
+ Void))))))))))
(#Cons [["lux" "tags"] (#ListA (#Cons (#TextA "info")
(#Cons (#TextA "source")
(#Cons (#TextA "cursor")
@@ -640,9 +636,8 @@
(#Cons (#TextA "expected")
(#Cons (#TextA "seed")
(#Cons (#TextA "scope-type-vars")
- (#Cons (#TextA "catching")
- (#Cons (#TextA "host")
- #Nil))))))))))))]
+ (#Cons (#TextA "host")
+ #Nil)))))))))))]
(#Cons [["lux" "doc"] (#TextA "Represents the state of the Lux compiler during a run.
It is provided to macros during their invocation, so they can access compiler data.
@@ -1710,7 +1705,7 @@
{#info info #source source #modules modules
#scopes scopes #type-vars types #host host
#seed seed #expected expected #cursor cursor
- #scope-type-vars scope-type-vars #catching _} state]
+ #scope-type-vars scope-type-vars} state]
(_lux_case (get module modules)
(#Some {#module-hash _ #module-aliases _ #defs defs #imports _ #tags tags #types types #module-anns _ #module-state _})
(_lux_case (get name defs)
@@ -1869,7 +1864,7 @@
{#info info #source source #modules modules
#scopes scopes #type-vars types #host host
#seed seed #expected expected #cursor cursor
- #scope-type-vars scope-type-vars #catching _}
+ #scope-type-vars scope-type-vars}
(_lux_case (reverse scopes)
(#Cons {#name (#;Cons module-name #Nil) #inner-closures _ #locals _ #closure _} _)
(#Right [state module-name])
@@ -2214,6 +2209,16 @@
[Real r.% ["real" "%"] "Real remainder."]
)
+(do-template [<type> <name> <op> <doc>]
+ [(def:''' #export (<name> param subject)
+ (list [["lux" "doc"] (#TextA <doc>)])
+ (-> Nat <type> <type>)
+ (_lux_proc <op> [subject param]))]
+
+ [ Deg d.scale [ "deg" "scale"] "Deg(ree) scale."]
+ [ Deg d.reciprocal [ "deg" "reciprocal"] "Deg(ree) reciprocal."]
+ )
+
(do-template [<name> <type> <test> <doc>]
[(def:''' #export (<name> left right)
(list [["lux" "doc"] (#TextA <doc>)])
@@ -2304,7 +2309,7 @@
#scopes scopes #type-vars types #host host
#seed seed #expected expected
#cursor cursor
- #scope-type-vars scope-type-vars #catching _}
+ #scope-type-vars scope-type-vars}
(#Right state (find-macro' modules current-module module name)))))))
(def:''' (macro? ident)
@@ -2559,12 +2564,12 @@
#scopes scopes #type-vars types #host host
#seed seed #expected expected
#cursor cursor
- #scope-type-vars scope-type-vars #catching catching}
+ #scope-type-vars scope-type-vars}
(#Right {#info info #source source #modules modules
#scopes scopes #type-vars types #host host
#seed (n.+ +1 seed) #expected expected
#cursor cursor
- #scope-type-vars scope-type-vars #catching catching}
+ #scope-type-vars scope-type-vars}
(symbol$ ["" ($_ Text/append "__gensym__" prefix (Nat/encode seed))]))))
(macro:' #export (Rec tokens)
@@ -3428,7 +3433,7 @@
(let [{#info info #source source #modules modules
#scopes scopes #type-vars types #host host
#seed seed #expected expected #cursor cursor
- #scope-type-vars scope-type-vars #catching _} state]
+ #scope-type-vars scope-type-vars} state]
(case (get name modules)
(#Some module)
(#Right state module)
@@ -3491,7 +3496,7 @@
(let [{#info info #source source #modules modules
#scopes scopes #type-vars types #host host
#seed seed #expected expected #cursor cursor
- #scope-type-vars scope-type-vars #catching _} state]
+ #scope-type-vars scope-type-vars} state]
(case expected
(#Some type)
(#Right state type)
@@ -4015,7 +4020,7 @@
{#info info #source source #modules modules
#scopes scopes #type-vars types #host host
#seed seed #expected expected #cursor cursor
- #scope-type-vars scope-type-vars #catching _}
+ #scope-type-vars scope-type-vars}
modules)]
(case (get module modules)
(#Some =module)
@@ -4070,7 +4075,7 @@
{#info info #source source #modules modules
#scopes scopes #type-vars types #host host
#seed seed #expected expected #cursor cursor
- #scope-type-vars scope-type-vars #catching _}
+ #scope-type-vars scope-type-vars}
(find (: (-> Scope (Maybe Type))
(lambda [env]
(case env
@@ -4090,7 +4095,7 @@
{#info info #source source #modules modules
#scopes scopes #type-vars types #host host
#seed seed #expected expected #cursor cursor
- #scope-type-vars scope-type-vars #catching _} state]
+ #scope-type-vars scope-type-vars} state]
(case (get v-prefix modules)
#None
#None
@@ -4109,7 +4114,7 @@
{#info info #source source #modules modules
#scopes scopes #type-vars types #host host
#seed seed #expected expected #cursor cursor
- #scope-type-vars scope-type-vars #catching _} state]
+ #scope-type-vars scope-type-vars} state]
(case (get v-prefix modules)
#None
(#Left (Text/append "Unknown definition: " (Ident/encode name)))
@@ -5441,7 +5446,7 @@
{#info info #source source #modules modules
#scopes scopes #type-vars types #host host
#seed seed #expected expected #cursor cursor
- #scope-type-vars scope-type-vars #catching _}
+ #scope-type-vars scope-type-vars}
(#Right state scope-type-vars)
))
@@ -5544,7 +5549,7 @@
(let [{#;info info #;source source #;modules modules #;scopes scopes
#;type-vars types #;host host #;seed seed
#;expected expected #;cursor cursor
- #;scope-type-vars scope-type-vars #catching _} state]
+ #;scope-type-vars scope-type-vars} state]
(#;Right [state cursor]))))
(macro: #export (with-cursor tokens)
diff --git a/stdlib/source/lux/host.jvm.lux b/stdlib/source/lux/host.jvm.lux
index 41d567165..002208fd2 100644
--- a/stdlib/source/lux/host.jvm.lux
+++ b/stdlib/source/lux/host.jvm.lux
@@ -352,28 +352,6 @@
class-params)]
(` (host (~ (ast;symbol ["" class-name])) [(~@ =params)]))))
-(def: (stack-trace->text trace)
- (-> StackTrace Text)
- (let [size (_lux_proc ["jvm" "arraylength"] [trace])
- idxs (list;n.range +0 (n.dec size))]
- (|> idxs
- (map (: (-> Nat Text)
- (lambda [idx]
- (_lux_proc ["jvm" "invokevirtual:java.lang.Object:toString:"]
- [(_lux_proc ["jvm" "aaload"] [trace idx])]))))
- (text;join-with "\n")
- )))
-
-(def: (get-stack-trace t)
- (-> (host java.lang.Throwable) StackTrace)
- (_lux_proc ["jvm" "invokevirtual:java.lang.Throwable:getStackTrace:"] [t]))
-
-(def: #hidden (throwable->text t)
- (All [a] (-> (host java.lang.Throwable) (Either Text a)))
- (#;Left (format (_lux_proc ["jvm" "invokevirtual:java.lang.Object:toString:"] [t])
- "\n"
- (|> t get-stack-trace stack-trace->text))))
-
(def: empty-imports
ClassImports
(list))
@@ -1497,9 +1475,8 @@
"If it succeeds, you get (#;Right result)."
"If it fails, you get (#;Left error+stack-traces-as-text)."
(try (risky-computation input)))}
- (wrap (list (`' (_lux_proc ["jvm" "try"]
- [(#;Right (~ expr))
- ;;throwable->text])))))
+ (with-gensyms [g!_]
+ (wrap (list (`' (_lux_proc ["lux" "try"] [(lambda [(~ g!_)] (~ expr))]))))))
(syntax: #export (instance? [#let [imports (class-imports *compiler*)]]
[class (generic-type^ imports (list))]