@@ -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
@@ -582,18 +589,11 @@ export function isLiteral(
582589 ) ;
583590}
584591
585- export enum FunctionExpressionFlags {
586- None = 1 << 0 ,
587- Inline = 1 << 1 , // Keep function body on same line
588- Declaration = 1 << 2 , // Prefer declaration syntax `function foo()` over assignment syntax `foo = function()`
589- }
590-
591592export interface FunctionExpression extends Expression {
592593 kind : SyntaxKind . FunctionExpression ;
593594 params ?: Identifier [ ] ;
594595 dots ?: DotsLiteral ;
595596 body : Block ;
596- flags : FunctionExpressionFlags ;
597597}
598598
599599export function isFunctionExpression ( node : Node ) : node is FunctionExpression {
@@ -604,7 +604,7 @@ export function createFunctionExpression(
604604 body : Block ,
605605 params ?: Identifier [ ] ,
606606 dots ?: DotsLiteral ,
607- flags = FunctionExpressionFlags . None ,
607+ flags = NodeFlags . None ,
608608 tsOriginal ?: ts . Node
609609) : FunctionExpression {
610610 const expression = createNode ( SyntaxKind . FunctionExpression , tsOriginal ) as FunctionExpression ;
@@ -823,6 +823,6 @@ export function isInlineFunctionExpression(expression: FunctionExpression): expr
823823 expression . body . statements ?. length === 1 &&
824824 isReturnStatement ( expression . body . statements [ 0 ] ) &&
825825 expression . body . statements [ 0 ] . expressions !== undefined &&
826- ( expression . flags & FunctionExpressionFlags . Inline ) !== 0
826+ ( expression . flags & NodeFlags . Inline ) !== 0
827827 ) ;
828828}
0 commit comments