Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions src/slang-nodes/AssemblyStatement.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { joinExisting } from '../slang-utils/join-existing.js';
import { SlangNode } from './SlangNode.js';
import { StringLiteral } from './StringLiteral.js';
import { AssemblyFlagsDeclaration } from './AssemblyFlagsDeclaration.js';
Expand Down Expand Up @@ -38,11 +37,13 @@ export class AssemblyStatement extends SlangNode {
}

print(print: PrintFunction): Doc {
return joinExisting(' ', [
'assembly',
print('label'),
print('flags'),
const labelDoc = print('label');
const flagsDoc = print('flags');
return [
'assembly ',
labelDoc ? [labelDoc, ' '] : labelDoc,
flagsDoc ? [flagsDoc, ' '] : flagsDoc,
print('body')
]);
];
}
}
4 changes: 2 additions & 2 deletions src/slang-nodes/ConstructorDefinition.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { printFunctionWithBody } from '../slang-printers/print-function.js';
import { printFunction } from '../slang-printers/print-function.js';
import { SlangNode } from './SlangNode.js';
import { ParametersDeclaration } from './ParametersDeclaration.js';
import { ConstructorAttributes } from './ConstructorAttributes.js';
Expand Down Expand Up @@ -42,6 +42,6 @@ export class ConstructorDefinition extends SlangNode {
}

print(print: PrintFunction): Doc {
return printFunctionWithBody('constructor', this, print);
return printFunction('constructor', this, print);
}
}
3 changes: 1 addition & 2 deletions src/slang-nodes/ContractDefinition.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,8 @@ export class ContractDefinition extends SlangNode {

print(print: PrintFunction): Doc {
return [
`${this.abstractKeyword ? 'abstract ' : ''}contract `,
group([
this.abstractKeyword ? 'abstract ' : '',
'contract ',
print('name'),
print('specifiers'),
this.specifiers.items.length > 0 ? '' : line,
Expand Down
4 changes: 2 additions & 2 deletions src/slang-nodes/DecimalNumberExpression.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { joinExisting } from '../slang-utils/join-existing.js';
import { SlangNode } from './SlangNode.js';
import { NumberUnit } from './NumberUnit.js';

Expand All @@ -26,6 +25,7 @@ export class DecimalNumberExpression extends SlangNode {
}

print(print: PrintFunction): Doc {
return joinExisting(' ', [this.literal, print('unit')]);
const unitDoc = print('unit');
return [this.literal, unitDoc ? [' ', unitDoc] : unitDoc];
}
}
4 changes: 2 additions & 2 deletions src/slang-nodes/ErrorParameter.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { joinExisting } from '../slang-utils/join-existing.js';
import { extractVariant } from '../slang-utils/extract-variant.js';
import { SlangNode } from './SlangNode.js';
import { TypeName } from './TypeName.js';
Expand Down Expand Up @@ -35,6 +34,7 @@ export class ErrorParameter extends SlangNode {
}

print(print: PrintFunction): Doc {
return joinExisting(' ', [print('typeName'), print('name')]);
const nameDoc = print('name');
return [print('typeName'), nameDoc ? [' ', nameDoc] : nameDoc];
}
}
10 changes: 5 additions & 5 deletions src/slang-nodes/EventParameter.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { joinExisting } from '../slang-utils/join-existing.js';
import { extractVariant } from '../slang-utils/extract-variant.js';
import { SlangNode } from './SlangNode.js';
import { TypeName } from './TypeName.js';
Expand Down Expand Up @@ -38,10 +37,11 @@ export class EventParameter extends SlangNode {
}

print(print: PrintFunction): Doc {
return joinExisting(' ', [
const nameDoc = print('name');
return [
print('typeName'),
this.indexedKeyword,
print('name')
]);
this.indexedKeyword ? ' indexed' : '',
nameDoc ? [' ', nameDoc] : nameDoc
];
}
}
4 changes: 2 additions & 2 deletions src/slang-nodes/FallbackFunctionDefinition.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { printFunctionWithBody } from '../slang-printers/print-function.js';
import { printFunction } from '../slang-printers/print-function.js';
import { extractVariant } from '../slang-utils/extract-variant.js';
import { SlangNode } from './SlangNode.js';
import { ParametersDeclaration } from './ParametersDeclaration.js';
Expand Down Expand Up @@ -60,6 +60,6 @@ export class FallbackFunctionDefinition extends SlangNode {
}

print(print: PrintFunction): Doc {
return printFunctionWithBody('fallback', this, print);
return printFunction('fallback', this, print);
}
}
4 changes: 2 additions & 2 deletions src/slang-nodes/FunctionDefinition.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { satisfies } from 'semver';
import { printFunctionWithBody } from '../slang-printers/print-function.js';
import { printFunction } from '../slang-printers/print-function.js';
import { extractVariant } from '../slang-utils/extract-variant.js';
import { SlangNode } from './SlangNode.js';
import { FunctionName } from './FunctionName.js';
Expand Down Expand Up @@ -76,6 +76,6 @@ export class FunctionDefinition extends SlangNode {
}

print(print: PrintFunction): Doc {
return printFunctionWithBody(['function ', print('name')], this, print);
return printFunction(['function ', print('name')], this, print);
}
}
4 changes: 2 additions & 2 deletions src/slang-nodes/HexNumberExpression.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { joinExisting } from '../slang-utils/join-existing.js';
import { SlangNode } from './SlangNode.js';
import { NumberUnit } from './NumberUnit.js';

Expand All @@ -26,6 +25,7 @@ export class HexNumberExpression extends SlangNode {
}

print(print: PrintFunction): Doc {
return joinExisting(' ', [this.literal, print('unit')]);
const unitDoc = print('unit');
return [this.literal, unitDoc ? [' ', unitDoc] : unitDoc];
}
}
2 changes: 1 addition & 1 deletion src/slang-nodes/InterfaceDefinition.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ export class InterfaceDefinition extends SlangNode {

print(print: PrintFunction): Doc {
return [
'interface ',
group([
'interface ',
print('name'),
this.inheritance ? [' ', print('inheritance')] : line,
'{'
Expand Down
3 changes: 2 additions & 1 deletion src/slang-nodes/LibraryDefinition.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@ export class LibraryDefinition extends SlangNode {

print(print: PrintFunction): Doc {
return [
group(['library ', print('name'), line, '{']),
'library ',
group([print('name'), line, '{']),
print('members'),
'}'
];
Expand Down
4 changes: 2 additions & 2 deletions src/slang-nodes/MappingKey.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { joinExisting } from '../slang-utils/join-existing.js';
import { extractVariant } from '../slang-utils/extract-variant.js';
import { SlangNode } from './SlangNode.js';
import { MappingKeyType } from './MappingKeyType.js';
Expand Down Expand Up @@ -28,6 +27,7 @@ export class MappingKey extends SlangNode {
}

print(print: PrintFunction): Doc {
return joinExisting(' ', [print('keyType'), print('name')]);
const nameDoc = print('name');
return [print('keyType'), nameDoc ? [' ', nameDoc] : nameDoc];
}
}
4 changes: 2 additions & 2 deletions src/slang-nodes/MappingValue.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { joinExisting } from '../slang-utils/join-existing.js';
import { extractVariant } from '../slang-utils/extract-variant.js';
import { SlangNode } from './SlangNode.js';
import { TypeName } from './TypeName.js';
Expand Down Expand Up @@ -35,6 +34,7 @@ export class MappingValue extends SlangNode {
}

print(print: PrintFunction): Doc {
return joinExisting(' ', [print('typeName'), print('name')]);
const nameDoc = print('name');
return [print('typeName'), nameDoc ? [' ', nameDoc] : nameDoc];
}
}
4 changes: 2 additions & 2 deletions src/slang-nodes/ModifierDefinition.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { printFunctionWithBody } from '../slang-printers/print-function.js';
import { printFunction } from '../slang-printers/print-function.js';
import { extractVariant } from '../slang-utils/extract-variant.js';
import { SlangNode } from './SlangNode.js';
import { TerminalNode } from './TerminalNode.js';
Expand Down Expand Up @@ -78,6 +78,6 @@ export class ModifierDefinition extends SlangNode {
}

print(print: PrintFunction): Doc {
return printFunctionWithBody(['modifier ', print('name')], this, print);
return printFunction(['modifier ', print('name')], this, print);
}
}
15 changes: 7 additions & 8 deletions src/slang-nodes/Parameter.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { doc } from 'prettier';
import { joinExisting } from '../slang-utils/join-existing.js';
import { extractVariant } from '../slang-utils/extract-variant.js';
import { SlangNode } from './SlangNode.js';
import { TypeName } from './TypeName.js';
Expand Down Expand Up @@ -47,12 +46,12 @@ export class Parameter extends SlangNode {
}

print(print: PrintFunction): Doc {
return group(
joinExisting(' ', [
print('typeName'),
print('storageLocation'),
print('name')
])
);
const storageLocationDoc = print('storageLocation');
const nameDoc = print('name');
return group([
print('typeName'),
storageLocationDoc ? [' ', storageLocationDoc] : storageLocationDoc,
nameDoc ? [' ', nameDoc] : nameDoc
]);
}
}
4 changes: 2 additions & 2 deletions src/slang-nodes/ReceiveFunctionDefinition.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { printFunctionWithBody } from '../slang-printers/print-function.js';
import { printFunction } from '../slang-printers/print-function.js';
import { extractVariant } from '../slang-utils/extract-variant.js';
import { SlangNode } from './SlangNode.js';
import { ParametersDeclaration } from './ParametersDeclaration.js';
Expand Down Expand Up @@ -49,6 +49,6 @@ export class ReceiveFunctionDefinition extends SlangNode {
}

print(print: PrintFunction): Doc {
return printFunctionWithBody('receive', this, print);
return printFunction('receive', this, print);
}
}
9 changes: 5 additions & 4 deletions src/slang-nodes/TryStatement.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { doc } from 'prettier';
import { printSeparatedItem } from '../slang-printers/print-separated-item.js';
import { joinExisting } from '../slang-utils/join-existing.js';
import { extractVariant } from '../slang-utils/extract-variant.js';
import { SlangNode } from './SlangNode.js';
import { Expression } from './Expression.js';
Expand Down Expand Up @@ -52,16 +51,18 @@ export class TryStatement extends SlangNode {
}

print(print: PrintFunction): Doc {
const returnsDoc = print('returns');
return [
'try',
printSeparatedItem(print('expression'), {
firstSeparator: line
}),
joinExisting(' ', [
print('returns'),
[
returnsDoc ? [returnsDoc, ' '] : returnsDoc,
print('body'),
' ',
print('catchClauses')
])
]
];
}
}
9 changes: 5 additions & 4 deletions src/slang-nodes/TypedTupleMember.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { joinExisting } from '../slang-utils/join-existing.js';
import { extractVariant } from '../slang-utils/extract-variant.js';
import { SlangNode } from './SlangNode.js';
import { TypeName } from './TypeName.js';
Expand Down Expand Up @@ -42,10 +41,12 @@ export class TypedTupleMember extends SlangNode {
}

print(print: PrintFunction): Doc {
return joinExisting(' ', [
const storageLocationDoc = print('storageLocation');
return [
print('typeName'),
print('storageLocation'),
storageLocationDoc ? [' ', storageLocationDoc] : storageLocationDoc,
' ',
print('name')
]);
];
}
}
4 changes: 2 additions & 2 deletions src/slang-nodes/UnnamedFunctionDefinition.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { printFunctionWithBody } from '../slang-printers/print-function.js';
import { printFunction } from '../slang-printers/print-function.js';
import { extractVariant } from '../slang-utils/extract-variant.js';
import { SlangNode } from './SlangNode.js';
import { ParametersDeclaration } from './ParametersDeclaration.js';
Expand Down Expand Up @@ -49,6 +49,6 @@ export class UnnamedFunctionDefinition extends SlangNode {
}

print(print: PrintFunction): Doc {
return printFunctionWithBody('function', this, print);
return printFunction('function', this, print);
}
}
7 changes: 5 additions & 2 deletions src/slang-nodes/UntypedTupleMember.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { joinExisting } from '../slang-utils/join-existing.js';
import { SlangNode } from './SlangNode.js';
import { StorageLocation } from './StorageLocation.js';
import { TerminalNode } from './TerminalNode.js';
Expand Down Expand Up @@ -30,6 +29,10 @@ export class UntypedTupleMember extends SlangNode {
}

print(print: PrintFunction): Doc {
return joinExisting(' ', [print('storageLocation'), print('name')]);
const storageLocationDoc = print('storageLocation');
return [
storageLocationDoc ? [storageLocationDoc, ' '] : storageLocationDoc,
print('name')
];
}
}
4 changes: 2 additions & 2 deletions src/slang-nodes/YulVariableDeclarationStatement.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { joinExisting } from '../slang-utils/join-existing.js';
import { SlangNode } from './SlangNode.js';
import { YulVariableDeclarationValue } from './YulVariableDeclarationValue.js';
import { YulVariableNames } from './YulVariableNames.js';
Expand Down Expand Up @@ -36,6 +35,7 @@ export class YulVariableDeclarationStatement extends SlangNode {
}

print(print: PrintFunction): Doc {
return joinExisting(' ', [['let', print('variables')], print('value')]);
const valueDoc = print('value');
return ['let', print('variables'), valueDoc ? [' ', valueDoc] : valueDoc];
}
}
Loading