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
4 changes: 2 additions & 2 deletions src/slang-nodes/ConstructorAttribute.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@ import {
NonterminalKind,
TerminalNode as SlangTerminalNode
} from '@nomicfoundation/slang/cst';
import { PolymorphicNode } from './PolymorphicNode.js';
import { SlangNode } from './SlangNode.js';
import { ModifierInvocation } from './ModifierInvocation.js';
import { TerminalNode } from './TerminalNode.js';

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

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

variant: ModifierInvocation | TerminalNode;
Expand Down
10 changes: 5 additions & 5 deletions src/slang-nodes/ConstructorAttributes.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { doc } from 'prettier';
import { sortFunctionAttributes } from '../slang-utils/sort-function-attributes.js';
import { printVariant } from '../slang-printers/print-variant.js';
import { extractVariant } from '../slang-utils/extract-variant.js';
import { SlangNode } from './SlangNode.js';
import { ConstructorAttribute } from './ConstructorAttribute.js';

Expand All @@ -15,19 +15,19 @@ const { line } = doc.builders;
export class ConstructorAttributes extends SlangNode {
readonly kind = NonterminalKind.ConstructorAttributes;

items: ConstructorAttribute[];
items: ConstructorAttribute['variant'][];

constructor(ast: ast.ConstructorAttributes, options: ParserOptions<AstNode>) {
super(ast, true);

this.items = ast.items.map(
(item) => new ConstructorAttribute(item, options)
this.items = ast.items.map((item) =>
extractVariant(new ConstructorAttribute(item, options))
);

this.items.sort(sortFunctionAttributes);
}

print(path: AstPath<ConstructorAttributes>, print: PrintFunction): Doc {
return path.map(printVariant(print), 'items').map((item) => [line, item]);
return path.map((item) => [line, print(item)], 'items');
}
}
4 changes: 2 additions & 2 deletions src/slang-nodes/FallbackFunctionAttribute.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 { PolymorphicNode } from './PolymorphicNode.js';
import { SlangNode } from './SlangNode.js';
import { ModifierInvocation } from './ModifierInvocation.js';
import { OverrideSpecifier } from './OverrideSpecifier.js';
import { TerminalNode } from './TerminalNode.js';
Expand All @@ -25,7 +25,7 @@ function createNonterminalVariant(
return exhaustiveCheck;
}

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

variant: ModifierInvocation | OverrideSpecifier | TerminalNode;
Expand Down
10 changes: 5 additions & 5 deletions src/slang-nodes/FallbackFunctionAttributes.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { doc } from 'prettier';
import { sortFunctionAttributes } from '../slang-utils/sort-function-attributes.js';
import { printVariant } from '../slang-printers/print-variant.js';
import { extractVariant } from '../slang-utils/extract-variant.js';
import { SlangNode } from './SlangNode.js';
import { FallbackFunctionAttribute } from './FallbackFunctionAttribute.js';

Expand All @@ -15,22 +15,22 @@ const { line } = doc.builders;
export class FallbackFunctionAttributes extends SlangNode {
readonly kind = NonterminalKind.FallbackFunctionAttributes;

items: FallbackFunctionAttribute[];
items: FallbackFunctionAttribute['variant'][];

constructor(
ast: ast.FallbackFunctionAttributes,
options: ParserOptions<AstNode>
) {
super(ast, true);

this.items = ast.items.map(
(item) => new FallbackFunctionAttribute(item, options)
this.items = ast.items.map((item) =>
extractVariant(new FallbackFunctionAttribute(item, options))
);

this.items.sort(sortFunctionAttributes);
}

print(path: AstPath<FallbackFunctionAttributes>, print: PrintFunction): Doc {
return path.map(printVariant(print), 'items').map((item) => [line, item]);
return path.map((item) => [line, print(item)], 'items');
}
}
2 changes: 1 addition & 1 deletion src/slang-nodes/FallbackFunctionDefinition.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ export class FallbackFunctionDefinition extends SlangNode {
}

cleanModifierInvocationArguments(): void {
for (const { variant: attribute } of this.attributes.items) {
for (const attribute of this.attributes.items) {
if (
typeof attribute !== 'string' &&
attribute.kind === NonterminalKind.ModifierInvocation
Expand Down
4 changes: 2 additions & 2 deletions src/slang-nodes/FunctionAttribute.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 { PolymorphicNode } from './PolymorphicNode.js';
import { SlangNode } from './SlangNode.js';
import { ModifierInvocation } from './ModifierInvocation.js';
import { OverrideSpecifier } from './OverrideSpecifier.js';
import { TerminalNode } from './TerminalNode.js';
Expand All @@ -25,7 +25,7 @@ function createNonterminalVariant(
return exhaustiveCheck;
}

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

variant: ModifierInvocation | OverrideSpecifier | TerminalNode;
Expand Down
10 changes: 6 additions & 4 deletions src/slang-nodes/FunctionAttributes.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { doc } from 'prettier';
import { sortFunctionAttributes } from '../slang-utils/sort-function-attributes.js';
import { printVariant } from '../slang-printers/print-variant.js';
import { extractVariant } from '../slang-utils/extract-variant.js';
import { SlangNode } from './SlangNode.js';
import { FunctionAttribute } from './FunctionAttribute.js';

Expand All @@ -15,17 +15,19 @@ const { line } = doc.builders;
export class FunctionAttributes extends SlangNode {
readonly kind = NonterminalKind.FunctionAttributes;

items: FunctionAttribute[];
items: FunctionAttribute['variant'][];

constructor(ast: ast.FunctionAttributes, options: ParserOptions<AstNode>) {
super(ast, true);

this.items = ast.items.map((item) => new FunctionAttribute(item, options));
this.items = ast.items.map((item) =>
extractVariant(new FunctionAttribute(item, options))
);

this.items.sort(sortFunctionAttributes);
}

print(path: AstPath<FunctionAttributes>, print: PrintFunction): Doc {
return path.map(printVariant(print), 'items').map((item) => [line, item]);
return path.map((item) => [line, print(item)], 'items');
}
}
2 changes: 1 addition & 1 deletion src/slang-nodes/FunctionDefinition.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ export class FunctionDefinition extends SlangNode {
}

cleanModifierInvocationArguments(): void {
for (const { variant: attribute } of this.attributes.items) {
for (const attribute of this.attributes.items) {
if (
typeof attribute !== 'string' &&
attribute.kind === NonterminalKind.ModifierInvocation
Expand Down
4 changes: 2 additions & 2 deletions src/slang-nodes/FunctionTypeAttribute.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { PolymorphicNode } from './PolymorphicNode.js';
import { SlangNode } from './SlangNode.js';
import { TerminalNode } from './TerminalNode.js';

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

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

variant: TerminalNode;
Expand Down
10 changes: 6 additions & 4 deletions src/slang-nodes/FunctionTypeAttributes.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { doc } from 'prettier';
import { sortFunctionAttributes } from '../slang-utils/sort-function-attributes.js';
import { printVariant } from '../slang-printers/print-variant.js';
import { extractVariant } from '../slang-utils/extract-variant.js';
import { SlangNode } from './SlangNode.js';
import { FunctionTypeAttribute } from './FunctionTypeAttribute.js';

Expand All @@ -14,17 +14,19 @@ const { line } = doc.builders;
export class FunctionTypeAttributes extends SlangNode {
readonly kind = NonterminalKind.FunctionTypeAttributes;

items: FunctionTypeAttribute[];
items: FunctionTypeAttribute['variant'][];

constructor(ast: ast.FunctionTypeAttributes) {
super(ast, true);

this.items = ast.items.map((item) => new FunctionTypeAttribute(item));
this.items = ast.items.map((item) =>
extractVariant(new FunctionTypeAttribute(item))
);

this.items.sort(sortFunctionAttributes);
}

print(path: AstPath<FunctionTypeAttributes>, print: PrintFunction): Doc {
return path.map(printVariant(print), 'items').map((item) => [line, item]);
return path.map((item) => [line, print(item)], 'items');
}
}
4 changes: 2 additions & 2 deletions src/slang-nodes/ModifierAttribute.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@ import {
NonterminalKind,
TerminalNode as SlangTerminalNode
} from '@nomicfoundation/slang/cst';
import { PolymorphicNode } from './PolymorphicNode.js';
import { SlangNode } from './SlangNode.js';
import { OverrideSpecifier } from './OverrideSpecifier.js';
import { TerminalNode } from './TerminalNode.js';

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

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

variant: OverrideSpecifier | TerminalNode;
Expand Down
10 changes: 6 additions & 4 deletions src/slang-nodes/ModifierAttributes.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { doc } from 'prettier';
import { sortFunctionAttributes } from '../slang-utils/sort-function-attributes.js';
import { printVariant } from '../slang-printers/print-variant.js';
import { extractVariant } from '../slang-utils/extract-variant.js';
import { SlangNode } from './SlangNode.js';
import { ModifierAttribute } from './ModifierAttribute.js';

Expand All @@ -14,17 +14,19 @@ const { line } = doc.builders;
export class ModifierAttributes extends SlangNode {
readonly kind = NonterminalKind.ModifierAttributes;

items: ModifierAttribute[];
items: ModifierAttribute['variant'][];

constructor(ast: ast.ModifierAttributes) {
super(ast, true);

this.items = ast.items.map((item) => new ModifierAttribute(item));
this.items = ast.items.map((item) =>
extractVariant(new ModifierAttribute(item))
);

this.items.sort(sortFunctionAttributes);
}

print(path: AstPath<ModifierAttributes>, print: PrintFunction): Doc {
return path.map(printVariant(print), 'items').map((item) => [line, item]);
return path.map((item) => [line, print(item)], 'items');
}
}
4 changes: 2 additions & 2 deletions src/slang-nodes/ReceiveFunctionAttribute.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 { PolymorphicNode } from './PolymorphicNode.js';
import { SlangNode } from './SlangNode.js';
import { ModifierInvocation } from './ModifierInvocation.js';
import { OverrideSpecifier } from './OverrideSpecifier.js';
import { TerminalNode } from './TerminalNode.js';
Expand All @@ -25,7 +25,7 @@ function createNonterminalVariant(
return exhaustiveCheck;
}

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

variant: ModifierInvocation | OverrideSpecifier | TerminalNode;
Expand Down
10 changes: 5 additions & 5 deletions src/slang-nodes/ReceiveFunctionAttributes.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { doc } from 'prettier';
import { sortFunctionAttributes } from '../slang-utils/sort-function-attributes.js';
import { printVariant } from '../slang-printers/print-variant.js';
import { extractVariant } from '../slang-utils/extract-variant.js';
import { SlangNode } from './SlangNode.js';
import { ReceiveFunctionAttribute } from './ReceiveFunctionAttribute.js';

Expand All @@ -15,22 +15,22 @@ const { line } = doc.builders;
export class ReceiveFunctionAttributes extends SlangNode {
readonly kind = NonterminalKind.ReceiveFunctionAttributes;

items: ReceiveFunctionAttribute[];
items: ReceiveFunctionAttribute['variant'][];

constructor(
ast: ast.ReceiveFunctionAttributes,
options: ParserOptions<AstNode>
) {
super(ast, true);

this.items = ast.items.map(
(item) => new ReceiveFunctionAttribute(item, options)
this.items = ast.items.map((item) =>
extractVariant(new ReceiveFunctionAttribute(item, options))
);

this.items.sort(sortFunctionAttributes);
}

print(path: AstPath<ReceiveFunctionAttributes>, print: PrintFunction): Doc {
return path.map(printVariant(print), 'items').map((item) => [line, item]);
return path.map((item) => [line, print(item)], 'items');
}
}
2 changes: 1 addition & 1 deletion src/slang-nodes/ReceiveFunctionDefinition.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ export class ReceiveFunctionDefinition extends SlangNode {
}

cleanModifierInvocationArguments(): void {
for (const { variant: attribute } of this.attributes.items) {
for (const attribute of this.attributes.items) {
if (
typeof attribute !== 'string' &&
attribute.kind === NonterminalKind.ModifierInvocation
Expand Down
4 changes: 2 additions & 2 deletions src/slang-nodes/StateVariableAttribute.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@ import {
NonterminalKind,
TerminalNode as SlangTerminalNode
} from '@nomicfoundation/slang/cst';
import { PolymorphicNode } from './PolymorphicNode.js';
import { SlangNode } from './SlangNode.js';
import { OverrideSpecifier } from './OverrideSpecifier.js';
import { TerminalNode } from './TerminalNode.js';

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

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

variant: OverrideSpecifier | TerminalNode;
Expand Down
12 changes: 6 additions & 6 deletions src/slang-nodes/StateVariableAttributes.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { NonterminalKind } from '@nomicfoundation/slang/cst';
import { doc } from 'prettier';
import { sortFunctionAttributes } from '../slang-utils/sort-function-attributes.js';
import { printVariant } from '../slang-printers/print-variant.js';
import { extractVariant } from '../slang-utils/extract-variant.js';
import { SlangNode } from './SlangNode.js';
import { StateVariableAttribute } from './StateVariableAttribute.js';

Expand All @@ -14,19 +14,19 @@ const { line } = doc.builders;
export class StateVariableAttributes extends SlangNode {
readonly kind = NonterminalKind.StateVariableAttributes;

items: StateVariableAttribute[];
items: StateVariableAttribute['variant'][];

constructor(ast: ast.StateVariableAttributes) {
super(ast, true);

this.items = ast.items.map((item) => new StateVariableAttribute(item));
this.items = ast.items.map((item) =>
extractVariant(new StateVariableAttribute(item))
);

this.items.sort(sortFunctionAttributes);
}

print(path: AstPath<StateVariableAttributes>, print: PrintFunction): Doc {
return this.items.length
? path.map(printVariant(print), 'items').map((item) => [line, item])
: '';
return path.map((item) => [line, print(item)], 'items');
}
}
4 changes: 2 additions & 2 deletions src/slang-nodes/UnnamedFunctionAttribute.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@ import {
NonterminalKind,
TerminalNode as SlangTerminalNode
} from '@nomicfoundation/slang/cst';
import { PolymorphicNode } from './PolymorphicNode.js';
import { SlangNode } from './SlangNode.js';
import { ModifierInvocation } from './ModifierInvocation.js';
import { TerminalNode } from './TerminalNode.js';

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

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

variant: ModifierInvocation | TerminalNode;
Expand Down
Loading