Skip to content

Commit af6f136

Browse files
committed
removing joinExisting to improve performance, be more explicit, and reduce filesize
1 parent dcc76f9 commit af6f136

24 files changed

Lines changed: 94 additions & 105 deletions

src/slang-nodes/AssemblyStatement.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
2-
import { joinExisting } from '../slang-utils/join-existing.js';
32
import { SlangNode } from './SlangNode.js';
43
import { StringLiteral } from './StringLiteral.js';
54
import { AssemblyFlagsDeclaration } from './AssemblyFlagsDeclaration.js';
@@ -38,11 +37,13 @@ export class AssemblyStatement extends SlangNode {
3837
}
3938

4039
print(print: PrintFunction): Doc {
41-
return joinExisting(' ', [
42-
'assembly',
43-
print('label'),
44-
print('flags'),
40+
const labelDoc = print('label');
41+
const flagsDoc = print('flags');
42+
return [
43+
'assembly ',
44+
labelDoc ? [labelDoc, ' '] : '',
45+
flagsDoc ? [flagsDoc, ' '] : '',
4546
print('body')
46-
]);
47+
];
4748
}
4849
}

src/slang-nodes/ConstructorDefinition.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
2-
import { printFunctionWithBody } from '../slang-printers/print-function.js';
2+
import { printFunction } from '../slang-printers/print-function.js';
33
import { SlangNode } from './SlangNode.js';
44
import { ParametersDeclaration } from './ParametersDeclaration.js';
55
import { ConstructorAttributes } from './ConstructorAttributes.js';
@@ -42,6 +42,6 @@ export class ConstructorDefinition extends SlangNode {
4242
}
4343

4444
print(print: PrintFunction): Doc {
45-
return printFunctionWithBody('constructor', this, print);
45+
return printFunction('constructor', this, print);
4646
}
4747
}

src/slang-nodes/ContractDefinition.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,8 @@ export class ContractDefinition extends SlangNode {
6060

6161
print(print: PrintFunction): Doc {
6262
return [
63+
`${this.abstractKeyword ? 'abstract ' : ''}contract `,
6364
group([
64-
this.abstractKeyword ? 'abstract ' : '',
65-
'contract ',
6665
print('name'),
6766
print('specifiers'),
6867
this.specifiers.items.length > 0 ? '' : line,

src/slang-nodes/DecimalNumberExpression.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
2-
import { joinExisting } from '../slang-utils/join-existing.js';
32
import { SlangNode } from './SlangNode.js';
43
import { NumberUnit } from './NumberUnit.js';
54

@@ -26,6 +25,7 @@ export class DecimalNumberExpression extends SlangNode {
2625
}
2726

2827
print(print: PrintFunction): Doc {
29-
return joinExisting(' ', [this.literal, print('unit')]);
28+
const unitDoc = print('unit');
29+
return [this.literal, unitDoc ? [' ', unitDoc] : ''];
3030
}
3131
}

src/slang-nodes/ErrorParameter.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
2-
import { joinExisting } from '../slang-utils/join-existing.js';
32
import { extractVariant } from '../slang-utils/extract-variant.js';
43
import { SlangNode } from './SlangNode.js';
54
import { TypeName } from './TypeName.js';
@@ -35,6 +34,7 @@ export class ErrorParameter extends SlangNode {
3534
}
3635

3736
print(print: PrintFunction): Doc {
38-
return joinExisting(' ', [print('typeName'), print('name')]);
37+
const nameDoc = print('name');
38+
return [print('typeName'), nameDoc ? [' ', nameDoc] : ''];
3939
}
4040
}

src/slang-nodes/EventParameter.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
2-
import { joinExisting } from '../slang-utils/join-existing.js';
32
import { extractVariant } from '../slang-utils/extract-variant.js';
43
import { SlangNode } from './SlangNode.js';
54
import { TypeName } from './TypeName.js';
@@ -38,10 +37,11 @@ export class EventParameter extends SlangNode {
3837
}
3938

4039
print(print: PrintFunction): Doc {
41-
return joinExisting(' ', [
40+
const nameDoc = print('name');
41+
return [
4242
print('typeName'),
43-
this.indexedKeyword,
44-
print('name')
45-
]);
43+
this.indexedKeyword ? ` ${this.indexedKeyword}` : '',
44+
nameDoc ? [' ', nameDoc] : ''
45+
];
4646
}
4747
}

src/slang-nodes/FallbackFunctionDefinition.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
2-
import { printFunctionWithBody } from '../slang-printers/print-function.js';
2+
import { printFunction } from '../slang-printers/print-function.js';
33
import { extractVariant } from '../slang-utils/extract-variant.js';
44
import { SlangNode } from './SlangNode.js';
55
import { ParametersDeclaration } from './ParametersDeclaration.js';
@@ -60,6 +60,6 @@ export class FallbackFunctionDefinition extends SlangNode {
6060
}
6161

6262
print(print: PrintFunction): Doc {
63-
return printFunctionWithBody('fallback', this, print);
63+
return printFunction('fallback', this, print);
6464
}
6565
}

src/slang-nodes/FunctionDefinition.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
22
import { satisfies } from 'semver';
3-
import { printFunctionWithBody } from '../slang-printers/print-function.js';
3+
import { printFunction } from '../slang-printers/print-function.js';
44
import { extractVariant } from '../slang-utils/extract-variant.js';
55
import { SlangNode } from './SlangNode.js';
66
import { FunctionName } from './FunctionName.js';
@@ -76,6 +76,6 @@ export class FunctionDefinition extends SlangNode {
7676
}
7777

7878
print(print: PrintFunction): Doc {
79-
return printFunctionWithBody(['function ', print('name')], this, print);
79+
return printFunction(['function ', print('name')], this, print);
8080
}
8181
}

src/slang-nodes/HexNumberExpression.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
2-
import { joinExisting } from '../slang-utils/join-existing.js';
32
import { SlangNode } from './SlangNode.js';
43
import { NumberUnit } from './NumberUnit.js';
54

@@ -26,6 +25,7 @@ export class HexNumberExpression extends SlangNode {
2625
}
2726

2827
print(print: PrintFunction): Doc {
29-
return joinExisting(' ', [this.literal, print('unit')]);
28+
const unitDoc = print('unit');
29+
return [this.literal, unitDoc ? [' ', unitDoc] : ''];
3030
}
3131
}

src/slang-nodes/InterfaceDefinition.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ export class InterfaceDefinition extends SlangNode {
4343

4444
print(print: PrintFunction): Doc {
4545
return [
46+
'interface ',
4647
group([
47-
'interface ',
4848
print('name'),
4949
this.inheritance ? [' ', print('inheritance')] : line,
5050
'{'

0 commit comments

Comments
 (0)