add skipped tests

pull/625/head^2
Nikolaj Sidorenco 2024-04-05 23:46:41 +07:00
parent 769fe49244
commit 5bd51ae824
No known key found for this signature in database
9 changed files with 251128 additions and 249383 deletions

@ -1,2 +1,2 @@
do
y<int>
(+) 1 2

@ -1,3 +1,2 @@
type T =
{ A: int
B: int }
type Maybe<'T> = | Just of 'T | Nothing
and 'T maybe = Maybe<'T>

@ -534,10 +534,6 @@ module.exports = grammar({
$.type,
)),
begin_end_expression: $ => prec(PREC.PAREN_EXPR, seq('begin', $._expression, 'end')),
paren_expression: $ => prec(PREC.PAREN_EXPR, seq('(', $._expression, ')')),
for_expression: $ =>
seq(
'for',
@ -793,6 +789,10 @@ module.exports = grammar({
repeat(seq(optional($._newline), '|', $.rule)),
)),
begin_end_expression: $ => prec(PREC.PAREN_EXPR, seq('begin', $._expression, 'end')),
paren_expression: $ => seq('(', $._expression, ')'),
application_expression: $ =>
prec.left(PREC.APP_EXPR,
seq(
@ -1657,19 +1657,20 @@ module.exports = grammar({
_identifier_or_op: $ => choice(
$.identifier,
seq('(', $.op_name, ')'),
'(*)',
token(prec(1000,
seq(
'(',
choice(
'?',
/[!%&*+-./<=>@^|~][!%&*+-./<=>@^|~?]*/,
'..',
'.. ..',
),
')'))),
seq('(', $.active_pattern_op_name, ')'),
token(prec(1000, '(*)')),
),
op_name: $ => choice(
$.op_char,
$.range_op_name,
$.active_pattern_op_name,
),
range_op_name: _ => choice(
'..',
'.. ..',
),
active_pattern_op_name: $ => choice(
// full pattern
seq('|', $.identifier, repeat1(seq('|', $.identifier)), '|'),

164
src/grammar.json generated

@ -1886,48 +1886,6 @@
]
}
},
"begin_end_expression": {
"type": "PREC",
"value": 21,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "begin"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "end"
}
]
}
},
"paren_expression": {
"type": "PREC",
"value": 21,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"for_expression": {
"type": "SEQ",
"members": [
@ -3014,6 +2972,44 @@
]
}
},
"begin_end_expression": {
"type": "PREC",
"value": 21,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "begin"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "end"
}
]
}
},
"paren_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ")"
}
]
},
"application_expression": {
"type": "PREC_LEFT",
"value": 16,
@ -6580,6 +6576,47 @@
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 1000,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "?"
},
{
"type": "PATTERN",
"value": "[!%&*+-./<=>@^|~][!%&*+-./<=>@^|~?]*"
},
{
"type": "STRING",
"value": ".."
},
{
"type": "STRING",
"value": ".. .."
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
}
},
{
"type": "SEQ",
"members": [
@ -6589,7 +6626,7 @@
},
{
"type": "SYMBOL",
"name": "op_name"
"name": "active_pattern_op_name"
},
{
"type": "STRING",
@ -6598,38 +6635,15 @@
]
},
{
"type": "STRING",
"value": "(*)"
}
]
},
"op_name": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "op_char"
},
{
"type": "SYMBOL",
"name": "range_op_name"
},
{
"type": "SYMBOL",
"name": "active_pattern_op_name"
}
]
},
"range_op_name": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ".."
},
{
"type": "STRING",
"value": ".. .."
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 1000,
"content": {
"type": "STRING",
"value": "(*)"
}
}
}
]
},

50
src/node-types.json generated

@ -1513,15 +1513,15 @@
"named": true
},
{
"type": "argument_patterns",
"type": "active_pattern_op_name",
"named": true
},
{
"type": "identifier",
"type": "argument_patterns",
"named": true
},
{
"type": "op_name",
"type": "identifier",
"named": true
},
{
@ -1901,11 +1901,11 @@
"required": false,
"types": [
{
"type": "identifier",
"type": "active_pattern_op_name",
"named": true
},
{
"type": "op_name",
"type": "identifier",
"named": true
}
]
@ -2265,29 +2265,6 @@
]
}
},
{
"type": "op_name",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "active_pattern_op_name",
"named": true
},
{
"type": "op_char",
"named": true
},
{
"type": "range_op_name",
"named": true
}
]
}
},
{
"type": "paren_expression",
"named": true,
@ -2416,11 +2393,6 @@
]
}
},
{
"type": "range_op_name",
"named": true,
"fields": {}
},
{
"type": "record_field",
"named": true,
@ -3500,10 +3472,6 @@
"type": "..",
"named": false
},
{
"type": ".. ..",
"named": false
},
{
"type": ":",
"named": false
@ -3848,10 +3816,6 @@
"type": "of",
"named": false
},
{
"type": "op_char",
"named": true
},
{
"type": "open",
"named": false
@ -3930,11 +3894,11 @@
},
{
"type": "unit",
"named": true
"named": false
},
{
"type": "unit",
"named": false
"named": true
},
{
"type": "unmanaged",

500160
src/parser.c generated

File diff suppressed because it is too large Load Diff

@ -198,7 +198,6 @@ do test (4)
================================================================================
application expression aligned to first line
:skip
================================================================================
do
@ -207,6 +206,16 @@ do
--------------------------------------------------------------------------------
(file
(value_declaration
(do
(application_expression
(application_expression
(long_identifier_or_op
(long_identifier))
(const (int)))
(const (int))))))
================================================================================
dot expression
================================================================================

@ -1,15 +1,28 @@
================================================================================
function definition on same line should end scope
:skip
================================================================================
let f x = x + 1
--------------------------------------------------------------------------------
(file
(value_declaration
(function_or_value_defn
(function_declaration_left
(identifier)
(argument_patterns
(long_identifier
(identifier))))
(infix_expression
(long_identifier_or_op
(long_identifier
(identifier)))
(infix_op)
(const (int))))))
================================================================================
function definition on new line should open scope
:skip
================================================================================
let f x =
@ -18,12 +31,45 @@ let f x =
--------------------------------------------------------------------------------
(file
(value_declaration
(function_or_value_defn
(function_declaration_left
(identifier)
(argument_patterns
(long_identifier
(identifier))))
(sequential_expression
(infix_expression
(long_identifier_or_op
(long_identifier
(identifier)))
(infix_op)
(const (int)))
(const (int))))))
================================================================================
function definition aligned to first line should scope correctly
:skip
================================================================================
let f x = x + 1
1
--------------------------------------------------------------------------------
(file
(value_declaration
(function_or_value_defn
(function_declaration_left
(identifier)
(argument_patterns
(long_identifier
(identifier))))
(sequential_expression
(infix_expression
(long_identifier_or_op
(long_identifier
(identifier)))
(infix_op)
(const (int)))
(const (int))))))

@ -428,14 +428,46 @@ and B = C
================================================================================
Recursive type definition
:skip
================================================================================
type Maybe<'T> = | Just B<'T> | Nothing
type Maybe<'T> = | Just of 'T | Nothing
and 'T maybe = Maybe<'T>
--------------------------------------------------------------------------------
(file
(type_definition
(union_type_defn
(type_name
(identifier)
(type_arguments
(type_argument_defn
(type_argument
(identifier)))))
(union_type_cases
(union_type_case
(identifier)
(union_type_fields
(union_type_field
(type
(type_argument
(identifier))))))
(union_type_case
(identifier))))
(type_abbrev_defn
(type_name
(type_argument
(identifier))
(identifier))
(type
(long_identifier
(identifier))
(type_attributes
(type_attribute
(type
(type_argument
(identifier)))))))))
================================================================================
record definition
================================================================================