@@ -125,25 +125,32 @@ export type Operator = UnaryOperator | BinaryOperator;
125125
126126export type SymbolId = number & { _symbolIdBrand : any } ;
127127
128+ export enum NodeFlags {
129+ None = 0 ,
130+ Inline = 1 << 0 , // Keep function body on same line
131+ Declaration = 1 << 1 , // Prefer declaration syntax `function foo()` over assignment syntax `foo = function()`
132+ }
133+
128134export interface TextRange {
129135 line ?: number ;
130136 column ?: number ;
131137}
132138
133139export interface Node extends TextRange {
134140 kind : SyntaxKind ;
141+ flags : NodeFlags ;
135142}
136143
137144export function createNode ( kind : SyntaxKind , tsOriginal ?: ts . Node ) : Node {
138145 if ( tsOriginal === undefined ) {
139- return { kind } ;
146+ return { kind, flags : NodeFlags . None } ;
140147 }
141148
142149 const sourcePosition = getSourcePosition ( tsOriginal ) ;
143150 if ( sourcePosition ) {
144- return { kind, line : sourcePosition . line , column : sourcePosition . column } ;
151+ return { kind, line : sourcePosition . line , column : sourcePosition . column , flags : NodeFlags . None } ;
145152 } else {
146- return { kind } ;
153+ return { kind, flags : NodeFlags . None } ;
147154 }
148155}
149156
@@ -578,18 +585,11 @@ export function isLiteral(
578585 ) ;
579586}
580587
581- export enum FunctionExpressionFlags {
582- None = 1 << 0 ,
583- Inline = 1 << 1 , // Keep function body on same line
584- Declaration = 1 << 2 , // Prefer declaration syntax `function foo()` over assignment syntax `foo = function()`
585- }
586-
587588export interface FunctionExpression extends Expression {
588589 kind : SyntaxKind . FunctionExpression ;
589590 params ?: Identifier [ ] ;
590591 dots ?: DotsLiteral ;
591592 body : Block ;
592- flags : FunctionExpressionFlags ;
593593}
594594
595595export function isFunctionExpression ( node : Node ) : node is FunctionExpression {
@@ -600,7 +600,7 @@ export function createFunctionExpression(
600600 body : Block ,
601601 params ?: Identifier [ ] ,
602602 dots ?: DotsLiteral ,
603- flags = FunctionExpressionFlags . None ,
603+ flags = NodeFlags . None ,
604604 tsOriginal ?: ts . Node
605605) : FunctionExpression {
606606 const expression = createNode ( SyntaxKind . FunctionExpression , tsOriginal ) as FunctionExpression ;
@@ -819,6 +819,6 @@ export function isInlineFunctionExpression(expression: FunctionExpression): expr
819819 expression . body . statements ?. length === 1 &&
820820 isReturnStatement ( expression . body . statements [ 0 ] ) &&
821821 expression . body . statements [ 0 ] . expressions !== undefined &&
822- ( expression . flags & FunctionExpressionFlags . Inline ) !== 0
822+ ( expression . flags & NodeFlags . Inline ) !== 0
823823 ) ;
824824}
0 commit comments