@@ -228,6 +228,7 @@ data Val a
228228 | VPrefer ! (Val a ) ! (Val a )
229229 | VMerge ! (Val a ) ! (Val a ) ! (Maybe (Val a ))
230230 | VToMap ! (Val a ) ! (Maybe (Val a ))
231+ | VShowConstructor ! (Val a )
231232 | VField ! (Val a ) ! Text
232233 | VInject ! (Map Text (Maybe (Val a ))) ! Text ! (Maybe (Val a ))
233234 | VProject ! (Val a ) ! (Either (Set Text ) (Val a ))
@@ -807,6 +808,14 @@ eval !env t0 =
807808 in VListLit Nothing s
808809 (x', ma') ->
809810 VToMap x' ma'
811+ ShowConstructor x ->
812+ case eval env x of
813+ VInject m k _
814+ | Just _ <- Map. lookup k m -> VTextLit (VChunks [] k)
815+ | otherwise -> error errorMsg
816+ VSome _ -> VTextLit (VChunks [] " Some" )
817+ VNone _ -> VTextLit (VChunks [] " None" )
818+ x' -> VShowConstructor x'
810819 Field t (Syntax. fieldSelectionLabel -> k) ->
811820 vField (eval env t) k
812821 Project t (Left ks) ->
@@ -1033,6 +1042,8 @@ conv !env t0 t0' =
10331042 conv env t t' && conv env u u'
10341043 (VToMap t _, VToMap t' _) ->
10351044 conv env t t'
1045+ (VShowConstructor t, VShowConstructor t') ->
1046+ conv env t t'
10361047 (VField t k, VField t' k') ->
10371048 conv env t t' && k == k'
10381049 (VProject t (Left ks), VProject t' (Left ks')) ->
@@ -1243,6 +1254,8 @@ quote !env !t0 =
12431254 Merge (quote env t) (quote env u) (fmap (quote env) ma)
12441255 VToMap t ma ->
12451256 ToMap (quote env t) (fmap (quote env) ma)
1257+ VShowConstructor t ->
1258+ ShowConstructor (quote env t)
12461259 VField t k ->
12471260 Field (quote env t) $ Syntax. makeFieldSelection k
12481261 VProject t p ->
@@ -1442,6 +1455,8 @@ alphaNormalize = goEnv EmptyNames
14421455 Merge (go x) (go y) (fmap go ma)
14431456 ToMap x ma ->
14441457 ToMap (go x) (fmap go ma)
1458+ ShowConstructor x ->
1459+ ShowConstructor (go x)
14451460 Field t k ->
14461461 Field (go t) k
14471462 Project t ks ->
0 commit comments