Skip to content
This repository was archived by the owner on Jun 1, 2022. It is now read-only.

Commit e7d7f79

Browse files
committed
fixes
1 parent 42ca28a commit e7d7f79

File tree

3 files changed

+25
-48
lines changed

3 files changed

+25
-48
lines changed

common/patterns.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ export const struct_pattern = <RuleName extends string>(
5353
) =>
5454
buildStruct(
5555
$,
56+
'member',
5657
choice(
5758
$.member_pattern,
5859
alias($.binding_pattern, $.shorthand_member_pattern),
@@ -66,11 +67,11 @@ export const member_pattern = <RuleName extends string>(
6667

6768
export const tuple_pattern = <RuleName extends string>(
6869
$: GrammarSymbols<RuleName>,
69-
) => buildTuple($, 'element', $._pattern, true)
70+
) => buildTuple($, 'element', $._pattern, true, false)
7071

7172
export const list_pattern = <RuleName extends string>(
7273
$: GrammarSymbols<RuleName>,
73-
) => buildList($, $._pattern, true)
74+
) => buildList($, 'element', $._pattern, true)
7475

7576
export const binding_pattern = <RuleName extends string>(
7677
$: GrammarSymbols<RuleName>,

common/terms.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -431,18 +431,20 @@ export const struct = <RuleName extends string>($: GrammarSymbols<RuleName>) =>
431431
Prec.Term,
432432
buildStruct(
433433
$,
434+
'member',
434435
choice($.member, alias($.identifier, $.shorthand_member), $.spread),
436+
false,
435437
),
436438
)
437439

438440
export const member = <RuleName extends string>($: GrammarSymbols<RuleName>) =>
439441
buildMember($, $._term, $._term)
440442

441443
export const tuple = <RuleName extends string>($: GrammarSymbols<RuleName>) =>
442-
buildTuple($, 'element', $._element)
444+
buildTuple($, 'element', $._element, false, false)
443445

444446
export const list = <RuleName extends string>($: GrammarSymbols<RuleName>) =>
445-
buildList($, $._element)
447+
buildList($, 'element', $._element, false)
446448

447449
export const _element = <RuleName extends string>(
448450
$: GrammarSymbols<RuleName>,

common/util.ts

Lines changed: 18 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -28,41 +28,34 @@ const buildDataStructure = <RuleName extends string>(
2828

2929
export const buildStruct = <RuleName extends string>(
3030
$: GrammarSymbols<RuleName>,
31+
fieldName: string,
3132
member: Rule,
32-
rest = false,
33-
) => seq('{', buildDataStructure($, field('member', member), rest), '}')
33+
rest: boolean,
34+
) => seq('{', buildDataStructure($, field(fieldName, member), rest), '}')
3435

3536
export const buildTuple = <RuleName extends string>(
3637
$: GrammarSymbols<RuleName>,
3738
fieldName: string,
3839
element: Rule,
39-
rest = false,
40-
allowSingle = false,
41-
allowEmpty = true,
42-
) => {
43-
const options: RuleOrLiteral[] = [
44-
seq(
45-
'(',
46-
buildDataStructure(
47-
$,
48-
field(fieldName, element),
49-
rest,
50-
allowSingle ? commaSep1 : commaSep2,
51-
),
52-
')',
53-
),
54-
]
55-
56-
if (allowEmpty) options.push('()')
57-
58-
return choice(...options)
59-
}
40+
rest: boolean,
41+
allowSingle: boolean,
42+
) => choice(seq(
43+
'(',
44+
buildDataStructure(
45+
$,
46+
field(fieldName, element),
47+
rest,
48+
allowSingle ? commaSep1 : commaSep2,
49+
),
50+
')',
51+
), '()')
6052

6153
export const buildList = <RuleName extends string>(
6254
$: GrammarSymbols<RuleName>,
55+
fieldName: string,
6356
element: Rule,
64-
rest = false,
65-
) => seq('[', buildDataStructure($, field('element', element), rest), ']')
57+
rest: boolean,
58+
) => seq('[', buildDataStructure($, field(fieldName, element), rest), ']')
6659

6760
export const buildMember = <RuleName extends string>(
6861
$: GrammarSymbols<RuleName>,
@@ -91,25 +84,6 @@ export const buildString = <RuleName extends string>(
9184
export const buildGenericType = (name: string, rule: Rule) =>
9285
seq('<', commaSep1(field(name, rule)), '>')
9386

94-
export const buildTypeConstraint = <RuleName extends string>(
95-
$: GrammarSymbols<RuleName>,
96-
) =>
97-
seq(
98-
'<:',
99-
choice(
100-
field('constraint', $._term),
101-
seq('(', sep2(';')(field('constraint', $._term)), ')'),
102-
),
103-
)
104-
105-
export const buildTypeDeclaration = <RuleName extends string>(
106-
$: GrammarSymbols<RuleName>,
107-
) =>
108-
seq(
109-
field('name', $.type),
110-
optional(buildGenericType('parameter', $.type_variable_declaration)),
111-
)
112-
11387
export const buildBindingPattern = <RuleName extends string>(
11488
$: GrammarSymbols<RuleName>,
11589
allowDefaults: boolean,

0 commit comments

Comments
 (0)