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))
(constant
name: (identifier)
type: (type_constructor
type: (type
(type))
value: (list
(integer)
(integer)))
(constant
name: (identifier)
type: (type_constructor
type: (type
(type_hole))
value: (list))
(constant
@ -164,14 +164,14 @@ pub const a = uri.Uri(host: "github.com")
value: (tuple))
(public_constant
name: (identifier)
type: (type_constructor
type: (type
(type))
value: (list
(integer)
(integer)))
(public_constant
name: (identifier)
type: (type_constructor
type: (type
(type_hole))
value: (list))
(public_constant

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

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

@ -120,56 +120,30 @@ module.exports = grammar({
_constant_remote_record: ($) => seq($._name, ".", $._constant_record),
/* 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: ($) =>
choice(
$.type_hole,
alias($.constant_tuple_type, $.tuple_type),
$._constant_type_name,
$._constant_remote_type_name
alias($.constant_type, $.type),
alias($.constant_remote_type, $.remote_type)
),
_constant_type_annotation: ($) => seq(":", field("type", $._constant_type)),
constant_tuple_type: ($) =>
seq("#", "(", optional(series_of($._constant_type, ",")), ")"),
_constant_type_name: ($) =>
choice(
alias($.constant_type_constructor, $.type_constructor),
alias($.constant_type, $.type)
),
_constant_remote_type_name: ($) =>
constant_type: ($) =>
seq(
$._name,
".",
choice(
alias($.constant_type_constructor, $.remote_type_constructor),
alias($.constant_type, $.remote_type)
)
$._upname,
optional(seq("(", optional(series_of($._constant_type, ",")), ")"))
),
constant_type_constructor: ($) =>
seq($._upname, "(", optional(series_of($._constant_type, ",")), ")"),
constant_type: ($) => $._upname,
constant_remote_type: ($) =>
seq(field("module", $._name), ".", alias($.constant_type, $.type)),
/* External types */
public_external_type: ($) => seq("pub", $._external_type),
external_type: ($) => $._external_type,
_external_type: ($) =>
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_type: ($) => seq("external", "type", $.type_name),
/* External functions */
public_external_function: ($) => seq("pub", $._external_function),
@ -179,26 +153,25 @@ module.exports = grammar({
"external",
"fn",
field("name", alias($._name, $.function_name)),
field(
"parameters",
alias($.external_function_parameters, $.function_parameters)
"(",
optional(
field(
"parameters",
alias($.external_function_parameters, $.function_parameters)
)
),
")",
"->",
field("return_type", $._type),
"=",
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: ($) =>
seq(
"(",
optional(
series_of(
alias($.external_function_parameter, $.function_parameter),
","
)
),
")"
series_of(
alias($.external_function_parameter, $.function_parameter),
","
),
external_function_parameter: ($) =>
seq(
@ -587,6 +560,8 @@ module.exports = grammar({
$.field_access,
$.function_call
),
// Interestingly, the code that parses function arguments also parses
// record arguments, hence the ambiguous name.
arguments: ($) => series_of($.argument, ","),
argument: ($) =>
seq(
@ -694,12 +669,22 @@ module.exports = grammar({
$.type_hole,
$.tuple_type,
$.function_type,
$._type_name,
$._remote_type_name,
$.type,
$.remote_type,
$.type_var
),
_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,
// 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, ",")), ")"),
function_type: ($) =>
seq(
@ -710,19 +695,14 @@ module.exports = grammar({
),
function_parameter_types: ($) =>
seq("(", optional(series_of($._type, ",")), ")"),
_type_name: ($) => choice($.type_constructor, $.type),
_remote_type_name: ($) =>
// "type" is a somewhat ambiguous name, but it refers to a concrete type
// such as `Bool` or `List(Int)` or even `List(#(Int, String))`.
type: ($) =>
seq(
$._name,
".",
choice(
alias($.type_constructor, $.remote_type_constructor),
alias($.type, $.remote_type)
)
$._upname,
optional(seq("(", optional(series_of($._type, ",")), ")"))
),
type_constructor: ($) =>
seq($._upname, seq("(", optional(series_of($._type, ",")), ")")),
type: ($) => $._upname,
remote_type: ($) => seq(field("module", $._name), ".", $.type),
type_var: ($) => $._name,
/* 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": {
"type": "CHOICE",
"members": [
@ -947,12 +930,39 @@
"value": "tuple_type"
},
{
"type": "SYMBOL",
"name": "_constant_type_name"
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "constant_type"
},
"named": true,
"value": "type"
},
{
"type": "SYMBOL",
"name": "_constant_remote_type_name"
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"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",
"name": "_constant_type"
}
}
]
},
@ -1006,76 +1016,13 @@
}
]
},
"_constant_type_name": {
"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",
"members": [
{
"type": "SYMBOL",
"name": "_name"
},
{
"type": "STRING",
"value": "."
},
{
"type": "CHOICE",
"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": {
"constant_type": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_upname"
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
@ -1083,24 +1030,45 @@
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_constant_type"
"type": "STRING",
"value": "("
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_constant_type"
}
]
}
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_constant_type"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_constant_type"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
@ -1108,17 +1076,35 @@
"type": "BLANK"
}
]
}
]
},
"constant_remote_type": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "module",
"content": {
"type": "SYMBOL",
"name": "_name"
}
},
{
"type": "STRING",
"value": ")"
"value": "."
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "constant_type"
},
"named": true,
"value": "type"
}
]
},
"constant_type": {
"type": "SYMBOL",
"name": "_upname"
},
"public_external_type": {
"type": "SEQ",
"members": [
@ -1147,95 +1133,12 @@
"type": "STRING",
"value": "type"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "external_type_constructor"
},
"named": true,
"value": "type_constructor"
}
]
}
]
},
"external_type_constructor": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_upname"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "external_type_argument"
},
"named": true,
"value": "type_argument"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "external_type_argument"
},
"named": true,
"value": "type_argument"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
"name": "type_name"
}
]
},
"external_type_argument": {
"type": "SYMBOL",
"name": "_name"
},
"public_external_function": {
"type": "SEQ",
"members": [
@ -1278,17 +1181,33 @@
}
},
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "external_function_parameters"
},
"named": true,
"value": "function_parameters"
}
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "external_function_parameters"
},
"named": true,
"value": "function_parameters"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
},
{
"type": "STRING",
@ -1320,55 +1239,34 @@
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "external_function_parameter"
},
"named": true,
"value": "function_parameter"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "external_function_parameter"
},
"named": true,
"value": "function_parameter"
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "external_function_parameter"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "external_function_parameter"
},
"named": true,
"value": "function_parameter"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
"named": true,
"value": "function_parameter"
}
]
}
}
]
},
@ -4590,11 +4488,11 @@
},
{
"type": "SYMBOL",
"name": "_type_name"
"name": "type"
},
{
"type": "SYMBOL",
"name": "_remote_type_name"
"name": "remote_type"
},
{
"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": "SYMBOL",
"name": "_discard_name"
@ -4756,56 +4721,7 @@
}
]
},
"_type_name": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_constructor"
},
{
"type": "SYMBOL",
"name": "type"
}
]
},
"_remote_type_name": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_name"
},
{
"type": "STRING",
"value": "."
},
{
"type": "CHOICE",
"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": {
"type": "SEQ",
"members": [
{
@ -4813,56 +4729,81 @@
"name": "_upname"
},
{
"type": "SEQ",
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"type": "SEQ",
"members": [
{
"type": "SEQ",
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type"
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_type"
}
]
}
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_type"
}
]
}
"type": "BLANK"
}
]
},
{
"type": "BLANK"
"type": "STRING",
"value": ")"
}
]
},
{
"type": "STRING",
"value": ")"
"type": "BLANK"
}
]
}
]
},
"type": {
"type": "SYMBOL",
"name": "_upname"
"remote_type": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "module",
"content": {
"type": "SYMBOL",
"name": "_name"
}
},
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "type"
}
]
},
"type_var": {
"type": "SYMBOL",

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

File diff suppressed because it is too large Load Diff