Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst';
import addCollectionFirstComment from './add-collection-first-comment.js';
import addCollectionLastComment from './add-collection-last-comment.js';

import type { HandlerParams } from './types.js';
import type { HandlerParams } from './types.d.ts';

export default function handleSourceUnitMembersComments({
precedingNode,
Expand Down
11 changes: 3 additions & 8 deletions src/slang-nodes/ArgumentsDeclaration.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
import * as ast from '@nomicfoundation/slang/ast';
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { SlangNode } from './SlangNode.js';
import { PolymorphicNode } from './PolymorphicNode.js';
import { PositionalArgumentsDeclaration } from './PositionalArgumentsDeclaration.js';
import { NamedArgumentsDeclaration } from './NamedArgumentsDeclaration.js';

import type { AstPath, Doc, ParserOptions } from 'prettier';
import type { ParserOptions } from 'prettier';
import type { AstNode } from './types.d.ts';
import type { PrintFunction } from '../types.d.ts';

function createNonterminalVariant(
variant: ast.ArgumentsDeclaration['variant'],
Expand All @@ -22,7 +21,7 @@ function createNonterminalVariant(
return exhaustiveCheck;
}

export class ArgumentsDeclaration extends SlangNode {
export class ArgumentsDeclaration extends PolymorphicNode {
readonly kind = NonterminalKind.ArgumentsDeclaration;

variant: PositionalArgumentsDeclaration | NamedArgumentsDeclaration;
Expand All @@ -34,8 +33,4 @@ export class ArgumentsDeclaration extends SlangNode {

this.updateMetadata(this.variant);
}

print(path: AstPath<ArgumentsDeclaration>, print: PrintFunction): Doc {
return path.call(print, 'variant');
}
}
11 changes: 3 additions & 8 deletions src/slang-nodes/ConstructorAttribute.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,15 @@ import {
NonterminalKind,
TerminalNode as SlangTerminalNode
} from '@nomicfoundation/slang/cst';
import { SlangNode } from './SlangNode.js';
import { PolymorphicNode } from './PolymorphicNode.js';
import { ModifierInvocation } from './ModifierInvocation.js';
import { TerminalNode } from './TerminalNode.js';

import type * as ast from '@nomicfoundation/slang/ast';
import type { AstPath, Doc, ParserOptions } from 'prettier';
import type { ParserOptions } from 'prettier';
import type { AstNode } from './types.d.ts';
import type { PrintFunction } from '../types.d.ts';

export class ConstructorAttribute extends SlangNode {
export class ConstructorAttribute extends PolymorphicNode {
readonly kind = NonterminalKind.ConstructorAttribute;

variant: ModifierInvocation | TerminalNode;
Expand All @@ -28,8 +27,4 @@ export class ConstructorAttribute extends SlangNode {

this.updateMetadata(this.variant);
}

print(path: AstPath<ConstructorAttribute>, print: PrintFunction): Doc {
return path.call(print, 'variant');
}
}
8 changes: 4 additions & 4 deletions src/slang-nodes/ContractDefinition.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,12 @@ export class ContractDefinition extends SlangNode {
// Older versions of Solidity defined a constructor as a function having
// the same name as the contract.
if (!satisfies(options.compiler, '>=0.5.0')) {
for (const { variant: member } of this.members.items) {
for (const { variant } of this.members.items) {
if (
member.kind === NonterminalKind.FunctionDefinition &&
member.name.variant.value !== this.name.value
variant.kind === NonterminalKind.FunctionDefinition &&
variant.name.variant.value !== this.name.value
) {
member.cleanModifierInvocationArguments();
variant.cleanModifierInvocationArguments();
}
}
}
Expand Down
11 changes: 3 additions & 8 deletions src/slang-nodes/ContractMember.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as ast from '@nomicfoundation/slang/ast';
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { SlangNode } from './SlangNode.js';
import { PolymorphicNode } from './PolymorphicNode.js';
import { UsingDirective } from './UsingDirective.js';
import { FunctionDefinition } from './FunctionDefinition.js';
import { ConstructorDefinition } from './ConstructorDefinition.js';
Expand All @@ -15,9 +15,8 @@ import { StateVariableDefinition } from './StateVariableDefinition.js';
import { ErrorDefinition } from './ErrorDefinition.js';
import { UserDefinedValueTypeDefinition } from './UserDefinedValueTypeDefinition.js';

import type { AstPath, Doc, ParserOptions } from 'prettier';
import type { ParserOptions } from 'prettier';
import type { AstNode } from './types.d.ts';
import type { PrintFunction } from '../types.d.ts';

function createNonterminalVariant(
variant: ast.ContractMember['variant'],
Expand Down Expand Up @@ -66,7 +65,7 @@ function createNonterminalVariant(
return exhaustiveCheck;
}

export class ContractMember extends SlangNode {
export class ContractMember extends PolymorphicNode {
readonly kind = NonterminalKind.ContractMember;

variant:
Expand All @@ -91,8 +90,4 @@ export class ContractMember extends SlangNode {

this.updateMetadata(this.variant);
}

print(path: AstPath<ContractMember>, print: PrintFunction): Doc {
return path.call(print, 'variant');
}
}
11 changes: 3 additions & 8 deletions src/slang-nodes/ContractSpecifier.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
import * as ast from '@nomicfoundation/slang/ast';
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { SlangNode } from './SlangNode.js';
import { PolymorphicNode } from './PolymorphicNode.js';
import { InheritanceSpecifier } from './InheritanceSpecifier.js';
import { StorageLayoutSpecifier } from './StorageLayoutSpecifier.js';

import type { AstPath, Doc, ParserOptions } from 'prettier';
import type { ParserOptions } from 'prettier';
import type { AstNode } from './types.d.ts';
import type { PrintFunction } from '../types.d.ts';

function createNonterminalVariant(
variant: ast.ContractSpecifier['variant'],
Expand All @@ -22,7 +21,7 @@ function createNonterminalVariant(
return exhaustiveCheck;
}

export class ContractSpecifier extends SlangNode {
export class ContractSpecifier extends PolymorphicNode {
readonly kind = NonterminalKind.ContractSpecifier;

variant: InheritanceSpecifier | StorageLayoutSpecifier;
Expand All @@ -34,8 +33,4 @@ export class ContractSpecifier extends SlangNode {

this.updateMetadata(this.variant);
}

print(path: AstPath<ContractSpecifier>, print: PrintFunction): Doc {
return path.call(print, 'variant');
}
}
10 changes: 2 additions & 8 deletions src/slang-nodes/ElementaryType.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,13 @@ import {
NonterminalKind,
TerminalNode as SlangTerminalNode
} from '@nomicfoundation/slang/cst';
import { SlangNode } from './SlangNode.js';
import { PolymorphicNode } from './PolymorphicNode.js';
import { AddressType } from './AddressType.js';
import { TerminalNode } from './TerminalNode.js';

import type * as ast from '@nomicfoundation/slang/ast';
import type { AstPath, Doc } from 'prettier';
import type { PrintFunction } from '../types.d.ts';

export class ElementaryType extends SlangNode {
export class ElementaryType extends PolymorphicNode {
readonly kind = NonterminalKind.ElementaryType;

variant: AddressType | TerminalNode;
Expand All @@ -27,8 +25,4 @@ export class ElementaryType extends SlangNode {

this.updateMetadata(this.variant);
}

print(path: AstPath<ElementaryType>, print: PrintFunction): Doc {
return path.call(print, 'variant');
}
}
11 changes: 3 additions & 8 deletions src/slang-nodes/ExperimentalFeature.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,15 @@ import {
NonterminalKind,
TerminalNode as SlangTerminalNode
} from '@nomicfoundation/slang/cst';
import { SlangNode } from './SlangNode.js';
import { PolymorphicNode } from './PolymorphicNode.js';
import { StringLiteral } from './StringLiteral.js';
import { TerminalNode } from './TerminalNode.js';

import type * as ast from '@nomicfoundation/slang/ast';
import type { AstPath, Doc, ParserOptions } from 'prettier';
import type { ParserOptions } from 'prettier';
import type { AstNode } from './types.d.ts';
import type { PrintFunction } from '../types.d.ts';

export class ExperimentalFeature extends SlangNode {
export class ExperimentalFeature extends PolymorphicNode {
readonly kind = NonterminalKind.ExperimentalFeature;

variant: StringLiteral | TerminalNode;
Expand All @@ -28,8 +27,4 @@ export class ExperimentalFeature extends SlangNode {

this.updateMetadata(this.variant);
}

print(path: AstPath<ExperimentalFeature>, print: PrintFunction): Doc {
return path.call(print, 'variant');
}
}
11 changes: 3 additions & 8 deletions src/slang-nodes/Expression.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {
NonterminalKind,
TerminalNode as SlangTerminalNode
} from '@nomicfoundation/slang/cst';
import { SlangNode } from './SlangNode.js';
import { PolymorphicNode } from './PolymorphicNode.js';
import { AssignmentExpression } from './AssignmentExpression.js';
import { ConditionalExpression } from './ConditionalExpression.js';
import { OrExpression } from './OrExpression.js';
Expand Down Expand Up @@ -33,9 +33,8 @@ import { StringExpression } from './StringExpression.js';
import { ElementaryType } from './ElementaryType.js';
import { TerminalNode } from './TerminalNode.js';

import type { AstPath, Doc, ParserOptions } from 'prettier';
import type { ParserOptions } from 'prettier';
import type { AstNode } from './types.d.ts';
import type { PrintFunction } from '../types.d.ts';

function createNonterminalVariant(
variant: Exclude<ast.Expression['variant'], SlangTerminalNode>,
Expand Down Expand Up @@ -126,7 +125,7 @@ function createNonterminalVariant(
return exhaustiveCheck;
}

export class Expression extends SlangNode {
export class Expression extends PolymorphicNode {
readonly kind = NonterminalKind.Expression;

variant:
Expand Down Expand Up @@ -171,8 +170,4 @@ export class Expression extends SlangNode {

this.updateMetadata(this.variant);
}

print(path: AstPath<Expression>, print: PrintFunction): Doc {
return path.call(print, 'variant');
}
}
11 changes: 3 additions & 8 deletions src/slang-nodes/FallbackFunctionAttribute.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,13 @@ import {
NonterminalKind,
TerminalNode as SlangTerminalNode
} from '@nomicfoundation/slang/cst';
import { SlangNode } from './SlangNode.js';
import { PolymorphicNode } from './PolymorphicNode.js';
import { ModifierInvocation } from './ModifierInvocation.js';
import { OverrideSpecifier } from './OverrideSpecifier.js';
import { TerminalNode } from './TerminalNode.js';

import type { AstPath, Doc, ParserOptions } from 'prettier';
import type { ParserOptions } from 'prettier';
import type { AstNode } from './types.d.ts';
import type { PrintFunction } from '../types.d.ts';

function createNonterminalVariant(
variant: Exclude<ast.FallbackFunctionAttribute['variant'], SlangTerminalNode>,
Expand All @@ -26,7 +25,7 @@ function createNonterminalVariant(
return exhaustiveCheck;
}

export class FallbackFunctionAttribute extends SlangNode {
export class FallbackFunctionAttribute extends PolymorphicNode {
readonly kind = NonterminalKind.FallbackFunctionAttribute;

variant: ModifierInvocation | OverrideSpecifier | TerminalNode;
Expand All @@ -46,8 +45,4 @@ export class FallbackFunctionAttribute extends SlangNode {

this.updateMetadata(this.variant);
}

print(path: AstPath<FallbackFunctionAttribute>, print: PrintFunction): Doc {
return path.call(print, 'variant');
}
}
13 changes: 4 additions & 9 deletions src/slang-nodes/ForStatementCondition.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,15 @@ import {
NonterminalKind,
TerminalNode as SlangTerminalNode
} from '@nomicfoundation/slang/cst';
import { SlangNode } from './SlangNode.js';
import { PolymorphicNode } from './PolymorphicNode.js';
import { ExpressionStatement } from './ExpressionStatement.js';
import { TerminalNode } from './TerminalNode.js';

import type * as ast from '@nomicfoundation/slang/ast';
import type { AstPath, Doc, ParserOptions } from 'prettier';
import type { ParserOptions } from 'prettier';
import type { AstNode } from './types.d.ts';
import type { PrintFunction } from '../types.d.ts';
import { TerminalNode } from './TerminalNode.js';

export class ForStatementCondition extends SlangNode {
export class ForStatementCondition extends PolymorphicNode {
readonly kind = NonterminalKind.ForStatementCondition;

variant: ExpressionStatement | TerminalNode;
Expand All @@ -28,8 +27,4 @@ export class ForStatementCondition extends SlangNode {

this.updateMetadata(this.variant);
}

print(path: AstPath<ForStatementCondition>, print: PrintFunction): Doc {
return path.call(print, 'variant');
}
}
11 changes: 3 additions & 8 deletions src/slang-nodes/ForStatementInitialization.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,14 @@ import {
NonterminalKind,
TerminalNode as SlangTerminalNode
} from '@nomicfoundation/slang/cst';
import { SlangNode } from './SlangNode.js';
import { PolymorphicNode } from './PolymorphicNode.js';
import { ExpressionStatement } from './ExpressionStatement.js';
import { VariableDeclarationStatement } from './VariableDeclarationStatement.js';
import { TupleDeconstructionStatement } from './TupleDeconstructionStatement.js';
import { TerminalNode } from './TerminalNode.js';

import type { AstPath, Doc, ParserOptions } from 'prettier';
import type { ParserOptions } from 'prettier';
import type { AstNode } from './types.d.ts';
import type { PrintFunction } from '../types.d.ts';

function createNonterminalVariant(
variant: Exclude<
Expand All @@ -33,7 +32,7 @@ function createNonterminalVariant(
return exhaustiveCheck;
}

export class ForStatementInitialization extends SlangNode {
export class ForStatementInitialization extends PolymorphicNode {
readonly kind = NonterminalKind.ForStatementInitialization;

variant:
Expand All @@ -57,8 +56,4 @@ export class ForStatementInitialization extends SlangNode {

this.updateMetadata(this.variant);
}

print(path: AstPath<ForStatementInitialization>, print: PrintFunction): Doc {
return path.call(print, 'variant');
}
}
11 changes: 3 additions & 8 deletions src/slang-nodes/FunctionAttribute.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,13 @@ import {
NonterminalKind,
TerminalNode as SlangTerminalNode
} from '@nomicfoundation/slang/cst';
import { SlangNode } from './SlangNode.js';
import { PolymorphicNode } from './PolymorphicNode.js';
import { ModifierInvocation } from './ModifierInvocation.js';
import { OverrideSpecifier } from './OverrideSpecifier.js';
import { TerminalNode } from './TerminalNode.js';

import type { AstPath, Doc, ParserOptions } from 'prettier';
import type { ParserOptions } from 'prettier';
import type { AstNode } from './types.d.ts';
import type { PrintFunction } from '../types.d.ts';

function createNonterminalVariant(
variant: Exclude<ast.FunctionAttribute['variant'], SlangTerminalNode>,
Expand All @@ -26,7 +25,7 @@ function createNonterminalVariant(
return exhaustiveCheck;
}

export class FunctionAttribute extends SlangNode {
export class FunctionAttribute extends PolymorphicNode {
readonly kind = NonterminalKind.FunctionAttribute;

variant: ModifierInvocation | OverrideSpecifier | TerminalNode;
Expand All @@ -43,8 +42,4 @@ export class FunctionAttribute extends SlangNode {

this.updateMetadata(this.variant);
}

print(path: AstPath<FunctionAttribute>, print: PrintFunction): Doc {
return path.call(print, 'variant');
}
}
Loading
Loading