Skip to content

Commit e024caf

Browse files
committed
removing FunctionName from the AST tree
1 parent 7bf1a64 commit e024caf

4 files changed

Lines changed: 8 additions & 7 deletions

File tree

src/slang-nodes/ContractDefinition.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ export class ContractDefinition extends SlangNode {
4444
for (const member of this.members.items) {
4545
if (
4646
member.kind === NonterminalKind.FunctionDefinition &&
47-
member.name.variant.value !== this.name.value
47+
member.name.value !== this.name.value
4848
) {
4949
member.cleanModifierInvocationArguments();
5050
}

src/slang-nodes/FunctionDefinition.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { satisfies } from 'semver';
22
import { NonterminalKind } from '@nomicfoundation/slang/cst';
33
import { printFunctionWithBody } from '../slang-printers/print-function.js';
4-
import { printVariant } from '../slang-printers/print-variant.js';
54
import { extractVariant } from '../slang-utils/extract-variant.js';
65
import { SlangNode } from './SlangNode.js';
76
import { FunctionName } from './FunctionName.js';
@@ -18,7 +17,7 @@ import type { AstNode } from './types.d.ts';
1817
export class FunctionDefinition extends SlangNode {
1918
readonly kind = NonterminalKind.FunctionDefinition;
2019

21-
name: FunctionName;
20+
name: FunctionName['variant'];
2221

2322
parameters: ParametersDeclaration;
2423

@@ -31,7 +30,7 @@ export class FunctionDefinition extends SlangNode {
3130
constructor(ast: ast.FunctionDefinition, options: ParserOptions<AstNode>) {
3231
super(ast);
3332

34-
this.name = new FunctionName(ast.name);
33+
this.name = extractVariant(new FunctionName(ast.name));
3534
this.parameters = new ParametersDeclaration(ast.parameters, options);
3635
this.attributes = new FunctionAttributes(ast.attributes, options);
3736
if (ast.returns) {
@@ -67,7 +66,7 @@ export class FunctionDefinition extends SlangNode {
6766

6867
print(path: AstPath<FunctionDefinition>, print: PrintFunction): Doc {
6968
return printFunctionWithBody(
70-
['function ', path.call(printVariant(print), 'name')],
69+
['function ', path.call(print, 'name')],
7170
this,
7271
path,
7372
print

src/slang-nodes/FunctionName.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
2-
import { PolymorphicNode } from './PolymorphicNode.js';
2+
import { SlangNode } from './SlangNode.js';
33
import { TerminalNode } from './TerminalNode.js';
44

55
import type * as ast from '@nomicfoundation/slang/ast';
66

7-
export class FunctionName extends PolymorphicNode {
7+
export class FunctionName extends SlangNode {
88
readonly kind = NonterminalKind.FunctionName;
99

1010
variant: TerminalNode;

src/slangPrinter.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import type { Expression } from './slang-nodes/Expression.js';
2424
import type { ForStatementInitialization } from './slang-nodes/ForStatementInitialization.js';
2525
import type { ForStatementCondition } from './slang-nodes/ForStatementCondition.js';
2626
import type { FunctionBody } from './slang-nodes/FunctionBody.js';
27+
import type { FunctionName } from './slang-nodes/FunctionName.js';
2728

2829
function hasNodeIgnoreComment({ comments }: StrictAstNode): boolean {
2930
// Prettier sets SourceUnit's comments to undefined after assigning comments
@@ -96,6 +97,7 @@ function genericPrint(
9697
| ForStatementInitialization
9798
| ForStatementCondition
9899
| FunctionBody
100+
| FunctionName
99101
>
100102
>,
101103
options: ParserOptions<AstNode>,

0 commit comments

Comments
 (0)