Skip to content

Commit 9b7d940

Browse files
committed
exiting early when the variant is a string or an Identifier to avoid an extra check at the end
1 parent f3310eb commit 9b7d940

19 files changed

Lines changed: 336 additions & 333 deletions

src/slang-nodes/ConstructorAttribute.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,13 @@ export class ConstructorAttribute extends SlangNode {
1515
constructor(ast: ast.ConstructorAttribute, options: ParserOptions<AstNode>) {
1616
super(ast);
1717

18-
this.variant =
19-
ast.variant instanceof TerminalNode
20-
? ast.variant.unparse()
21-
: new ModifierInvocation(ast.variant, options);
18+
if (ast.variant instanceof TerminalNode) {
19+
this.variant = ast.variant.unparse();
20+
return;
21+
}
22+
this.variant = new ModifierInvocation(ast.variant, options);
2223

23-
if (typeof this.variant !== 'string') this.updateMetadata(this.variant);
24+
this.updateMetadata(this.variant);
2425
}
2526

2627
print(path: AstPath<ConstructorAttribute>, print: PrintFunction): Doc {

src/slang-nodes/ElementaryType.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,13 @@ export class ElementaryType extends SlangNode {
1414
constructor(ast: ast.ElementaryType) {
1515
super(ast);
1616

17-
this.variant =
18-
ast.variant instanceof TerminalNode
19-
? ast.variant.unparse()
20-
: new AddressType(ast.variant);
17+
if (ast.variant instanceof TerminalNode) {
18+
this.variant = ast.variant.unparse();
19+
return;
20+
}
21+
this.variant = new AddressType(ast.variant);
2122

22-
if (typeof this.variant !== 'string') this.updateMetadata(this.variant);
23+
this.updateMetadata(this.variant);
2324
}
2425

2526
print(path: AstPath<ElementaryType>, print: PrintFunction): Doc {

src/slang-nodes/ExperimentalFeature.ts

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
import {
2-
NonterminalKind,
3-
TerminalKind,
4-
TerminalNode
5-
} from '@nomicfoundation/slang/cst';
1+
import { NonterminalKind, TerminalNode } from '@nomicfoundation/slang/cst';
62
import { SlangNode } from './SlangNode.js';
73
import { StringLiteral } from './StringLiteral.js';
84
import { Identifier } from './Identifier.js';
@@ -20,13 +16,13 @@ export class ExperimentalFeature extends SlangNode {
2016
constructor(ast: ast.ExperimentalFeature, options: ParserOptions<AstNode>) {
2117
super(ast);
2218

23-
this.variant =
24-
ast.variant instanceof TerminalNode
25-
? new Identifier(ast.variant)
26-
: new StringLiteral(ast.variant, options);
19+
if (ast.variant instanceof TerminalNode) {
20+
this.variant = new Identifier(ast.variant);
21+
return;
22+
}
23+
this.variant = new StringLiteral(ast.variant, options);
2724

28-
if (this.variant.kind !== TerminalKind.Identifier)
29-
this.updateMetadata(this.variant);
25+
this.updateMetadata(this.variant);
3026
}
3127

3228
print(path: AstPath<ExperimentalFeature>, print: PrintFunction): Doc {

0 commit comments

Comments
 (0)