Skip to content

Commit 7bca760

Browse files
committed
updating to the last version of slang and fixing the grammar changes
1 parent 7788f61 commit 7bca760

22 files changed

Lines changed: 138 additions & 82 deletions

src/slang-nodes/ContractMembers.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export class ContractMembers implements SlangNode {
5050
: printSeparatedItem(
5151
[
5252
printPreservingEmptyLines(path, print, options),
53-
printComments(this, path)
53+
printComments(path)
5454
],
5555
{ firstSeparator: hardline, grouped: false }
5656
);

src/slang-nodes/MemberAccessExpression.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { isLabel } from '../slang-utils/is-label.js';
44
import { createKindCheckFunction } from '../slang-utils/create-kind-check-function.js';
55
import { getNodeMetadata, updateMetadata } from '../slang-utils/metadata.js';
66
import { Expression } from './Expression.js';
7-
import { MemberAccess } from './MemberAccess.js';
87

98
import type * as ast from '@nomicfoundation/slang/ast';
109
import type { AstPath, Doc, ParserOptions } from 'prettier';
@@ -131,7 +130,7 @@ export class MemberAccessExpression implements SlangNode {
131130

132131
period: string;
133132

134-
member: MemberAccess;
133+
member: string;
135134

136135
constructor(
137136
ast: ast.MemberAccessExpression,
@@ -143,9 +142,9 @@ export class MemberAccessExpression implements SlangNode {
143142

144143
this.operand = new Expression(ast.operand, offsets[0], options);
145144
this.period = ast.period.text;
146-
this.member = new MemberAccess(ast.member, offsets[1]);
145+
this.member = ast.member.text;
147146

148-
metadata = updateMetadata(metadata, [this.operand, this.member]);
147+
metadata = updateMetadata(metadata, [this.operand]);
149148

150149
this.comments = metadata.comments;
151150
this.loc = metadata.loc;
@@ -160,7 +159,7 @@ export class MemberAccessExpression implements SlangNode {
160159
const document = [
161160
operandDoc,
162161
label('separator', [softline, this.period]),
163-
path.call(print, 'member')
162+
this.member
164163
].flat();
165164

166165
return isEndOfChain(this, path) ? processChain(document) : document;

src/slang-nodes/Parameters.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ export class Parameters implements SlangNode {
4545
return printSeparatedList(path.map(print, 'items'), { grouped: false });
4646
}
4747

48-
const parameterComments = printComments(this, path);
48+
const parameterComments = printComments(path);
4949

5050
return parameterComments.length > 0
5151
? printSeparatedItem(parameterComments)

src/slang-nodes/PositionalArguments.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/kinds/index.js';
2+
import { printComments } from '../slang-printers/print-comments.js';
3+
import { printSeparatedItem } from '../slang-printers/print-separated-item.js';
24
import { printSeparatedList } from '../slang-printers/print-separated-list.js';
35
import { getNodeMetadata, updateMetadata } from '../slang-utils/metadata.js';
46
import { Expression } from './Expression.js';
@@ -39,8 +41,13 @@ export class PositionalArguments implements SlangNode {
3941
}
4042

4143
print(path: AstPath<PositionalArguments>, print: PrintFunction): Doc {
42-
return this.items.length > 0
43-
? printSeparatedList(path.map(print, 'items'))
44+
if (this.items.length > 0) {
45+
return printSeparatedList(path.map(print, 'items'));
46+
}
47+
const argumentComments = printComments(path);
48+
49+
return argumentComments.length > 0
50+
? printSeparatedItem(argumentComments)
4451
: '';
4552
}
4653
}

src/slang-nodes/Statements.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export class Statements implements SlangNode {
5050
: printSeparatedItem(
5151
[
5252
printPreservingEmptyLines(path, print, options),
53-
printComments(this, path)
53+
printComments(path)
5454
],
5555
{
5656
firstSeparator: hardline,

src/slang-nodes/YulAssignmentOperator.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/kinds/index.js';
22
import { TerminalNode } from '@nomicfoundation/slang/cst/index.js';
33
import { getNodeMetadata, updateMetadata } from '../slang-utils/metadata.js';
4-
import { YulColonEqual } from './YulColonEqual.js';
4+
import { YulColonAndEqual } from './YulColonAndEqual.js';
55

66
import type * as ast from '@nomicfoundation/slang/ast';
77
import type { AstPath, Doc } from 'prettier';
@@ -14,7 +14,7 @@ export class YulAssignmentOperator implements SlangNode {
1414

1515
loc;
1616

17-
variant: YulColonEqual | string;
17+
variant: YulColonAndEqual | string;
1818

1919
constructor(ast: ast.YulAssignmentOperator, offset: number) {
2020
let metadata = getNodeMetadata(ast, offset);
@@ -23,7 +23,7 @@ export class YulAssignmentOperator implements SlangNode {
2323
this.variant =
2424
ast.variant instanceof TerminalNode
2525
? ast.variant.text
26-
: new YulColonEqual(ast.variant, offsets[0]);
26+
: new YulColonAndEqual(ast.variant, offsets[0]);
2727

2828
metadata = updateMetadata(
2929
metadata,
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ import type * as ast from '@nomicfoundation/slang/ast';
55
import type { Doc } from 'prettier';
66
import type { SlangNode } from '../types';
77

8-
export class YulColonEqual implements SlangNode {
9-
readonly kind = NonterminalKind.YulColonEqual;
8+
export class YulColonAndEqual implements SlangNode {
9+
readonly kind = NonterminalKind.YulColonAndEqual;
1010

1111
comments;
1212

1313
loc;
1414

15-
constructor(ast: ast.YulColonEqual, offset: number) {
15+
constructor(ast: ast.YulColonAndEqual, offset: number) {
1616
const metadata = getNodeMetadata(ast, offset);
1717

1818
this.comments = metadata.comments;
Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,21 @@ import type * as ast from '@nomicfoundation/slang/ast';
55
import type { Doc } from 'prettier';
66
import type { SlangNode } from '../types';
77

8-
export class MemberAccess implements SlangNode {
9-
readonly kind = NonterminalKind.MemberAccess;
8+
export class YulEqualAndColon implements SlangNode {
9+
readonly kind = NonterminalKind.YulEqualAndColon;
1010

1111
comments;
1212

1313
loc;
1414

15-
variant: string;
16-
17-
constructor(ast: ast.MemberAccess, offset: number) {
15+
constructor(ast: ast.YulEqualAndColon, offset: number) {
1816
const metadata = getNodeMetadata(ast, offset);
1917

20-
this.variant = ast.variant.text;
21-
2218
this.comments = metadata.comments;
2319
this.loc = metadata.loc;
2420
}
2521

2622
print(): Doc {
27-
return this.variant;
23+
return '=:';
2824
}
2925
}

src/slang-nodes/YulReturnsDeclaration.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { doc } from 'prettier';
22
import { NonterminalKind } from '@nomicfoundation/slang/kinds/index.js';
33
import { printSeparatedItem } from '../slang-printers/print-separated-item.js';
44
import { getNodeMetadata, updateMetadata } from '../slang-utils/metadata.js';
5-
import { YulReturnVariables } from './YulReturnVariables.js';
5+
import { YulVariableNames } from './YulVariableNames.js';
66

77
import type * as ast from '@nomicfoundation/slang/ast';
88
import type { AstPath, Doc } from 'prettier';
@@ -19,14 +19,14 @@ export class YulReturnsDeclaration implements SlangNode {
1919

2020
minusGreaterThan: string;
2121

22-
variables: YulReturnVariables;
22+
variables: YulVariableNames;
2323

2424
constructor(ast: ast.YulReturnsDeclaration, offset: number) {
2525
let metadata = getNodeMetadata(ast, offset);
2626
const { offsets } = metadata;
2727

2828
this.minusGreaterThan = ast.minusGreaterThan.text;
29-
this.variables = new YulReturnVariables(ast.variables, offsets[0]);
29+
this.variables = new YulVariableNames(ast.variables, offsets[0]);
3030

3131
metadata = updateMetadata(metadata, [this.variables]);
3232

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import { NonterminalKind } from '@nomicfoundation/slang/kinds/index.js';
2+
import { TerminalNode } from '@nomicfoundation/slang/cst/index.js';
3+
import { getNodeMetadata, updateMetadata } from '../slang-utils/metadata.js';
4+
import { YulEqualAndColon } from './YulEqualAndColon.js';
5+
6+
import type * as ast from '@nomicfoundation/slang/ast';
7+
import type { AstPath, Doc } from 'prettier';
8+
import type { PrintFunction, SlangNode } from '../types';
9+
10+
export class YulStackAssignmentOperator implements SlangNode {
11+
readonly kind = NonterminalKind.YulStackAssignmentOperator;
12+
13+
comments;
14+
15+
loc;
16+
17+
variant: YulEqualAndColon | string;
18+
19+
constructor(ast: ast.YulStackAssignmentOperator, offset: number) {
20+
let metadata = getNodeMetadata(ast, offset);
21+
const { offsets } = metadata;
22+
23+
this.variant =
24+
ast.variant instanceof TerminalNode
25+
? ast.variant.text
26+
: new YulEqualAndColon(ast.variant, offsets[0]);
27+
28+
metadata = updateMetadata(
29+
metadata,
30+
typeof this.variant === 'string' ? [] : [this.variant]
31+
);
32+
33+
this.comments = metadata.comments;
34+
this.loc = metadata.loc;
35+
}
36+
37+
print(path: AstPath<YulStackAssignmentOperator>, print: PrintFunction): Doc {
38+
return typeof this.variant === 'string'
39+
? this.variant
40+
: path.call(print, 'variant');
41+
}
42+
}

0 commit comments

Comments
 (0)