@@ -213,6 +213,26 @@ namespace ts.formatting {
213213 public NoSpaceBetweenYieldKeywordAndStar : Rule ;
214214 public SpaceBetweenYieldOrYieldStarAndOperand : Rule ;
215215
216+ // Async-await
217+ public SpaceBetweenAsyncAndFunctionKeyword : Rule ;
218+ public NoSpaceBetweenAsyncAndFunctionKeyword : Rule ;
219+ public SpaceAfterAwaitKeyword : Rule ;
220+ public NoSpaceAfterAwaitKeyword : Rule ;
221+
222+ // Type alias declaration
223+ public SpaceAfterTypeKeyword : Rule ;
224+ public NoSpaceAfterTypeKeyword : Rule ;
225+
226+ // Tagged template string
227+ public SpaceBetweenTagAndTemplateString : Rule ;
228+ public NoSpaceBetweenTagAndTemplateString : Rule ;
229+
230+ // Union type
231+ public SpaceBeforeBar : Rule ;
232+ public NoSpaceBeforeBar : Rule ;
233+ public SpaceAfterBar : Rule ;
234+ public NoSpaceAfterBar : Rule ;
235+
216236 constructor ( ) {
217237 ///
218238 /// Common Rules
@@ -360,6 +380,27 @@ namespace ts.formatting {
360380 this . NoSpaceBetweenYieldKeywordAndStar = new Rule ( RuleDescriptor . create1 ( SyntaxKind . YieldKeyword , SyntaxKind . AsteriskToken ) , RuleOperation . create2 ( new RuleOperationContext ( Rules . IsSameLineTokenContext , Rules . IsYieldOrYieldStarWithOperand ) , RuleAction . Delete ) ) ;
361381 this . SpaceBetweenYieldOrYieldStarAndOperand = new Rule ( RuleDescriptor . create4 ( Shared . TokenRange . FromTokens ( [ SyntaxKind . YieldKeyword , SyntaxKind . AsteriskToken ] ) , Shared . TokenRange . Any ) , RuleOperation . create2 ( new RuleOperationContext ( Rules . IsSameLineTokenContext , Rules . IsYieldOrYieldStarWithOperand ) , RuleAction . Space ) ) ;
362382
383+ // Async-await
384+ this . SpaceBetweenAsyncAndFunctionKeyword = new Rule ( RuleDescriptor . create1 ( SyntaxKind . AsyncKeyword , SyntaxKind . FunctionKeyword ) , RuleOperation . create2 ( new RuleOperationContext ( Rules . IsSameLineTokenContext ) , RuleAction . Space ) ) ;
385+ this . NoSpaceBetweenAsyncAndFunctionKeyword = new Rule ( RuleDescriptor . create1 ( SyntaxKind . AsyncKeyword , SyntaxKind . FunctionKeyword ) , RuleOperation . create2 ( new RuleOperationContext ( Rules . IsSameLineTokenContext ) , RuleAction . Delete ) ) ;
386+ this . SpaceAfterAwaitKeyword = new Rule ( RuleDescriptor . create3 ( SyntaxKind . AwaitKeyword , Shared . TokenRange . Any ) , RuleOperation . create2 ( new RuleOperationContext ( Rules . IsSameLineTokenContext ) , RuleAction . Space ) ) ;
387+ this . NoSpaceAfterAwaitKeyword = new Rule ( RuleDescriptor . create3 ( SyntaxKind . AwaitKeyword , Shared . TokenRange . Any ) , RuleOperation . create2 ( new RuleOperationContext ( Rules . IsSameLineTokenContext ) , RuleAction . Delete ) ) ;
388+
389+ // Type alias declaration
390+ this . SpaceAfterTypeKeyword = new Rule ( RuleDescriptor . create3 ( SyntaxKind . TypeKeyword , Shared . TokenRange . Any ) , RuleOperation . create2 ( new RuleOperationContext ( Rules . IsSameLineTokenContext ) , RuleAction . Space ) ) ;
391+ this . NoSpaceAfterTypeKeyword = new Rule ( RuleDescriptor . create3 ( SyntaxKind . TypeKeyword , Shared . TokenRange . Any ) , RuleOperation . create2 ( new RuleOperationContext ( Rules . IsSameLineTokenContext ) , RuleAction . Delete ) ) ;
392+
393+ // template string
394+ this . SpaceBetweenTagAndTemplateString = new Rule ( RuleDescriptor . create3 ( SyntaxKind . Identifier , Shared . TokenRange . FromTokens ( [ SyntaxKind . NoSubstitutionTemplateLiteral , SyntaxKind . TemplateHead ] ) ) , RuleOperation . create2 ( new RuleOperationContext ( Rules . IsSameLineTokenContext ) , RuleAction . Space ) ) ;
395+ this . NoSpaceBetweenTagAndTemplateString = new Rule ( RuleDescriptor . create3 ( SyntaxKind . Identifier , Shared . TokenRange . FromTokens ( [ SyntaxKind . NoSubstitutionTemplateLiteral , SyntaxKind . TemplateHead ] ) ) , RuleOperation . create2 ( new RuleOperationContext ( Rules . IsSameLineTokenContext ) , RuleAction . Delete ) ) ;
396+
397+ // union type
398+ this . SpaceBeforeBar = new Rule ( RuleDescriptor . create3 ( SyntaxKind . BarToken , Shared . TokenRange . Any ) , RuleOperation . create2 ( new RuleOperationContext ( Rules . IsSameLineTokenContext ) , RuleAction . Space ) ) ;
399+ this . NoSpaceBeforeBar = new Rule ( RuleDescriptor . create3 ( SyntaxKind . BarToken , Shared . TokenRange . Any ) , RuleOperation . create2 ( new RuleOperationContext ( Rules . IsSameLineTokenContext ) , RuleAction . Delete ) ) ;
400+ this . SpaceAfterBar = new Rule ( RuleDescriptor . create2 ( Shared . TokenRange . Any , SyntaxKind . BarToken ) , RuleOperation . create2 ( new RuleOperationContext ( Rules . IsSameLineTokenContext ) , RuleAction . Space ) ) ;
401+ this . NoSpaceAfterBar = new Rule ( RuleDescriptor . create2 ( Shared . TokenRange . Any , SyntaxKind . BarToken ) , RuleOperation . create2 ( new RuleOperationContext ( Rules . IsSameLineTokenContext ) , RuleAction . Delete ) ) ;
402+
403+
363404 // These rules are higher in priority than user-configurable rules.
364405 this . HighPriorityCommonRules =
365406 [
@@ -386,6 +427,11 @@ namespace ts.formatting {
386427 this . NoSpaceBeforeOpenParenInFuncCall ,
387428 this . SpaceBeforeBinaryKeywordOperator , this . SpaceAfterBinaryKeywordOperator ,
388429 this . SpaceAfterVoidOperator ,
430+ this . SpaceBetweenAsyncAndFunctionKeyword , this . NoSpaceBetweenAsyncAndFunctionKeyword ,
431+ this . SpaceAfterAwaitKeyword , this . NoSpaceAfterAwaitKeyword ,
432+ this . SpaceAfterTypeKeyword , this . NoSpaceAfterTypeKeyword ,
433+ this . SpaceBetweenTagAndTemplateString , this . NoSpaceBetweenTagAndTemplateString ,
434+ this . SpaceBeforeBar , this . NoSpaceBeforeBar , this . SpaceAfterBar , this . NoSpaceAfterBar ,
389435
390436 // TypeScript-specific rules
391437 this . NoSpaceAfterConstructor , this . NoSpaceAfterModuleImport ,
0 commit comments