Skip to content

Commit 4498ad2

Browse files
committed
since all calls to getMetadata had been standardised, it's much cleaner to have it as a constructor of a parent class and updateMetadata being a class function
1 parent 7b09497 commit 4498ad2

231 files changed

Lines changed: 1270 additions & 2414 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/slang-nodes/AbicoderPragma.ts

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,18 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
2-
import { getNodeMetadata } from '../slang-utils/metadata.js';
2+
import { SlangNode } from './SlangNode.js';
33
import { Identifier } from './Identifier.js';
44

55
import type * as ast from '@nomicfoundation/slang/ast';
66
import type { AstPath, Doc } from 'prettier';
7-
import type { PrintFunction, SlangNode } from '../types.d.ts';
7+
import type { PrintFunction } from '../types.d.ts';
88

9-
export class AbicoderPragma implements SlangNode {
9+
export class AbicoderPragma extends SlangNode {
1010
readonly kind = NonterminalKind.AbicoderPragma;
1111

12-
comments;
13-
14-
loc;
15-
1612
version: Identifier;
1713

1814
constructor(ast: ast.AbicoderPragma) {
19-
[this.loc, this.comments] = getNodeMetadata(ast);
15+
super(ast);
2016

2117
this.version = new Identifier(ast.version);
2218
}

src/slang-nodes/AdditiveExpression.ts

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst';
22
import { printBinaryOperation } from '../slang-printers/print-binary-operation.js';
33
import { createHugFunction } from '../slang-utils/create-hug-function.js';
44
import { createKindCheckFunction } from '../slang-utils/create-kind-check-function.js';
5-
import { getNodeMetadata, updateMetadata } from '../slang-utils/metadata.js';
5+
import { SlangNode } from './SlangNode.js';
66
import { Expression } from './Expression.js';
77

88
import type * as ast from '@nomicfoundation/slang/ast';
99
import type { AstPath, Doc, ParserOptions } from 'prettier';
1010
import type { AstNode } from './types.d.ts';
11-
import type { PrintFunction, SlangNode } from '../types.d.ts';
11+
import type { PrintFunction } from '../types.d.ts';
1212

1313
const tryToHug = createHugFunction(['%']);
1414

@@ -25,30 +25,23 @@ const printAdditiveExpression = printBinaryOperation(
2525
])
2626
);
2727

28-
export class AdditiveExpression implements SlangNode {
28+
export class AdditiveExpression extends SlangNode {
2929
readonly kind = NonterminalKind.AdditiveExpression;
3030

31-
comments;
32-
33-
loc;
34-
3531
leftOperand: Expression;
3632

3733
operator: string;
3834

3935
rightOperand: Expression;
4036

4137
constructor(ast: ast.AdditiveExpression, options: ParserOptions<AstNode>) {
42-
[this.loc, this.comments] = getNodeMetadata(ast);
38+
super(ast);
4339

4440
this.leftOperand = new Expression(ast.leftOperand, options);
4541
this.operator = ast.operator.unparse();
4642
this.rightOperand = new Expression(ast.rightOperand, options);
4743

48-
updateMetadata(this.loc, this.comments, [
49-
this.leftOperand,
50-
this.rightOperand
51-
]);
44+
this.updateMetadata([this.leftOperand, this.rightOperand]);
5245

5346
this.leftOperand = tryToHug(this.leftOperand);
5447
this.rightOperand = tryToHug(this.rightOperand);

src/slang-nodes/AddressType.ts

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,17 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
2-
import { getNodeMetadata } from '../slang-utils/metadata.js';
2+
import { SlangNode } from './SlangNode.js';
33
import { joinExisting } from '../slang-utils/join-existing.js';
44

55
import type * as ast from '@nomicfoundation/slang/ast';
66
import type { Doc } from 'prettier';
7-
import type { SlangNode } from '../types.d.ts';
87

9-
export class AddressType implements SlangNode {
8+
export class AddressType extends SlangNode {
109
readonly kind = NonterminalKind.AddressType;
1110

12-
comments;
13-
14-
loc;
15-
1611
payableKeyword?: string;
1712

1813
constructor(ast: ast.AddressType) {
19-
[this.loc, this.comments] = getNodeMetadata(ast);
14+
super(ast);
2015

2116
this.payableKeyword = ast.payableKeyword?.unparse();
2217
}

src/slang-nodes/AndExpression.ts

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,30 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
22
import { printLogicalOperation } from '../slang-printers/print-logical-operation.js';
3-
import { getNodeMetadata, updateMetadata } from '../slang-utils/metadata.js';
3+
import { SlangNode } from './SlangNode.js';
44
import { Expression } from './Expression.js';
55

66
import type * as ast from '@nomicfoundation/slang/ast';
77
import type { AstPath, Doc, ParserOptions } from 'prettier';
88
import type { AstNode } from './types.d.ts';
9-
import type { PrintFunction, SlangNode } from '../types.d.ts';
9+
import type { PrintFunction } from '../types.d.ts';
1010

11-
export class AndExpression implements SlangNode {
11+
export class AndExpression extends SlangNode {
1212
readonly kind = NonterminalKind.AndExpression;
1313

14-
comments;
15-
16-
loc;
17-
1814
leftOperand: Expression;
1915

2016
operator: string;
2117

2218
rightOperand: Expression;
2319

2420
constructor(ast: ast.AndExpression, options: ParserOptions<AstNode>) {
25-
[this.loc, this.comments] = getNodeMetadata(ast);
21+
super(ast);
2622

2723
this.leftOperand = new Expression(ast.leftOperand, options);
2824
this.operator = ast.operator.unparse();
2925
this.rightOperand = new Expression(ast.rightOperand, options);
3026

31-
updateMetadata(this.loc, this.comments, [
32-
this.leftOperand,
33-
this.rightOperand
34-
]);
27+
this.updateMetadata([this.leftOperand, this.rightOperand]);
3528
}
3629

3730
print(

src/slang-nodes/ArgumentsDeclaration.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,20 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
2-
import { getNodeMetadata, updateMetadata } from '../slang-utils/metadata.js';
2+
import { SlangNode } from './SlangNode.js';
33
import { PositionalArgumentsDeclaration } from './PositionalArgumentsDeclaration.js';
44
import { NamedArgumentsDeclaration } from './NamedArgumentsDeclaration.js';
55

66
import type * as ast from '@nomicfoundation/slang/ast';
77
import type { AstPath, Doc, ParserOptions } from 'prettier';
88
import type { AstNode } from './types.d.ts';
9-
import type { PrintFunction, SlangNode } from '../types.d.ts';
9+
import type { PrintFunction } from '../types.d.ts';
1010

11-
export class ArgumentsDeclaration implements SlangNode {
11+
export class ArgumentsDeclaration extends SlangNode {
1212
readonly kind = NonterminalKind.ArgumentsDeclaration;
1313

14-
comments;
15-
16-
loc;
17-
1814
variant: PositionalArgumentsDeclaration | NamedArgumentsDeclaration;
1915

2016
constructor(ast: ast.ArgumentsDeclaration, options: ParserOptions<AstNode>) {
21-
[this.loc, this.comments] = getNodeMetadata(ast);
17+
super(ast);
2218

2319
switch (ast.variant.cst.kind) {
2420
case NonterminalKind.PositionalArgumentsDeclaration:
@@ -37,7 +33,7 @@ export class ArgumentsDeclaration implements SlangNode {
3733
throw new Error(`Unexpected variant: ${ast.variant.cst.kind}`);
3834
}
3935

40-
updateMetadata(this.loc, this.comments, [this.variant]);
36+
this.updateMetadata([this.variant]);
4137
}
4238

4339
print(path: AstPath<ArgumentsDeclaration>, print: PrintFunction): Doc {

src/slang-nodes/ArrayExpression.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,26 @@
11
import { doc } from 'prettier';
22
import { NonterminalKind } from '@nomicfoundation/slang/cst';
3-
import { getNodeMetadata, updateMetadata } from '../slang-utils/metadata.js';
3+
import { SlangNode } from './SlangNode.js';
44
import { ArrayValues } from './ArrayValues.js';
55

66
import type * as ast from '@nomicfoundation/slang/ast';
77
import type { AstPath, Doc, ParserOptions } from 'prettier';
88
import type { AstNode } from './types.d.ts';
9-
import type { PrintFunction, SlangNode } from '../types.d.ts';
9+
import type { PrintFunction } from '../types.d.ts';
1010

1111
const { group } = doc.builders;
1212

13-
export class ArrayExpression implements SlangNode {
13+
export class ArrayExpression extends SlangNode {
1414
readonly kind = NonterminalKind.ArrayExpression;
1515

16-
comments;
17-
18-
loc;
19-
2016
items: ArrayValues;
2117

2218
constructor(ast: ast.ArrayExpression, options: ParserOptions<AstNode>) {
23-
[this.loc, this.comments] = getNodeMetadata(ast);
19+
super(ast);
2420

2521
this.items = new ArrayValues(ast.items, options);
2622

27-
updateMetadata(this.loc, this.comments, [this.items]);
23+
this.updateMetadata([this.items]);
2824
}
2925

3026
print(path: AstPath<ArrayExpression>, print: PrintFunction): Doc {

src/slang-nodes/ArrayTypeName.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,29 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
2-
import { getNodeMetadata, updateMetadata } from '../slang-utils/metadata.js';
2+
import { SlangNode } from './SlangNode.js';
33
import { TypeName } from './TypeName.js';
44
import { Expression } from './Expression.js';
55

66
import type * as ast from '@nomicfoundation/slang/ast';
77
import type { AstPath, Doc, ParserOptions } from 'prettier';
88
import type { AstNode } from './types.d.ts';
9-
import type { PrintFunction, SlangNode } from '../types.d.ts';
9+
import type { PrintFunction } from '../types.d.ts';
1010

11-
export class ArrayTypeName implements SlangNode {
11+
export class ArrayTypeName extends SlangNode {
1212
readonly kind = NonterminalKind.ArrayTypeName;
1313

14-
comments;
15-
16-
loc;
17-
1814
operand: TypeName;
1915

2016
index?: Expression;
2117

2218
constructor(ast: ast.ArrayTypeName, options: ParserOptions<AstNode>) {
23-
[this.loc, this.comments] = getNodeMetadata(ast);
19+
super(ast);
2420

2521
this.operand = new TypeName(ast.operand, options);
2622
if (ast.index) {
2723
this.index = new Expression(ast.index, options);
2824
}
2925

30-
updateMetadata(this.loc, this.comments, [this.operand, this.index]);
26+
this.updateMetadata([this.operand, this.index]);
3127
}
3228

3329
print(path: AstPath<ArrayTypeName>, print: PrintFunction): Doc {

src/slang-nodes/ArrayValues.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,27 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
22
import { printSeparatedList } from '../slang-printers/print-separated-list.js';
3-
import { getNodeMetadata, updateMetadata } from '../slang-utils/metadata.js';
3+
import { SlangNode } from './SlangNode.js';
44
import { Expression } from './Expression.js';
55

66
import type * as ast from '@nomicfoundation/slang/ast';
77
import type { AstPath, Doc, ParserOptions } from 'prettier';
88
import type { AstNode } from './types.d.ts';
9-
import type { PrintFunction, SlangNode } from '../types.d.ts';
9+
import type { PrintFunction } from '../types.d.ts';
1010

11-
export class ArrayValues implements SlangNode {
11+
export class ArrayValues extends SlangNode {
1212
readonly kind = NonterminalKind.ArrayValues;
1313

14-
comments;
15-
16-
loc;
17-
1814
items: Expression[];
1915

2016
separators: string[];
2117

2218
constructor(ast: ast.ArrayValues, options: ParserOptions<AstNode>) {
23-
[this.loc, this.comments] = getNodeMetadata(ast, true);
19+
super(ast, true);
2420

2521
this.items = ast.items.map((item) => new Expression(item, options));
2622
this.separators = ast.separators.map((separator) => separator.unparse());
2723

28-
updateMetadata(this.loc, this.comments, [this.items]);
24+
this.updateMetadata([this.items]);
2925
}
3026

3127
print(path: AstPath<ArrayValues>, print: PrintFunction): Doc {

src/slang-nodes/AssemblyFlags.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,27 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
22
import { printSeparatedList } from '../slang-printers/print-separated-list.js';
3-
import { getNodeMetadata, updateMetadata } from '../slang-utils/metadata.js';
3+
import { SlangNode } from './SlangNode.js';
44
import { StringLiteral } from './StringLiteral.js';
55

66
import type * as ast from '@nomicfoundation/slang/ast';
77
import type { AstPath, Doc, ParserOptions } from 'prettier';
88
import type { AstNode } from './types.d.ts';
9-
import type { PrintFunction, SlangNode } from '../types.d.ts';
9+
import type { PrintFunction } from '../types.d.ts';
1010

11-
export class AssemblyFlags implements SlangNode {
11+
export class AssemblyFlags extends SlangNode {
1212
readonly kind = NonterminalKind.AssemblyFlags;
1313

14-
comments;
15-
16-
loc;
17-
1814
items: StringLiteral[];
1915

2016
separators: string[];
2117

2218
constructor(ast: ast.AssemblyFlags, options: ParserOptions<AstNode>) {
23-
[this.loc, this.comments] = getNodeMetadata(ast, true);
19+
super(ast, true);
2420

2521
this.items = ast.items.map((item) => new StringLiteral(item, options));
2622
this.separators = ast.separators.map((separator) => separator.unparse());
2723

28-
updateMetadata(this.loc, this.comments, [this.items]);
24+
this.updateMetadata([this.items]);
2925
}
3026

3127
print(path: AstPath<AssemblyFlags>, print: PrintFunction): Doc {

src/slang-nodes/AssemblyFlagsDeclaration.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,26 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
2-
import { getNodeMetadata, updateMetadata } from '../slang-utils/metadata.js';
2+
import { SlangNode } from './SlangNode.js';
33
import { AssemblyFlags } from './AssemblyFlags.js';
44

55
import type * as ast from '@nomicfoundation/slang/ast';
66
import type { AstPath, Doc, ParserOptions } from 'prettier';
77
import type { AstNode } from './types.d.ts';
8-
import type { PrintFunction, SlangNode } from '../types.d.ts';
8+
import type { PrintFunction } from '../types.d.ts';
99

10-
export class AssemblyFlagsDeclaration implements SlangNode {
10+
export class AssemblyFlagsDeclaration extends SlangNode {
1111
readonly kind = NonterminalKind.AssemblyFlagsDeclaration;
1212

13-
comments;
14-
15-
loc;
16-
1713
flags: AssemblyFlags;
1814

1915
constructor(
2016
ast: ast.AssemblyFlagsDeclaration,
2117
options: ParserOptions<AstNode>
2218
) {
23-
[this.loc, this.comments] = getNodeMetadata(ast);
19+
super(ast);
2420

2521
this.flags = new AssemblyFlags(ast.flags, options);
2622

27-
updateMetadata(this.loc, this.comments, [this.flags]);
23+
this.updateMetadata([this.flags]);
2824
}
2925

3026
print(path: AstPath<AssemblyFlagsDeclaration>, print: PrintFunction): Doc {

0 commit comments

Comments
 (0)