Skip to content

Commit 964a10c

Browse files
committed
removing ImportClause, MappingKeyType, Pragma, StringExpression, and TupleMember from the AST tree
1 parent e024caf commit 964a10c

11 files changed

Lines changed: 38 additions & 28 deletions

src/slang-nodes/Expression.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ function createNonterminalVariant(
117117
return new DecimalNumberExpression(variant);
118118
}
119119
if (variant instanceof ast.StringExpression) {
120-
return new StringExpression(variant, options);
120+
return extractVariant(new StringExpression(variant, options));
121121
}
122122
if (variant instanceof ast.ElementaryType) {
123123
return extractVariant(new ElementaryType(variant));
@@ -155,7 +155,7 @@ export class Expression extends SlangNode {
155155
| ArrayExpression
156156
| HexNumberExpression
157157
| DecimalNumberExpression
158-
| StringExpression
158+
| StringExpression['variant']
159159
| ElementaryType['variant']
160160
| TerminalNode;
161161

src/slang-nodes/ImportClause.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as ast from '@nomicfoundation/slang/ast';
22
import { NonterminalKind } from '@nomicfoundation/slang/cst';
3-
import { PolymorphicNode } from './PolymorphicNode.js';
3+
import { SlangNode } from './SlangNode.js';
44
import { PathImport } from './PathImport.js';
55
import { NamedImport } from './NamedImport.js';
66
import { ImportDeconstruction } from './ImportDeconstruction.js';
@@ -25,7 +25,7 @@ function createNonterminalVariant(
2525
return exhaustiveCheck;
2626
}
2727

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

3131
variant: PathImport | NamedImport | ImportDeconstruction;

src/slang-nodes/ImportDirective.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 { ImportClause } from './ImportClause.js';
55

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

14-
clause: ImportClause;
14+
clause: ImportClause['variant'];
1515

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

19-
this.clause = new ImportClause(ast.clause, options);
19+
this.clause = extractVariant(new ImportClause(ast.clause, options));
2020

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

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

src/slang-nodes/MappingKey.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 { MappingKeyType } from './MappingKeyType.js';
66
import { TerminalNode } from './TerminalNode.js';
@@ -12,14 +12,14 @@ import type { PrintFunction } from '../types.d.ts';
1212
export class MappingKey extends SlangNode {
1313
readonly kind = NonterminalKind.MappingKey;
1414

15-
keyType: MappingKeyType;
15+
keyType: MappingKeyType['variant'];
1616

1717
name?: TerminalNode;
1818

1919
constructor(ast: ast.MappingKey) {
2020
super(ast);
2121

22-
this.keyType = new MappingKeyType(ast.keyType);
22+
this.keyType = extractVariant(new MappingKeyType(ast.keyType));
2323
if (ast.name) {
2424
this.name = new TerminalNode(ast.name);
2525
}
@@ -29,7 +29,7 @@ export class MappingKey extends SlangNode {
2929

3030
print(path: AstPath<MappingKey>, print: PrintFunction): Doc {
3131
return joinExisting(' ', [
32-
path.call(printVariant(print), 'keyType'),
32+
path.call(print, 'keyType'),
3333
path.call(print, 'name')
3434
]);
3535
}

src/slang-nodes/MappingKeyType.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import * as ast from '@nomicfoundation/slang/ast';
22
import { NonterminalKind } from '@nomicfoundation/slang/cst';
33
import { extractVariant } from '../slang-utils/extract-variant.js';
4-
import { PolymorphicNode } from './PolymorphicNode.js';
4+
import { SlangNode } from './SlangNode.js';
55
import { ElementaryType } from './ElementaryType.js';
66
import { IdentifierPath } from './IdentifierPath.js';
77

@@ -18,7 +18,7 @@ function createNonterminalVariant(
1818
return exhaustiveCheck;
1919
}
2020

21-
export class MappingKeyType extends PolymorphicNode {
21+
export class MappingKeyType extends SlangNode {
2222
readonly kind = NonterminalKind.MappingKeyType;
2323

2424
variant: ElementaryType['variant'] | IdentifierPath;

src/slang-nodes/Pragma.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as ast from '@nomicfoundation/slang/ast';
22
import { NonterminalKind } from '@nomicfoundation/slang/cst';
3-
import { PolymorphicNode } from './PolymorphicNode.js';
3+
import { SlangNode } from './SlangNode.js';
44
import { AbicoderPragma } from './AbicoderPragma.js';
55
import { ExperimentalPragma } from './ExperimentalPragma.js';
66
import { VersionPragma } from './VersionPragma.js';
@@ -25,7 +25,7 @@ function createNonterminalVariant(
2525
return exhaustiveCheck;
2626
}
2727

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

3131
variant: AbicoderPragma | ExperimentalPragma | VersionPragma;

src/slang-nodes/PragmaDirective.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 { Pragma } from './Pragma.js';
55

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

14-
pragma: Pragma;
14+
pragma: Pragma['variant'];
1515

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

19-
this.pragma = new Pragma(ast.pragma, options);
19+
this.pragma = extractVariant(new Pragma(ast.pragma, options));
2020

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

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

src/slang-nodes/StringExpression.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as ast from '@nomicfoundation/slang/ast';
22
import { NonterminalKind } from '@nomicfoundation/slang/cst';
3-
import { PolymorphicNode } from './PolymorphicNode.js';
3+
import { SlangNode } from './SlangNode.js';
44
import { StringLiteral } from './StringLiteral.js';
55
import { StringLiterals } from './StringLiterals.js';
66
import { HexStringLiteral } from './HexStringLiteral.js';
@@ -33,7 +33,7 @@ function createNonterminalVariant(
3333
return exhaustiveCheck;
3434
}
3535

36-
export class StringExpression extends PolymorphicNode {
36+
export class StringExpression extends SlangNode {
3737
readonly kind = NonterminalKind.StringExpression;
3838

3939
variant:

src/slang-nodes/TupleDeconstructionElement.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 { TupleMember } from './TupleMember.js';
55

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

14-
member?: TupleMember;
14+
member?: TupleMember['variant'];
1515

1616
constructor(
1717
ast: ast.TupleDeconstructionElement,
@@ -20,13 +20,13 @@ export class TupleDeconstructionElement extends SlangNode {
2020
super(ast);
2121

2222
if (ast.member) {
23-
this.member = new TupleMember(ast.member, options);
23+
this.member = extractVariant(new TupleMember(ast.member, options));
2424
}
2525

2626
this.updateMetadata(this.member);
2727
}
2828

2929
print(path: AstPath<TupleDeconstructionElement>, print: PrintFunction): Doc {
30-
return path.call(printVariant(print), 'member');
30+
return path.call(print, 'member');
3131
}
3232
}

src/slang-nodes/TupleMember.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as ast from '@nomicfoundation/slang/ast';
22
import { NonterminalKind } from '@nomicfoundation/slang/cst';
3-
import { PolymorphicNode } from './PolymorphicNode.js';
3+
import { SlangNode } from './SlangNode.js';
44
import { TypedTupleMember } from './TypedTupleMember.js';
55
import { UntypedTupleMember } from './UntypedTupleMember.js';
66

@@ -21,7 +21,7 @@ function createNonterminalVariant(
2121
return exhaustiveCheck;
2222
}
2323

24-
export class TupleMember extends PolymorphicNode {
24+
export class TupleMember extends SlangNode {
2525
readonly kind = NonterminalKind.TupleMember;
2626

2727
variant: TypedTupleMember | UntypedTupleMember;

0 commit comments

Comments
 (0)