aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/library/lux/type
diff options
context:
space:
mode:
authorEduardo Julian2021-08-29 14:57:15 -0400
committerEduardo Julian2021-08-29 14:57:15 -0400
commit1680d4d8bc4046ed4728413f1e7cfd77aa7e84b7 (patch)
tree7e79997206c0102e4cd63f34e4da2a4336df52f4 /stdlib/source/library/lux/type
parentc5b61d2f46ac19bf511197f3a537c4be0f47df33 (diff)
Made labels (tags & slots) into a form of global binding.
Diffstat (limited to 'stdlib/source/library/lux/type')
-rw-r--r--stdlib/source/library/lux/type/abstract.lux61
1 files changed, 35 insertions, 26 deletions
diff --git a/stdlib/source/library/lux/type/abstract.lux b/stdlib/source/library/lux/type/abstract.lux
index 837f6ba11..9a0edab98 100644
--- a/stdlib/source/library/lux/type/abstract.lux
+++ b/stdlib/source/library/lux/type/abstract.lux
@@ -60,11 +60,14 @@
(-> Text (List [Text Global]) (Stack Frame))
(!peek source reference
(case head
- (#.Left _)
- (undefined)
+ (#.Definition [exported? frame_type frame_anns frame_value])
+ (:as (Stack Frame) frame_value)
- (#.Right [exported? frame_type frame_anns frame_value])
- (:as (Stack Frame) frame_value))))
+ (^or (#.Type _)
+ (#.Alias _)
+ (#.Label _)
+ (#.Slot _))
+ (undefined))))
(def: (peek_frames reference definition_reference source)
(-> Text Text (List [Text Module]) (Stack Frame))
@@ -117,14 +120,17 @@
(-> Text Frame (List [Text Global]) (List [Text Global]))
(!push source reference
(case head
- (#.Left _)
- (undefined)
-
- (#.Right [exported? frames_type frames_anns frames_value])
- (#.Right [exported?
- frames_type
- frames_anns
- (..push frame (:as (Stack Frame) frames_value))]))))
+ (#.Definition [exported? frames_type frames_anns frames_value])
+ (#.Definition [exported?
+ frames_type
+ frames_anns
+ (..push frame (:as (Stack Frame) frames_value))])
+
+ (^or (#.Type _)
+ (#.Alias _)
+ (#.Label _)
+ (#.Slot _))
+ (undefined))))
(def: (push_frame [module_reference definition_reference] frame source)
(-> Name Frame (List [Text Module]) (List [Text Module]))
@@ -143,20 +149,23 @@
(-> Text (List [Text Global]) (List [Text Global]))
(!push source reference
(case head
- (#.Left _)
- (undefined)
-
- (#.Right [exported? frames_type frames_anns frames_value])
- (#.Right [exported?
- frames_type
- frames_anns
- (let [current_frames (:as (Stack Frame) frames_value)]
- (case (..pop current_frames)
- (#.Some current_frames')
- current_frames'
-
- #.None
- current_frames))]))))
+ (#.Definition [exported? frames_type frames_anns frames_value])
+ (#.Definition [exported?
+ frames_type
+ frames_anns
+ (let [current_frames (:as (Stack Frame) frames_value)]
+ (case (..pop current_frames)
+ (#.Some current_frames')
+ current_frames'
+
+ #.None
+ current_frames))])
+
+ (^or (#.Type _)
+ (#.Alias _)
+ (#.Label _)
+ (#.Slot _))
+ (undefined))))
(def: (pop_frame [module_reference definition_reference] source)
(-> Name (List [Text Module]) (List [Text Module]))