AST "cleanup"

- Combine "type" and "type_constructor" across the board into
"type". These two had represented the same thing for a while, with the
latter simply being a "generic" type that has parameters, but now the
difference is exactly that; the presence of parameters. Also the name
"type_constructor" was needed for inside custom type definitions.
- Remove the "parameter" field for functions that do not have them.
- Correct mistaken usages of "type" when "type_name" was meant.
- Correct mistaken usages of "type_argument" when "type_parameter" was
meant.
pull/204/head
Jonathan Arnett 2022-01-01 19:41:08 +07:00
parent 7c1ce5e840
commit ad88927358
7 changed files with 11904 additions and 12184 deletions

@ -47,14 +47,14 @@ const a = uri.Uri(host: "github.com")
value: (tuple)) value: (tuple))
(constant (constant
name: (identifier) name: (identifier)
type: (type_constructor type: (type
(type)) (type))
value: (list value: (list
(integer) (integer)
(integer))) (integer)))
(constant (constant
name: (identifier) name: (identifier)
type: (type_constructor type: (type
(type_hole)) (type_hole))
value: (list)) value: (list))
(constant (constant
@ -164,14 +164,14 @@ pub const a = uri.Uri(host: "github.com")
value: (tuple)) value: (tuple))
(public_constant (public_constant
name: (identifier) name: (identifier)
type: (type_constructor type: (type
(type)) (type))
value: (list value: (list
(integer) (integer)
(integer))) (integer)))
(public_constant (public_constant
name: (identifier) name: (identifier)
type: (type_constructor type: (type
(type_hole)) (type_hole))
value: (list)) value: (list))
(public_constant (public_constant

@ -15,7 +15,7 @@ external fn a() -> #(List(Int), fn(Int) -> String) = "x" "y"
parameters: (function_parameters parameters: (function_parameters
(function_parameter (function_parameter
type: (type))) type: (type)))
return_type: (type_constructor return_type: (type
(type) (type)
(type)) (type))
body: (external_function_body body: (external_function_body
@ -33,9 +33,8 @@ external fn a() -> #(List(Int), fn(Int) -> String) = "x" "y"
(string))) (string)))
(external_function (external_function
name: (function_name) name: (function_name)
parameters: (function_parameters)
return_type: (tuple_type return_type: (tuple_type
(type_constructor (type
(type)) (type))
(function_type (function_type
parameter_types: (function_parameter_types parameter_types: (function_parameter_types
@ -62,7 +61,7 @@ pub external fn a() -> #(List(Int), fn(Int) -> String) = "x" "y"
parameters: (function_parameters parameters: (function_parameters
(function_parameter (function_parameter
type: (type))) type: (type)))
return_type: (type_constructor return_type: (type
(type) (type)
(type)) (type))
body: (external_function_body body: (external_function_body
@ -80,9 +79,8 @@ pub external fn a() -> #(List(Int), fn(Int) -> String) = "x" "y"
(string))) (string)))
(public_external_function (public_external_function
name: (function_name) name: (function_name)
parameters: (function_parameters)
return_type: (tuple_type return_type: (tuple_type
(type_constructor (type
(type)) (type))
(function_type (function_type
parameter_types: (function_parameter_types parameter_types: (function_parameter_types

@ -10,13 +10,13 @@ external type Map(key, value)
(source_file (source_file
(external_type (external_type
(type)) (type_name))
(external_type (external_type
(type_constructor)) (type_name))
(external_type (external_type
(type_constructor (type_name
(type_argument) (type_parameter)
(type_argument)))) (type_parameter))))
====================== ======================
Public external types Public external types
@ -30,10 +30,10 @@ pub external type Map(key, value)
(source_file (source_file
(public_external_type (public_external_type
(type)) (type_name))
(public_external_type (public_external_type
(type_constructor)) (type_name))
(public_external_type (public_external_type
(type_constructor (type_name
(type_argument) (type_parameter)
(type_argument)))) (type_parameter))))

@ -120,56 +120,30 @@ module.exports = grammar({
_constant_remote_record: ($) => seq($._name, ".", $._constant_record), _constant_remote_record: ($) => seq($._name, ".", $._constant_record),
/* Special constant types */ /* Special constant types */
_constant_type_annotation: ($) => seq(":", field("type", $._constant_type)), // Versions of $._type, $._type_annotation, etc, that have constraints
// specific to constants.
_constant_type: ($) => _constant_type: ($) =>
choice( choice(
$.type_hole, $.type_hole,
alias($.constant_tuple_type, $.tuple_type), alias($.constant_tuple_type, $.tuple_type),
$._constant_type_name, alias($.constant_type, $.type),
$._constant_remote_type_name alias($.constant_remote_type, $.remote_type)
), ),
_constant_type_annotation: ($) => seq(":", field("type", $._constant_type)),
constant_tuple_type: ($) => constant_tuple_type: ($) =>
seq("#", "(", optional(series_of($._constant_type, ",")), ")"), seq("#", "(", optional(series_of($._constant_type, ",")), ")"),
_constant_type_name: ($) => constant_type: ($) =>
choice(
alias($.constant_type_constructor, $.type_constructor),
alias($.constant_type, $.type)
),
_constant_remote_type_name: ($) =>
seq( seq(
$._name, $._upname,
".", optional(seq("(", optional(series_of($._constant_type, ",")), ")"))
choice(
alias($.constant_type_constructor, $.remote_type_constructor),
alias($.constant_type, $.remote_type)
)
), ),
constant_type_constructor: ($) => constant_remote_type: ($) =>
seq($._upname, "(", optional(series_of($._constant_type, ",")), ")"), seq(field("module", $._name), ".", alias($.constant_type, $.type)),
constant_type: ($) => $._upname,
/* External types */ /* External types */
public_external_type: ($) => seq("pub", $._external_type), public_external_type: ($) => seq("pub", $._external_type),
external_type: ($) => $._external_type, external_type: ($) => $._external_type,
_external_type: ($) => _external_type: ($) => seq("external", "type", $.type_name),
seq(
"external",
"type",
choice($.type, alias($.external_type_constructor, $.type_constructor))
),
// TODO: Is this actually any different from the module type constructors?
external_type_constructor: ($) =>
seq(
$._upname,
seq(
"(",
optional(
series_of(alias($.external_type_argument, $.type_argument), ",")
),
")"
)
),
external_type_argument: ($) => $._name,
/* External functions */ /* External functions */
public_external_function: ($) => seq("pub", $._external_function), public_external_function: ($) => seq("pub", $._external_function),
@ -179,26 +153,25 @@ module.exports = grammar({
"external", "external",
"fn", "fn",
field("name", alias($._name, $.function_name)), field("name", alias($._name, $.function_name)),
"(",
optional(
field( field(
"parameters", "parameters",
alias($.external_function_parameters, $.function_parameters) alias($.external_function_parameters, $.function_parameters)
)
), ),
")",
"->", "->",
field("return_type", $._type), field("return_type", $._type),
"=", "=",
field("body", $.external_function_body) field("body", $.external_function_body)
), ),
// TODO: Different from module function parameters? // Different from module function parameters in that module function
// parameters may be labelled whereas external function parameters cannot.
external_function_parameters: ($) => external_function_parameters: ($) =>
seq(
"(",
optional(
series_of( series_of(
alias($.external_function_parameter, $.function_parameter), alias($.external_function_parameter, $.function_parameter),
"," ","
)
),
")"
), ),
external_function_parameter: ($) => external_function_parameter: ($) =>
seq( seq(
@ -587,6 +560,8 @@ module.exports = grammar({
$.field_access, $.field_access,
$.function_call $.function_call
), ),
// Interestingly, the code that parses function arguments also parses
// record arguments, hence the ambiguous name.
arguments: ($) => series_of($.argument, ","), arguments: ($) => series_of($.argument, ","),
argument: ($) => argument: ($) =>
seq( seq(
@ -694,12 +669,22 @@ module.exports = grammar({
$.type_hole, $.type_hole,
$.tuple_type, $.tuple_type,
$.function_type, $.function_type,
$._type_name, $.type,
$._remote_type_name, $.remote_type,
$.type_var $.type_var
), ),
_type_annotation: ($) => seq(":", field("type", $._type)), _type_annotation: ($) => seq(":", field("type", $._type)),
// The type parameters are part of the "name." Bit odd, but 🤷
type_name: ($) =>
seq(
$._upname,
optional(seq("(", optional(series_of($.type_parameter, ",")), ")"))
),
type_parameter: ($) => $._name,
type_hole: ($) => $._discard_name, type_hole: ($) => $._discard_name,
// If you're wondering why there isn't a `list_type` here, the answer is
// that the "type" form for lists is `List`, which is identical to
// user-defined types etc and thus is not parsed specially.
tuple_type: ($) => seq("#", "(", optional(series_of($._type, ",")), ")"), tuple_type: ($) => seq("#", "(", optional(series_of($._type, ",")), ")"),
function_type: ($) => function_type: ($) =>
seq( seq(
@ -710,19 +695,14 @@ module.exports = grammar({
), ),
function_parameter_types: ($) => function_parameter_types: ($) =>
seq("(", optional(series_of($._type, ",")), ")"), seq("(", optional(series_of($._type, ",")), ")"),
_type_name: ($) => choice($.type_constructor, $.type), // "type" is a somewhat ambiguous name, but it refers to a concrete type
_remote_type_name: ($) => // such as `Bool` or `List(Int)` or even `List(#(Int, String))`.
type: ($) =>
seq( seq(
$._name, $._upname,
".", optional(seq("(", optional(series_of($._type, ",")), ")"))
choice(
alias($.type_constructor, $.remote_type_constructor),
alias($.type, $.remote_type)
)
), ),
type_constructor: ($) => remote_type: ($) => seq(field("module", $._name), ".", $.type),
seq($._upname, seq("(", optional(series_of($._type, ",")), ")")),
type: ($) => $._upname,
type_var: ($) => $._name, type_var: ($) => $._name,
/* Common alias becomes a real boy */ /* Common alias becomes a real boy */

@ -913,23 +913,6 @@
} }
] ]
}, },
"_constant_type_annotation": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_constant_type"
}
}
]
},
"_constant_type": { "_constant_type": {
"type": "CHOICE", "type": "CHOICE",
"members": [ "members": [
@ -947,12 +930,39 @@
"value": "tuple_type" "value": "tuple_type"
}, },
{ {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "constant_type"
},
"named": true,
"value": "type"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL", "type": "SYMBOL",
"name": "_constant_type_name" "name": "constant_remote_type"
},
"named": true,
"value": "remote_type"
}
]
},
"_constant_type_annotation": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
}, },
{ {
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL", "type": "SYMBOL",
"name": "_constant_remote_type_name" "name": "_constant_type"
}
} }
] ]
}, },
@ -1006,72 +1016,19 @@
} }
] ]
}, },
"_constant_type_name": { "constant_type": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "constant_type_constructor"
},
"named": true,
"value": "type_constructor"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "constant_type"
},
"named": true,
"value": "type"
}
]
},
"_constant_remote_type_name": {
"type": "SEQ", "type": "SEQ",
"members": [ "members": [
{ {
"type": "SYMBOL", "type": "SYMBOL",
"name": "_name" "name": "_upname"
},
{
"type": "STRING",
"value": "."
}, },
{ {
"type": "CHOICE", "type": "CHOICE",
"members": [ "members": [
{ {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "constant_type_constructor"
},
"named": true,
"value": "remote_type_constructor"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "constant_type"
},
"named": true,
"value": "remote_type"
}
]
}
]
},
"constant_type_constructor": {
"type": "SEQ", "type": "SEQ",
"members": [ "members": [
{
"type": "SYMBOL",
"name": "_upname"
},
{ {
"type": "STRING", "type": "STRING",
"value": "(" "value": "("
@ -1115,127 +1072,73 @@
} }
] ]
}, },
"constant_type": {
"type": "SYMBOL",
"name": "_upname"
},
"public_external_type": {
"type": "SEQ",
"members": [
{ {
"type": "STRING", "type": "BLANK"
"value": "pub" }
}, ]
{
"type": "SYMBOL",
"name": "_external_type"
} }
] ]
}, },
"external_type": { "constant_remote_type": {
"type": "SYMBOL",
"name": "_external_type"
},
"_external_type": {
"type": "SEQ", "type": "SEQ",
"members": [ "members": [
{ {
"type": "STRING", "type": "FIELD",
"value": "external" "name": "module",
"content": {
"type": "SYMBOL",
"name": "_name"
}
}, },
{ {
"type": "STRING", "type": "STRING",
"value": "type" "value": "."
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type"
}, },
{ {
"type": "ALIAS", "type": "ALIAS",
"content": { "content": {
"type": "SYMBOL", "type": "SYMBOL",
"name": "external_type_constructor" "name": "constant_type"
}, },
"named": true, "named": true,
"value": "type_constructor" "value": "type"
}
]
} }
] ]
}, },
"external_type_constructor": { "public_external_type": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_upname"
},
{
"type": "SEQ", "type": "SEQ",
"members": [ "members": [
{ {
"type": "STRING", "type": "STRING",
"value": "(" "value": "pub"
}, },
{ {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL", "type": "SYMBOL",
"name": "external_type_argument" "name": "_external_type"
}
]
}, },
"named": true, "external_type": {
"value": "type_argument" "type": "SYMBOL",
"name": "_external_type"
}, },
{ "_external_type": {
"type": "REPEAT",
"content": {
"type": "SEQ", "type": "SEQ",
"members": [ "members": [
{ {
"type": "STRING", "type": "STRING",
"value": "," "value": "external"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "external_type_argument"
},
"named": true,
"value": "type_argument"
}
]
}
}
]
}, },
{ {
"type": "BLANK" "type": "STRING",
} "value": "type"
]
}, },
{ {
"type": "STRING", "type": "SYMBOL",
"value": ")" "name": "type_name"
}
]
} }
] ]
}, },
"external_type_argument": {
"type": "SYMBOL",
"name": "_name"
},
"public_external_function": { "public_external_function": {
"type": "SEQ", "type": "SEQ",
"members": [ "members": [
@ -1277,6 +1180,13 @@
"value": "function_name" "value": "function_name"
} }
}, },
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{ {
"type": "FIELD", "type": "FIELD",
"name": "parameters", "name": "parameters",
@ -1290,6 +1200,15 @@
"value": "function_parameters" "value": "function_parameters"
} }
}, },
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
},
{ {
"type": "STRING", "type": "STRING",
"value": "->" "value": "->"
@ -1317,16 +1236,6 @@
] ]
}, },
"external_function_parameters": { "external_function_parameters": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ", "type": "SEQ",
"members": [ "members": [
{ {
@ -1361,17 +1270,6 @@
} }
] ]
}, },
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"external_function_parameter": { "external_function_parameter": {
"type": "SEQ", "type": "SEQ",
"members": [ "members": [
@ -4590,11 +4488,11 @@
}, },
{ {
"type": "SYMBOL", "type": "SYMBOL",
"name": "_type_name" "name": "type"
}, },
{ {
"type": "SYMBOL", "type": "SYMBOL",
"name": "_remote_type_name" "name": "remote_type"
}, },
{ {
"type": "SYMBOL", "type": "SYMBOL",
@ -4619,6 +4517,73 @@
} }
] ]
}, },
"type_name": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_upname"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_parameter"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "type_parameter"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"type_parameter": {
"type": "SYMBOL",
"name": "_name"
},
"type_hole": { "type_hole": {
"type": "SYMBOL", "type": "SYMBOL",
"name": "_discard_name" "name": "_discard_name"
@ -4756,62 +4721,16 @@
} }
] ]
}, },
"_type_name": { "type": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_constructor"
},
{
"type": "SYMBOL",
"name": "type"
}
]
},
"_remote_type_name": {
"type": "SEQ", "type": "SEQ",
"members": [ "members": [
{ {
"type": "SYMBOL", "type": "SYMBOL",
"name": "_name" "name": "_upname"
},
{
"type": "STRING",
"value": "."
}, },
{ {
"type": "CHOICE", "type": "CHOICE",
"members": [ "members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "type_constructor"
},
"named": true,
"value": "remote_type_constructor"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "type"
},
"named": true,
"value": "remote_type"
}
]
}
]
},
"type_constructor": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_upname"
},
{ {
"type": "SEQ", "type": "SEQ",
"members": [ "members": [
@ -4857,12 +4776,34 @@
"value": ")" "value": ")"
} }
] ]
},
{
"type": "BLANK"
}
]
} }
] ]
}, },
"type": { "remote_type": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "module",
"content": {
"type": "SYMBOL", "type": "SYMBOL",
"name": "_upname" "name": "_name"
}
},
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "type"
}
]
}, },
"type_var": { "type_var": {
"type": "SYMBOL", "type": "SYMBOL",

@ -19,13 +19,9 @@
] ]
}, },
"return_type": { "return_type": {
"multiple": true, "multiple": false,
"required": false, "required": false,
"types": [ "types": [
{
"type": ".",
"named": false
},
{ {
"type": "function_type", "type": "function_type",
"named": true "named": true
@ -34,10 +30,6 @@
"type": "remote_type", "type": "remote_type",
"named": true "named": true
}, },
{
"type": "remote_type_constructor",
"named": true
},
{ {
"type": "tuple_type", "type": "tuple_type",
"named": true "named": true
@ -46,10 +38,6 @@
"type": "type", "type": "type",
"named": true "named": true
}, },
{
"type": "type_constructor",
"named": true
},
{ {
"type": "type_hole", "type": "type_hole",
"named": true "named": true
@ -266,13 +254,9 @@
] ]
}, },
"type": { "type": {
"multiple": true, "multiple": false,
"required": false, "required": false,
"types": [ "types": [
{
"type": ".",
"named": false
},
{ {
"type": "function_type", "type": "function_type",
"named": true "named": true
@ -281,10 +265,6 @@
"type": "remote_type", "type": "remote_type",
"named": true "named": true
}, },
{
"type": "remote_type_constructor",
"named": true
},
{ {
"type": "tuple_type", "type": "tuple_type",
"named": true "named": true
@ -293,10 +273,6 @@
"type": "type", "type": "type",
"named": true "named": true
}, },
{
"type": "type_constructor",
"named": true
},
{ {
"type": "type_hole", "type": "type_hole",
"named": true "named": true
@ -1223,21 +1199,13 @@
] ]
}, },
"type": { "type": {
"multiple": true, "multiple": false,
"required": false, "required": false,
"types": [ "types": [
{
"type": ".",
"named": false
},
{ {
"type": "remote_type", "type": "remote_type",
"named": true "named": true
}, },
{
"type": "remote_type_constructor",
"named": true
},
{ {
"type": "tuple_type", "type": "tuple_type",
"named": true "named": true
@ -1246,10 +1214,6 @@
"type": "type", "type": "type",
"named": true "named": true
}, },
{
"type": "type_constructor",
"named": true
},
{ {
"type": "type_hole", "type": "type_hole",
"named": true "named": true
@ -1437,7 +1401,7 @@
}, },
"parameters": { "parameters": {
"multiple": false, "multiple": false,
"required": true, "required": false,
"types": [ "types": [
{ {
"type": "function_parameters", "type": "function_parameters",
@ -1446,13 +1410,9 @@
] ]
}, },
"return_type": { "return_type": {
"multiple": true, "multiple": false,
"required": true, "required": true,
"types": [ "types": [
{
"type": ".",
"named": false
},
{ {
"type": "function_type", "type": "function_type",
"named": true "named": true
@ -1461,10 +1421,6 @@
"type": "remote_type", "type": "remote_type",
"named": true "named": true
}, },
{
"type": "remote_type_constructor",
"named": true
},
{ {
"type": "tuple_type", "type": "tuple_type",
"named": true "named": true
@ -1473,10 +1429,6 @@
"type": "type", "type": "type",
"named": true "named": true
}, },
{
"type": "type_constructor",
"named": true
},
{ {
"type": "type_hole", "type": "type_hole",
"named": true "named": true
@ -1513,11 +1465,7 @@
"required": true, "required": true,
"types": [ "types": [
{ {
"type": "type", "type": "type_name",
"named": true
},
{
"type": "type_constructor",
"named": true "named": true
} }
] ]
@ -1606,13 +1554,9 @@
] ]
}, },
"return_type": { "return_type": {
"multiple": true, "multiple": false,
"required": false, "required": false,
"types": [ "types": [
{
"type": ".",
"named": false
},
{ {
"type": "function_type", "type": "function_type",
"named": true "named": true
@ -1621,10 +1565,6 @@
"type": "remote_type", "type": "remote_type",
"named": true "named": true
}, },
{
"type": "remote_type_constructor",
"named": true
},
{ {
"type": "tuple_type", "type": "tuple_type",
"named": true "named": true
@ -1633,10 +1573,6 @@
"type": "type", "type": "type",
"named": true "named": true
}, },
{
"type": "type_constructor",
"named": true
},
{ {
"type": "type_hole", "type": "type_hole",
"named": true "named": true
@ -1822,13 +1758,9 @@
] ]
}, },
"type": { "type": {
"multiple": true, "multiple": false,
"required": false, "required": false,
"types": [ "types": [
{
"type": ".",
"named": false
},
{ {
"type": "function_type", "type": "function_type",
"named": true "named": true
@ -1837,10 +1769,6 @@
"type": "remote_type", "type": "remote_type",
"named": true "named": true
}, },
{
"type": "remote_type_constructor",
"named": true
},
{ {
"type": "tuple_type", "type": "tuple_type",
"named": true "named": true
@ -1849,10 +1777,6 @@
"type": "type", "type": "type",
"named": true "named": true
}, },
{
"type": "type_constructor",
"named": true
},
{ {
"type": "type_hole", "type": "type_hole",
"named": true "named": true
@ -1881,10 +1805,6 @@
"type": "remote_type", "type": "remote_type",
"named": true "named": true
}, },
{
"type": "remote_type_constructor",
"named": true
},
{ {
"type": "tuple_type", "type": "tuple_type",
"named": true "named": true
@ -1893,10 +1813,6 @@
"type": "type", "type": "type",
"named": true "named": true
}, },
{
"type": "type_constructor",
"named": true
},
{ {
"type": "type_hole", "type": "type_hole",
"named": true "named": true
@ -1914,7 +1830,7 @@
"fields": {}, "fields": {},
"children": { "children": {
"multiple": true, "multiple": true,
"required": false, "required": true,
"types": [ "types": [
{ {
"type": "function_parameter", "type": "function_parameter",
@ -1938,13 +1854,9 @@
] ]
}, },
"return_type": { "return_type": {
"multiple": true, "multiple": false,
"required": true, "required": true,
"types": [ "types": [
{
"type": ".",
"named": false
},
{ {
"type": "function_type", "type": "function_type",
"named": true "named": true
@ -1953,10 +1865,6 @@
"type": "remote_type", "type": "remote_type",
"named": true "named": true
}, },
{
"type": "remote_type_constructor",
"named": true
},
{ {
"type": "tuple_type", "type": "tuple_type",
"named": true "named": true
@ -1965,10 +1873,6 @@
"type": "type", "type": "type",
"named": true "named": true
}, },
{
"type": "type_constructor",
"named": true
},
{ {
"type": "type_hole", "type": "type_hole",
"named": true "named": true
@ -2105,13 +2009,9 @@
] ]
}, },
"type": { "type": {
"multiple": true, "multiple": false,
"required": false, "required": false,
"types": [ "types": [
{
"type": ".",
"named": false
},
{ {
"type": "function_type", "type": "function_type",
"named": true "named": true
@ -2120,10 +2020,6 @@
"type": "remote_type", "type": "remote_type",
"named": true "named": true
}, },
{
"type": "remote_type_constructor",
"named": true
},
{ {
"type": "tuple_type", "type": "tuple_type",
"named": true "named": true
@ -2132,10 +2028,6 @@
"type": "type", "type": "type",
"named": true "named": true
}, },
{
"type": "type_constructor",
"named": true
},
{ {
"type": "type_hole", "type": "type_hole",
"named": true "named": true
@ -2579,21 +2471,13 @@
] ]
}, },
"type": { "type": {
"multiple": true, "multiple": false,
"required": false, "required": false,
"types": [ "types": [
{
"type": ".",
"named": false
},
{ {
"type": "remote_type", "type": "remote_type",
"named": true "named": true
}, },
{
"type": "remote_type_constructor",
"named": true
},
{ {
"type": "tuple_type", "type": "tuple_type",
"named": true "named": true
@ -2602,10 +2486,6 @@
"type": "type", "type": "type",
"named": true "named": true
}, },
{
"type": "type_constructor",
"named": true
},
{ {
"type": "type_hole", "type": "type_hole",
"named": true "named": true
@ -2678,7 +2558,7 @@
}, },
"parameters": { "parameters": {
"multiple": false, "multiple": false,
"required": true, "required": false,
"types": [ "types": [
{ {
"type": "function_parameters", "type": "function_parameters",
@ -2687,13 +2567,9 @@
] ]
}, },
"return_type": { "return_type": {
"multiple": true, "multiple": false,
"required": true, "required": true,
"types": [ "types": [
{
"type": ".",
"named": false
},
{ {
"type": "function_type", "type": "function_type",
"named": true "named": true
@ -2702,10 +2578,6 @@
"type": "remote_type", "type": "remote_type",
"named": true "named": true
}, },
{
"type": "remote_type_constructor",
"named": true
},
{ {
"type": "tuple_type", "type": "tuple_type",
"named": true "named": true
@ -2714,10 +2586,6 @@
"type": "type", "type": "type",
"named": true "named": true
}, },
{
"type": "type_constructor",
"named": true
},
{ {
"type": "type_hole", "type": "type_hole",
"named": true "named": true
@ -2739,11 +2607,7 @@
"required": true, "required": true,
"types": [ "types": [
{ {
"type": "type", "type": "type_name",
"named": true
},
{
"type": "type_constructor",
"named": true "named": true
} }
] ]
@ -2774,13 +2638,9 @@
] ]
}, },
"return_type": { "return_type": {
"multiple": true, "multiple": false,
"required": false, "required": false,
"types": [ "types": [
{
"type": ".",
"named": false
},
{ {
"type": "function_type", "type": "function_type",
"named": true "named": true
@ -2789,10 +2649,6 @@
"type": "remote_type", "type": "remote_type",
"named": true "named": true
}, },
{
"type": "remote_type_constructor",
"named": true
},
{ {
"type": "tuple_type", "type": "tuple_type",
"named": true "named": true
@ -2801,10 +2657,6 @@
"type": "type", "type": "type",
"named": true "named": true
}, },
{
"type": "type_constructor",
"named": true
},
{ {
"type": "type_hole", "type": "type_hole",
"named": true "named": true
@ -3170,47 +3022,14 @@
{ {
"type": "remote_type", "type": "remote_type",
"named": true, "named": true,
"fields": {}
},
{
"type": "remote_type_constructor",
"named": true,
"fields": {}, "fields": {},
"children": { "children": {
"multiple": true, "multiple": false,
"required": false, "required": true,
"types": [ "types": [
{
"type": "function_type",
"named": true
},
{
"type": "remote_type",
"named": true
},
{
"type": "remote_type_constructor",
"named": true
},
{
"type": "tuple_type",
"named": true
},
{ {
"type": "type", "type": "type",
"named": true "named": true
},
{
"type": "type_constructor",
"named": true
},
{
"type": "type_hole",
"named": true
},
{
"type": "type_var",
"named": true
} }
] ]
} }
@ -3418,13 +3237,9 @@
] ]
}, },
"type": { "type": {
"multiple": true, "multiple": false,
"required": false, "required": false,
"types": [ "types": [
{
"type": ".",
"named": false
},
{ {
"type": "function_type", "type": "function_type",
"named": true "named": true
@ -3433,10 +3248,6 @@
"type": "remote_type", "type": "remote_type",
"named": true "named": true
}, },
{
"type": "remote_type_constructor",
"named": true
},
{ {
"type": "tuple_type", "type": "tuple_type",
"named": true "named": true
@ -3445,10 +3256,6 @@
"type": "type", "type": "type",
"named": true "named": true
}, },
{
"type": "type_constructor",
"named": true
},
{ {
"type": "type_hole", "type": "type_hole",
"named": true "named": true
@ -3770,10 +3577,6 @@
"type": "remote_type", "type": "remote_type",
"named": true "named": true
}, },
{
"type": "remote_type_constructor",
"named": true
},
{ {
"type": "tuple_type", "type": "tuple_type",
"named": true "named": true
@ -3782,10 +3585,6 @@
"type": "type", "type": "type",
"named": true "named": true
}, },
{
"type": "type_constructor",
"named": true
},
{ {
"type": "type_hole", "type": "type_hole",
"named": true "named": true
@ -3800,16 +3599,6 @@
{ {
"type": "type", "type": "type",
"named": true, "named": true,
"fields": {}
},
{
"type": "type_argument",
"named": true,
"fields": {}
},
{
"type": "type_constructor",
"named": true,
"fields": {}, "fields": {},
"children": { "children": {
"multiple": true, "multiple": true,
@ -3823,10 +3612,6 @@
"type": "remote_type", "type": "remote_type",
"named": true "named": true
}, },
{
"type": "remote_type_constructor",
"named": true
},
{ {
"type": "tuple_type", "type": "tuple_type",
"named": true "named": true
@ -3836,26 +3621,38 @@
"named": true "named": true
}, },
{ {
"type": "type_argument", "type": "type_hole",
"named": true "named": true
}, },
{ {
"type": "type_constructor", "type": "type_var",
"named": true "named": true
}
]
}
}, },
{ {
"type": "type_hole", "type": "type_hole",
"named": true "named": true,
"fields": {}
}, },
{ {
"type": "type_var", "type": "type_name",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "type_parameter",
"named": true "named": true
} }
] ]
} }
}, },
{ {
"type": "type_hole", "type": "type_parameter",
"named": true, "named": true,
"fields": {} "fields": {}
}, },

File diff suppressed because it is too large Load Diff