Skip to content

Commit dd23da0

Browse files
authored
avoid calling path.node when we already have the reference (#1440)
* avoid calling `path.node` when we already have the reference * small refactor to keep code smaller
1 parent 457de3e commit dd23da0

16 files changed

+54
-43
lines changed

src/slang-nodes/ContractMembers.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,10 @@ export class ContractMembers extends SlangNode {
3636
options: ParserOptions<AstNode>
3737
): Doc {
3838
return this.items.length > 0 || (this.comments?.length || 0) > 0
39-
? printSeparatedItem(printPreservingEmptyLines(path, print, options), {
40-
firstSeparator: hardline
41-
})
39+
? printSeparatedItem(
40+
printPreservingEmptyLines(this, path, print, options),
41+
{ firstSeparator: hardline }
42+
)
4243
: '';
4344
}
4445
}

src/slang-nodes/InterfaceMembers.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,10 @@ export class InterfaceMembers extends SlangNode {
3636
options: ParserOptions<AstNode>
3737
): Doc {
3838
return this.items.length > 0 || (this.comments?.length || 0) > 0
39-
? printSeparatedItem(printPreservingEmptyLines(path, print, options), {
40-
firstSeparator: hardline
41-
})
39+
? printSeparatedItem(
40+
printPreservingEmptyLines(this, path, print, options),
41+
{ firstSeparator: hardline }
42+
)
4243
: '';
4344
}
4445
}

src/slang-nodes/LibraryMembers.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,10 @@ export class LibraryMembers extends SlangNode {
3636
options: ParserOptions<AstNode>
3737
): Doc {
3838
return this.items.length > 0 || (this.comments?.length || 0) > 0
39-
? printSeparatedItem(printPreservingEmptyLines(path, print, options), {
40-
firstSeparator: hardline
41-
})
39+
? printSeparatedItem(
40+
printPreservingEmptyLines(this, path, print, options),
41+
{ firstSeparator: hardline }
42+
)
4243
: '';
4344
}
4445
}

src/slang-nodes/MemberAccessExpression.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,18 @@ import { TerminalNode } from './TerminalNode.js';
1010
import type * as ast from '@nomicfoundation/slang/ast';
1111
import type { AstPath, Doc, ParserOptions } from 'prettier';
1212
import type { CollectedMetadata, PrintFunction } from '../types.d.ts';
13-
import type { AstNode } from './types.d.ts';
13+
import type { AstNode, ChainableExpression } from './types.d.ts';
1414

1515
const { group, indent, label, softline } = doc.builders;
1616

1717
function isEndOfChain(
18-
node: MemberAccessExpression,
18+
node: ChainableExpression,
1919
path: AstPath<Expression['variant']>
2020
): boolean {
21-
for (
22-
let i = 1, current: Expression['variant'] = node, parent = path.getNode(i);
23-
parent && isChainableExpression(parent);
24-
i++, current = parent, parent = path.getNode(i)
25-
) {
21+
for (let i = 1, current = node, parent; ; i++, current = parent) {
22+
parent = path.getNode(i)!;
23+
if (!isChainableExpression(parent)) break;
24+
2625
switch (parent.kind) {
2726
case NonterminalKind.MemberAccessExpression:
2827
// If `parent` is a MemberAccessExpression we are not at the end

src/slang-nodes/Parameters.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export class Parameters extends SlangNode {
3636
return printSeparatedList(path.map(print, 'items'), { grouped: false });
3737
}
3838

39-
const parameterComments = printComments(path, options);
39+
const parameterComments = printComments(this, path, options);
4040

4141
return parameterComments.length > 0
4242
? printSeparatedItem(parameterComments)

src/slang-nodes/PositionalArguments.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export class PositionalArguments extends SlangNode {
3636
if (this.items.length > 0) {
3737
return printSeparatedList(path.map(print, 'items'));
3838
}
39-
const argumentComments = printComments(path, options);
39+
const argumentComments = printComments(this, path, options);
4040

4141
return argumentComments.length > 0
4242
? printSeparatedItem(argumentComments)

src/slang-nodes/SourceUnitMembers.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,6 @@ export class SourceUnitMembers extends SlangNode {
3131
print: PrintFunction,
3232
options: ParserOptions<AstNode>
3333
): Doc {
34-
return printPreservingEmptyLines(path, print, options);
34+
return printPreservingEmptyLines(this, path, print, options);
3535
}
3636
}

src/slang-nodes/Statements.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,10 @@ export class Statements extends SlangNode {
3636
options: ParserOptions<AstNode>
3737
): Doc {
3838
return this.items.length > 0 || (this.comments?.length || 0) > 0
39-
? printSeparatedItem(printPreservingEmptyLines(path, print, options), {
40-
firstSeparator: hardline
41-
})
39+
? printSeparatedItem(
40+
printPreservingEmptyLines(this, path, print, options),
41+
{ firstSeparator: hardline }
42+
)
4243
: '';
4344
}
4445
}

src/slang-nodes/YulStatements.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,10 @@ export class YulStatements extends SlangNode {
3636
options: ParserOptions<AstNode>
3737
): Doc {
3838
return this.items.length > 0 || (this.comments?.length || 0) > 0
39-
? printSeparatedItem(printPreservingEmptyLines(path, print, options), {
40-
firstSeparator: hardline
41-
})
39+
? printSeparatedItem(
40+
printPreservingEmptyLines(this, path, print, options),
41+
{ firstSeparator: hardline }
42+
)
4243
: '';
4344
}
4445
}

src/slang-nodes/types.d.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,11 @@ export type BinaryOperation = Extract<
494494
}
495495
>;
496496

497+
export type ChainableExpression =
498+
| FunctionCallExpression
499+
| IndexAccessExpression
500+
| MemberAccessExpression;
501+
497502
export type AstNode =
498503
| StrictAstNode
499504
| Comment

0 commit comments

Comments
 (0)