Skip to content

Commit 53ed705

Browse files
committed
removing TypeName from the AST tree
1 parent 964a10c commit 53ed705

15 files changed

Lines changed: 52 additions & 60 deletions

src/slang-nodes/ArrayTypeName.ts

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
2-
import { printVariant } from '../slang-printers/print-variant.js';
32
import { extractVariant } from '../slang-utils/extract-variant.js';
43
import { SlangNode } from './SlangNode.js';
54
import { TypeName } from './TypeName.js';
@@ -13,14 +12,14 @@ import type { AstNode } from './types.d.ts';
1312
export class ArrayTypeName extends SlangNode {
1413
readonly kind = NonterminalKind.ArrayTypeName;
1514

16-
operand: TypeName;
15+
operand: TypeName['variant'];
1716

1817
index?: Expression['variant'];
1918

2019
constructor(ast: ast.ArrayTypeName, options: ParserOptions<AstNode>) {
2120
super(ast);
2221

23-
this.operand = new TypeName(ast.operand, options);
22+
this.operand = extractVariant(new TypeName(ast.operand, options));
2423
if (ast.index) {
2524
this.index = extractVariant(new Expression(ast.index, options));
2625
}
@@ -29,11 +28,6 @@ export class ArrayTypeName extends SlangNode {
2928
}
3029

3130
print(path: AstPath<ArrayTypeName>, print: PrintFunction): Doc {
32-
return [
33-
path.call(printVariant(print), 'operand'),
34-
'[',
35-
path.call(print, 'index'),
36-
']'
37-
];
31+
return [path.call(print, 'operand'), '[', path.call(print, 'index'), ']'];
3832
}
3933
}

src/slang-nodes/ConstantDefinition.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
2-
import { printVariant } from '../slang-printers/print-variant.js';
32
import { extractVariant } from '../slang-utils/extract-variant.js';
43
import { SlangNode } from './SlangNode.js';
54
import { TypeName } from './TypeName.js';
@@ -14,7 +13,7 @@ import type { AstNode } from './types.d.ts';
1413
export class ConstantDefinition extends SlangNode {
1514
readonly kind = NonterminalKind.ConstantDefinition;
1615

17-
typeName: TypeName;
16+
typeName: TypeName['variant'];
1817

1918
name: TerminalNode;
2019

@@ -23,7 +22,7 @@ export class ConstantDefinition extends SlangNode {
2322
constructor(ast: ast.ConstantDefinition, options: ParserOptions<AstNode>) {
2423
super(ast);
2524

26-
this.typeName = new TypeName(ast.typeName, options);
25+
this.typeName = extractVariant(new TypeName(ast.typeName, options));
2726
this.name = new TerminalNode(ast.name);
2827
this.value = extractVariant(new Expression(ast.value, options));
2928

@@ -32,7 +31,7 @@ export class ConstantDefinition extends SlangNode {
3231

3332
print(path: AstPath<ConstantDefinition>, print: PrintFunction): Doc {
3433
return [
35-
path.call(printVariant(print), 'typeName'),
34+
path.call(print, 'typeName'),
3635
' constant ',
3736
path.call(print, 'name'),
3837
' = ',

src/slang-nodes/ErrorParameter.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
22
import { joinExisting } from '../slang-utils/join-existing.js';
3-
import { printVariant } from '../slang-printers/print-variant.js';
3+
import { extractVariant } from '../slang-utils/extract-variant.js';
44
import { SlangNode } from './SlangNode.js';
55
import { TypeName } from './TypeName.js';
66
import { TerminalNode } from './TerminalNode.js';
@@ -13,14 +13,14 @@ import type { AstNode } from './types.d.ts';
1313
export class ErrorParameter extends SlangNode {
1414
readonly kind = NonterminalKind.ErrorParameter;
1515

16-
typeName: TypeName;
16+
typeName: TypeName['variant'];
1717

1818
name?: TerminalNode;
1919

2020
constructor(ast: ast.ErrorParameter, options: ParserOptions<AstNode>) {
2121
super(ast);
2222

23-
this.typeName = new TypeName(ast.typeName, options);
23+
this.typeName = extractVariant(new TypeName(ast.typeName, options));
2424
if (ast.name) {
2525
this.name = new TerminalNode(ast.name);
2626
}
@@ -30,7 +30,7 @@ export class ErrorParameter extends SlangNode {
3030

3131
print(path: AstPath<ErrorParameter>, print: PrintFunction): Doc {
3232
return joinExisting(' ', [
33-
path.call(printVariant(print), 'typeName'),
33+
path.call(print, 'typeName'),
3434
path.call(print, 'name')
3535
]);
3636
}

src/slang-nodes/EventParameter.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
22
import { joinExisting } from '../slang-utils/join-existing.js';
3-
import { printVariant } from '../slang-printers/print-variant.js';
3+
import { extractVariant } from '../slang-utils/extract-variant.js';
44
import { SlangNode } from './SlangNode.js';
55
import { TypeName } from './TypeName.js';
66
import { TerminalNode } from './TerminalNode.js';
@@ -13,7 +13,7 @@ import type { AstNode } from './types.d.ts';
1313
export class EventParameter extends SlangNode {
1414
readonly kind = NonterminalKind.EventParameter;
1515

16-
typeName: TypeName;
16+
typeName: TypeName['variant'];
1717

1818
indexedKeyword?: string;
1919

@@ -22,7 +22,7 @@ export class EventParameter extends SlangNode {
2222
constructor(ast: ast.EventParameter, options: ParserOptions<AstNode>) {
2323
super(ast);
2424

25-
this.typeName = new TypeName(ast.typeName, options);
25+
this.typeName = extractVariant(new TypeName(ast.typeName, options));
2626
this.indexedKeyword = ast.indexedKeyword?.unparse();
2727
if (ast.name) {
2828
this.name = new TerminalNode(ast.name);
@@ -33,7 +33,7 @@ export class EventParameter extends SlangNode {
3333

3434
print(path: AstPath<EventParameter>, print: PrintFunction): Doc {
3535
return joinExisting(' ', [
36-
path.call(printVariant(print), 'typeName'),
36+
path.call(print, 'typeName'),
3737
this.indexedKeyword,
3838
path.call(print, 'name')
3939
]);

src/slang-nodes/MappingValue.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
22
import { joinExisting } from '../slang-utils/join-existing.js';
3-
import { printVariant } from '../slang-printers/print-variant.js';
3+
import { extractVariant } from '../slang-utils/extract-variant.js';
44
import { SlangNode } from './SlangNode.js';
55
import { TypeName } from './TypeName.js';
66
import { TerminalNode } from './TerminalNode.js';
@@ -13,14 +13,14 @@ import type { AstNode } from './types.d.ts';
1313
export class MappingValue extends SlangNode {
1414
readonly kind = NonterminalKind.MappingValue;
1515

16-
typeName: TypeName;
16+
typeName: TypeName['variant'];
1717

1818
name?: TerminalNode;
1919

2020
constructor(ast: ast.MappingValue, options: ParserOptions<AstNode>) {
2121
super(ast);
2222

23-
this.typeName = new TypeName(ast.typeName, options);
23+
this.typeName = extractVariant(new TypeName(ast.typeName, options));
2424
if (ast.name) {
2525
this.name = new TerminalNode(ast.name);
2626
}
@@ -30,7 +30,7 @@ export class MappingValue extends SlangNode {
3030

3131
print(path: AstPath<MappingValue>, print: PrintFunction): Doc {
3232
return joinExisting(' ', [
33-
path.call(printVariant(print), 'typeName'),
33+
path.call(print, 'typeName'),
3434
path.call(print, 'name')
3535
]);
3636
}

src/slang-nodes/NewExpression.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
2-
import { printVariant } from '../slang-printers/print-variant.js';
2+
import { extractVariant } from '../slang-utils/extract-variant.js';
33
import { SlangNode } from './SlangNode.js';
44
import { TypeName } from './TypeName.js';
55

@@ -11,17 +11,17 @@ import type { AstNode } from './types.d.ts';
1111
export class NewExpression extends SlangNode {
1212
readonly kind = NonterminalKind.NewExpression;
1313

14-
typeName: TypeName;
14+
typeName: TypeName['variant'];
1515

1616
constructor(ast: ast.NewExpression, options: ParserOptions<AstNode>) {
1717
super(ast);
1818

19-
this.typeName = new TypeName(ast.typeName, options);
19+
this.typeName = extractVariant(new TypeName(ast.typeName, options));
2020

2121
this.updateMetadata(this.typeName);
2222
}
2323

2424
print(path: AstPath<NewExpression>, print: PrintFunction): Doc {
25-
return ['new ', path.call(printVariant(print), 'typeName')];
25+
return ['new ', path.call(print, 'typeName')];
2626
}
2727
}

src/slang-nodes/Parameter.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
22
import { doc } from 'prettier';
33
import { joinExisting } from '../slang-utils/join-existing.js';
4-
import { printVariant } from '../slang-printers/print-variant.js';
4+
import { extractVariant } from '../slang-utils/extract-variant.js';
55
import { SlangNode } from './SlangNode.js';
66
import { TypeName } from './TypeName.js';
77
import { StorageLocation } from './StorageLocation.js';
@@ -17,7 +17,7 @@ const { group } = doc.builders;
1717
export class Parameter extends SlangNode {
1818
readonly kind = NonterminalKind.Parameter;
1919

20-
typeName: TypeName;
20+
typeName: TypeName['variant'];
2121

2222
storageLocation?: StorageLocation;
2323

@@ -26,7 +26,7 @@ export class Parameter extends SlangNode {
2626
constructor(ast: ast.Parameter, options: ParserOptions<AstNode>) {
2727
super(ast);
2828

29-
this.typeName = new TypeName(ast.typeName, options);
29+
this.typeName = extractVariant(new TypeName(ast.typeName, options));
3030
if (ast.storageLocation) {
3131
this.storageLocation = new StorageLocation(ast.storageLocation);
3232
}
@@ -40,7 +40,7 @@ export class Parameter extends SlangNode {
4040
print(path: AstPath<Parameter>, print: PrintFunction): Doc {
4141
return group(
4242
joinExisting(' ', [
43-
path.call(printVariant(print), 'typeName'),
43+
path.call(print, 'typeName'),
4444
path.call(print, 'storageLocation'),
4545
path.call(print, 'name')
4646
])

src/slang-nodes/StateVariableDefinition.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
22
import { doc } from 'prettier';
33
import { printGroupAndIndentIfBreakPair } from '../slang-printers/print-group-and-indent-if-break-pair.js';
4-
import { printVariant } from '../slang-printers/print-variant.js';
4+
import { extractVariant } from '../slang-utils/extract-variant.js';
55
import { SlangNode } from './SlangNode.js';
66
import { TypeName } from './TypeName.js';
77
import { StateVariableAttributes } from './StateVariableAttributes.js';
@@ -18,7 +18,7 @@ const { indent } = doc.builders;
1818
export class StateVariableDefinition extends SlangNode {
1919
readonly kind = NonterminalKind.StateVariableDefinition;
2020

21-
typeName: TypeName;
21+
typeName: TypeName['variant'];
2222

2323
attributes: StateVariableAttributes;
2424

@@ -32,7 +32,7 @@ export class StateVariableDefinition extends SlangNode {
3232
) {
3333
super(ast);
3434

35-
this.typeName = new TypeName(ast.typeName, options);
35+
this.typeName = extractVariant(new TypeName(ast.typeName, options));
3636
this.attributes = new StateVariableAttributes(ast.attributes);
3737
this.name = new TerminalNode(ast.name);
3838
if (ast.value) {
@@ -45,7 +45,7 @@ export class StateVariableDefinition extends SlangNode {
4545
print(path: AstPath<StateVariableDefinition>, print: PrintFunction): Doc {
4646
return printGroupAndIndentIfBreakPair(
4747
[
48-
path.call(printVariant(print), 'typeName'),
48+
path.call(print, 'typeName'),
4949
indent(path.call(print, 'attributes')),
5050
' ',
5151
path.call(print, 'name')

src/slang-nodes/StructMember.ts

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
2-
import { printVariant } from '../slang-printers/print-variant.js';
2+
import { extractVariant } from '../slang-utils/extract-variant.js';
33
import { SlangNode } from './SlangNode.js';
44
import { TypeName } from './TypeName.js';
55
import { TerminalNode } from './TerminalNode.js';
@@ -12,25 +12,20 @@ import type { AstNode } from './types.d.ts';
1212
export class StructMember extends SlangNode {
1313
readonly kind = NonterminalKind.StructMember;
1414

15-
typeName: TypeName;
15+
typeName: TypeName['variant'];
1616

1717
name: TerminalNode;
1818

1919
constructor(ast: ast.StructMember, options: ParserOptions<AstNode>) {
2020
super(ast);
2121

22-
this.typeName = new TypeName(ast.typeName, options);
22+
this.typeName = extractVariant(new TypeName(ast.typeName, options));
2323
this.name = new TerminalNode(ast.name);
2424

2525
this.updateMetadata(this.typeName);
2626
}
2727

2828
print(path: AstPath<StructMember>, print: PrintFunction): Doc {
29-
return [
30-
path.call(printVariant(print), 'typeName'),
31-
' ',
32-
path.call(print, 'name'),
33-
';'
34-
];
29+
return [path.call(print, 'typeName'), ' ', path.call(print, 'name'), ';'];
3530
}
3631
}

src/slang-nodes/TypeExpression.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
2-
import { printVariant } from '../slang-printers/print-variant.js';
2+
import { extractVariant } from '../slang-utils/extract-variant.js';
33
import { SlangNode } from './SlangNode.js';
44
import { TypeName } from './TypeName.js';
55

@@ -11,17 +11,17 @@ import type { AstNode } from './types.d.ts';
1111
export class TypeExpression extends SlangNode {
1212
readonly kind = NonterminalKind.TypeExpression;
1313

14-
typeName: TypeName;
14+
typeName: TypeName['variant'];
1515

1616
constructor(ast: ast.TypeExpression, options: ParserOptions<AstNode>) {
1717
super(ast);
1818

19-
this.typeName = new TypeName(ast.typeName, options);
19+
this.typeName = extractVariant(new TypeName(ast.typeName, options));
2020

2121
this.updateMetadata(this.typeName);
2222
}
2323

2424
print(path: AstPath<TypeExpression>, print: PrintFunction): Doc {
25-
return ['type(', path.call(printVariant(print), 'typeName'), ')'];
25+
return ['type(', path.call(print, 'typeName'), ')'];
2626
}
2727
}

0 commit comments

Comments
 (0)