feat: interfaces with property members

pull/625/head^2
Nikolaj Sidorenco 2024-04-24 19:38:45 +07:00
parent c4629d89cc
commit a863770063
No known key found for this signature in database
5 changed files with 290740 additions and 290864 deletions

@ -1,5 +1,9 @@
namespace Test
type IFun =
abstract member MyFun: x:int * y:int -> int
type IProp1 =
abstract member Prop1: string
abstract member Prop2: Array<int>
member _.F(?x:int) = x
type IProp2 =
abstract member Prop1: string
abstract member Prop2: Array<int>

@ -1138,9 +1138,7 @@ module.exports = grammar({
curried_spec: $ =>
seq(
$.arguments_spec,
repeat(seq('->', $.arguments_spec)),
'->',
repeat(seq($.arguments_spec, '->')),
$.type
),

16
src/grammar.json generated

@ -4335,30 +4335,22 @@
"curried_spec": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "arguments_spec"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "->"
},
{
"type": "SYMBOL",
"name": "arguments_spec"
},
{
"type": "STRING",
"value": "->"
}
]
}
},
{
"type": "STRING",
"value": "->"
},
{
"type": "SYMBOL",
"name": "type"

581507
src/parser.c generated

File diff suppressed because it is too large Load Diff

@ -970,3 +970,70 @@ type A(x: int, y:int) =
(long_identifier_or_op
(long_identifier
(identifier))))))))))
================================================================================
multiple interfaces with property members
================================================================================
namespace Test
type IProp1 =
abstract member Prop1: string
abstract member Prop2: Array<int>
type IProp2 =
abstract member Prop1: string
abstract member Prop2: Array<int>
--------------------------------------------------------------------------------
(file
(namespace
(long_identifier
(identifier))
(type_definition
(anon_type_defn
(type_name
(identifier))
(member_defn
(member_signature
(identifier)
(curried_spec
(type
(long_identifier
(identifier))))))
(member_defn
(member_signature
(identifier)
(curried_spec
(type
(long_identifier
(identifier))
(type_attributes
(type_attribute
(type
(long_identifier
(identifier)))))))))))
(type_definition
(anon_type_defn
(type_name
(identifier))
(member_defn
(member_signature
(identifier)
(curried_spec
(type
(long_identifier
(identifier))))))
(member_defn
(member_signature
(identifier)
(curried_spec
(type
(long_identifier
(identifier))
(type_attributes
(type_attribute
(type
(long_identifier
(identifier)))))))))))))