@@ -10,10 +10,14 @@ type object_property = {
1010 optional : bool ;
1111}
1212and runtime_js_value =
13- | String of {value : string value }
14- | Number of {value : string value }
15- | BigInt of {value : string value }
16- | Boolean of {value : bool value }
13+ | StringLiteral of {value : string }
14+ | String
15+ | NumberLiteral of {value : string }
16+ | Number
17+ | BigIntLiteral of {value : string }
18+ | BigInt
19+ | BooleanLiteral of {value : bool }
20+ | Boolean
1721 | NullLiteral
1822 | UndefinedLiteral
1923 | Array of {element_type : runtime_js_value value }
@@ -27,14 +31,14 @@ and runtime_js_value =
2731
2832let rec debug_print_runtime_value (value : runtime_js_value ) =
2933 match value with
30- | String {value = Known v } -> Printf. sprintf " String (%s)" v
31- | String { value = Unknown } -> " String"
32- | Number {value = Known v } -> Printf. sprintf " Number(%s)" v
33- | Number { value = Unknown } -> " Number"
34- | BigInt {value = Known v } -> Printf. sprintf " BigInt(%s)" v
35- | BigInt { value = Unknown } -> " BigInt"
36- | Boolean {value = Known v } -> Printf. sprintf " Boolean(%b)" v
37- | Boolean { value = Unknown } -> " Boolean"
34+ | StringLiteral {value = v } -> Printf. sprintf " StringLiteral (%s)" v
35+ | String -> " String"
36+ | NumberLiteral {value = v } -> Printf. sprintf " Number(%s)" v
37+ | Number -> " Number"
38+ | BigIntLiteral {value = v } -> Printf. sprintf " BigInt(%s)" v
39+ | BigInt -> " BigInt"
40+ | BooleanLiteral {value = v } -> Printf. sprintf " Boolean(%b)" v
41+ | Boolean -> " Boolean"
3842 | NullLiteral -> " Null"
3943 | UndefinedLiteral -> " Undefined"
4044 | Array {element_type = Known v } ->
@@ -61,16 +65,16 @@ type runtime_representation = {possible_values: runtime_js_value list}
6165let tag_type_to_possible_values (tag_type : Ast_untagged_variants.tag_type ) :
6266 runtime_js_value =
6367 match tag_type with
64- | String v -> String {value = Known v}
65- | Int v -> Number {value = Known (string_of_int v)}
66- | Float v -> Number {value = Known v}
67- | BigInt v -> BigInt {value = Known v}
68- | Bool v -> Boolean {value = Known v}
68+ | String v -> StringLiteral {value = v}
69+ | Int v -> NumberLiteral {value = (string_of_int v)}
70+ | Float v -> NumberLiteral {value = v}
71+ | BigInt v -> BigIntLiteral {value = v}
72+ | Bool v -> BooleanLiteral {value = v}
6973 | Null -> NullLiteral
7074 | Undefined -> UndefinedLiteral
71- | Untagged (IntType | FloatType ) -> Number {value = Unknown }
72- | Untagged StringType -> String {value = Unknown }
73- | Untagged BooleanType -> Boolean {value = Unknown }
75+ | Untagged (IntType | FloatType ) -> Number
76+ | Untagged StringType -> String
77+ | Untagged BooleanType -> Boolean
7478 | Untagged ObjectType ->
7579 Object {properties = [] ; can_have_unknown_properties = true }
7680 | Untagged UnknownType -> Any
@@ -90,12 +94,12 @@ let rec to_runtime_representation (type_expr : Types.type_expr) (env : Env.t)
9094 match type_expr.desc with
9195 (* Builtins *)
9296 | Tconstr (p , _ , _ ) when Path. same p Predef. path_string ->
93- [String {value = Unknown } ]
97+ [String ]
9498 | Tconstr (p , _ , _ ) when Path. same p Predef. path_bool ->
95- [Boolean {value = Unknown } ]
99+ [Boolean ]
96100 | Tconstr (p, _, _)
97101 when Path. same p Predef. path_float || Path. same p Predef. path_int ->
98- [Number {value = Unknown } ]
102+ [Number ]
99103 | Tconstr (p , [inner ], _ ) when Path. same p Predef. path_option ->
100104 [UndefinedLiteral ] @ to_runtime_representation inner env
101105 | Tconstr (p , [inner ], _ ) when Path. same p Predef. path_dict ->
@@ -123,14 +127,14 @@ let rec to_runtime_representation (type_expr : Types.type_expr) (env : Env.t)
123127 Ast_untagged_variants. process_tag_type c.cd_attributes
124128 in
125129 match (c.cd_args, tag_type) with
126- | Cstr_tuple [] , None -> String {value = Known c.cd_id.name}
130+ | Cstr_tuple [] , None -> StringLiteral {value = c.cd_id.name}
127131 | Cstr_tuple [] , Some tag_type ->
128132 tag_type_to_possible_values tag_type
129133 | Cstr_tuple payloads , maybe_tag_type ->
130134 let tag_value =
131135 match maybe_tag_type with
132136 | Some tag_type -> tag_type_to_possible_values tag_type
133- | None -> String {value = Known c.cd_id.name}
137+ | None -> StringLiteral {value = c.cd_id.name}
134138 in
135139 Object
136140 {
@@ -160,7 +164,7 @@ let rec to_runtime_representation (type_expr : Types.type_expr) (env : Env.t)
160164 let tag_value =
161165 match maybe_tag_type with
162166 | Some tag_type -> tag_type_to_possible_values tag_type
163- | None -> String {value = Known c.cd_id.name}
167+ | None -> StringLiteral {value = c.cd_id.name}
164168 in
165169 Object
166170 {
@@ -184,7 +188,7 @@ let rec to_runtime_representation (type_expr : Types.type_expr) (env : Env.t)
184188 row_fields
185189 |> List. map (fun ((label , field ) : string * Types. row_field ) ->
186190 match field with
187- | Rpresent None -> [String {value = Known label}]
191+ | Rpresent None -> [StringLiteral {value = label}]
188192 | Rpresent (Some inner ) ->
189193 [
190194 Object
@@ -194,7 +198,7 @@ let rec to_runtime_representation (type_expr : Types.type_expr) (env : Env.t)
194198 [
195199 {
196200 key = " NAME" ;
197- value = Known [String {value = Known label}];
201+ value = Known [StringLiteral {value = label}];
198202 optional = false ;
199203 };
200204 {
@@ -211,13 +215,13 @@ let rec to_runtime_representation (type_expr : Types.type_expr) (env : Env.t)
211215
212216let runtime_values_match (a : runtime_js_value ) (b : runtime_js_value ) =
213217 match (a, b) with
214- | String {value = Known a_value } , String {value = Known b_value } ->
218+ | StringLiteral {value = a_value } , StringLiteral {value = b_value } ->
215219 a_value = b_value
216- | Number {value = Known a_value } , Number {value = Known b_value } ->
220+ | NumberLiteral {value = a_value } , NumberLiteral {value = b_value } ->
217221 a_value = b_value
218- | BigInt {value = Known a_value } , BigInt {value = Known b_value } ->
222+ | BigIntLiteral {value = a_value } , BigIntLiteral {value = b_value } ->
219223 a_value = b_value
220- | Boolean {value = Known a_value } , Boolean {value = Known b_value } ->
224+ | BooleanLiteral {value = a_value } , BooleanLiteral {value = b_value } ->
221225 a_value = b_value
222226 | NullLiteral , NullLiteral -> true
223227 | UndefinedLiteral , UndefinedLiteral -> true
0 commit comments