aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/lux/lang/compiler/analysis
diff options
context:
space:
mode:
authorEduardo Julian2018-07-04 19:05:21 -0400
committerEduardo Julian2018-07-04 19:05:21 -0400
commit01353c65c1a6b03285eee4de28a12abdbf3c9715 (patch)
treed69fb0561acd363926dc0a3d8d11f3fc351d91a5 /stdlib/source/lux/lang/compiler/analysis
parent9ba7b6416a34d9f031b113aa48b1663b14dcb0aa (diff)
- "with-stack" function for stacking exceptions.
Diffstat (limited to 'stdlib/source/lux/lang/compiler/analysis')
-rw-r--r--stdlib/source/lux/lang/compiler/analysis/function.lux14
-rw-r--r--stdlib/source/lux/lang/compiler/analysis/inference.lux8
-rw-r--r--stdlib/source/lux/lang/compiler/analysis/structure.lux8
3 files changed, 10 insertions, 20 deletions
diff --git a/stdlib/source/lux/lang/compiler/analysis/function.lux b/stdlib/source/lux/lang/compiler/analysis/function.lux
index b6e09f11a..b16b18e59 100644
--- a/stdlib/source/lux/lang/compiler/analysis/function.lux
+++ b/stdlib/source/lux/lang/compiler/analysis/function.lux
@@ -35,9 +35,7 @@
(do macro.Monad<Meta>
[functionT macro.expected-type]
(loop [expectedT functionT]
- (///.with-stacked-errors
- (.function (_ _)
- (ex.construct cannot-analyse [expectedT function-name arg-name body]))
+ (///.with-stack cannot-analyse [expectedT function-name arg-name body]
(case expectedT
(#.Named name unnamedT)
(recur unnamedT)
@@ -95,9 +93,7 @@
(def: #export (apply analyse functionT functionA args)
(-> Compiler Type Analysis (List Code) (Meta Analysis))
- (///.with-stacked-errors
- (.function (_ _)
- (ex.construct cannot-apply [functionT args]))
- (do macro.Monad<Meta>
- [[applyT argsA] (//inference.general analyse functionT args)]
- (wrap (//.apply [functionA argsA])))))
+ (<| (///.with-stack cannot-apply [functionT args])
+ (do macro.Monad<Meta>
+ [[applyT argsA] (//inference.general analyse functionT args)])
+ (wrap (//.apply [functionA argsA]))))
diff --git a/stdlib/source/lux/lang/compiler/analysis/inference.lux b/stdlib/source/lux/lang/compiler/analysis/inference.lux
index abf1529d6..5e3fb0cfe 100644
--- a/stdlib/source/lux/lang/compiler/analysis/inference.lux
+++ b/stdlib/source/lux/lang/compiler/analysis/inference.lux
@@ -143,11 +143,9 @@
(#.Function inputT outputT)
(do ///.Monad<Operation>
[[outputT' args'A] (general analyse outputT args')
- argA (///.with-stacked-errors
- (function (_ _)
- (ex.construct cannot-infer-argument [inputT argC]))
- (//type.with-type inputT
- (analyse argC)))]
+ argA (<| (///.with-stack cannot-infer-argument [inputT argC])
+ (//type.with-type inputT)
+ (analyse argC))]
(wrap [outputT' (list& argA args'A)]))
(#.Var infer-id)
diff --git a/stdlib/source/lux/lang/compiler/analysis/structure.lux b/stdlib/source/lux/lang/compiler/analysis/structure.lux
index 78b36bc32..ed809135a 100644
--- a/stdlib/source/lux/lang/compiler/analysis/structure.lux
+++ b/stdlib/source/lux/lang/compiler/analysis/structure.lux
@@ -77,9 +77,7 @@
(-> Compiler Nat Code (Operation Analysis))
(do ///.Monad<Operation>
[expectedT macro.expected-type]
- (///.with-stacked-errors
- (function (_ _)
- (ex.construct cannot-analyse-variant [expectedT tag valueC]))
+ (///.with-stack cannot-analyse-variant [expectedT tag valueC]
(case expectedT
(#.Sum _)
(let [flat (type.flatten-variant expectedT)
@@ -191,9 +189,7 @@
(-> Compiler (List Code) (Operation Analysis))
(do ///.Monad<Operation>
[expectedT macro.expected-type]
- (///.with-stacked-errors
- (function (_ _)
- (ex.construct cannot-analyse-tuple [expectedT membersC]))
+ (///.with-stack cannot-analyse-tuple [expectedT membersC]
(case expectedT
(#.Product _)
(..typed-product analyse membersC)