aboutsummaryrefslogtreecommitdiff
path: root/lux-bootstrapper/src/lux/analyser.clj
diff options
context:
space:
mode:
authorEduardo Julian2021-09-09 00:29:12 -0400
committerEduardo Julian2021-09-09 00:29:12 -0400
commitef77466323f85a3d1b65b46a3deb93652ef22085 (patch)
treec2715b8cf6e7864fef87e22ee6e206c7c1758849 /lux-bootstrapper/src/lux/analyser.clj
parent085c9a6ef151531cb01b842ed2f4366a49b78367 (diff)
The old record syntax has been re-purposed as variant syntax.
Diffstat (limited to '')
-rw-r--r--lux-bootstrapper/src/lux/analyser.clj10
1 files changed, 6 insertions, 4 deletions
diff --git a/lux-bootstrapper/src/lux/analyser.clj b/lux-bootstrapper/src/lux/analyser.clj
index 5ebda9c6e..f837d8cee 100644
--- a/lux-bootstrapper/src/lux/analyser.clj
+++ b/lux-bootstrapper/src/lux/analyser.clj
@@ -187,10 +187,12 @@
(analyse-variant+ analyse exo-type ?ident parameters))
;; Pattern-matching syntax.
- (&/$Record ?pattern-matching)
- (|let [(&/$Item ?input (&/$End)) parameters]
- (&/with-analysis-meta location exo-type
- (&&lux/analyse-case analyse exo-type ?input ?pattern-matching)))
+ (&/$Variant ?pattern-matching)
+ (if (even? (&/|length ?pattern-matching))
+ (|let [(&/$Item ?input (&/$End)) parameters]
+ (&/with-analysis-meta location exo-type
+ (&&lux/analyse-case analyse exo-type ?input (&/|as-pairs ?pattern-matching))))
+ (&/fail-with-loc (str "[Analyser Error] Unknown syntax: " (&/show-ast (&/T [(&/T ["" -1 -1]) token])))))
;; Function syntax.
(&/$Tuple (&/$Item [_ (&/$Identifier "" ?self)]