diff options
author | Eduardo Julian | 2021-08-29 14:57:15 -0400 |
---|---|---|
committer | Eduardo Julian | 2021-08-29 14:57:15 -0400 |
commit | 1680d4d8bc4046ed4728413f1e7cfd77aa7e84b7 (patch) | |
tree | 7e79997206c0102e4cd63f34e4da2a4336df52f4 /stdlib/source/library/lux/type | |
parent | c5b61d2f46ac19bf511197f3a537c4be0f47df33 (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.lux | 61 |
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])) |