22 * Copyright 2019 Omar Tawfik. Please see LICENSE file at the root of this repository. 
33 */ 
44
5- import  {  Token ,  TokenKind ,  getTokenDescription  }  from  "../scanning/tokens" ; 
5+ import  {  Token ,  TokenKind ,  getTokenDescription ,   TokenWithTrivia  }  from  "../scanning/tokens" ; 
66import  {  Range  }  from  "vscode-languageserver-types" ; 
77import  {  comparePositions  }  from  "../util/ranges" ; 
88
@@ -59,35 +59,40 @@ export class DocumentSyntax extends BaseSyntaxNode {
5959  public  constructor ( 
6060    public  readonly  versions : ReadonlyArray < VersionSyntax > , 
6161    public  readonly  blocks : ReadonlyArray < BlockSyntax > , 
62+     public  readonly  commentsAfter : ReadonlyArray < TokenWithTrivia > , 
6263  )  { 
6364    super ( SyntaxKind . Document ) ; 
6465  } 
6566
66-   public  calculateRange ( ) : Range  { 
67-     return  combineRange ( ...this . versions ,  ...this . blocks ) ; 
67+   protected  calculateRange ( ) : Range  { 
68+     return  combineRange ( ...this . versions ,  ...this . blocks ,  ... this . commentsAfter ) ; 
6869  } 
6970} 
7071
7172export  class  VersionSyntax  extends  BaseSyntaxNode  { 
72-   public  constructor ( public  readonly  version : Token ,  public  readonly  equal : Token ,  public  readonly  integer : Token )  { 
73+   public  constructor ( 
74+     public  readonly  version : TokenWithTrivia , 
75+     public  readonly  equal : TokenWithTrivia , 
76+     public  readonly  integer : TokenWithTrivia , 
77+   )  { 
7378    super ( SyntaxKind . Version ) ; 
7479    assertTokenKind ( version ,  TokenKind . VersionKeyword ) ; 
7580    assertTokenKind ( equal ,  TokenKind . Equal ) ; 
7681    assertTokenKind ( integer ,  TokenKind . IntegerLiteral ) ; 
7782  } 
7883
79-   public  calculateRange ( ) : Range  { 
84+   protected  calculateRange ( ) : Range  { 
8085    return  combineRange ( this . version ,  this . equal ,  this . integer ) ; 
8186  } 
8287} 
8388
8489export  class  BlockSyntax  extends  BaseSyntaxNode  { 
8590  public  constructor ( 
86-     public  readonly  type : Token , 
87-     public  readonly  name : Token , 
88-     public  readonly  openBracket : Token , 
91+     public  readonly  type : TokenWithTrivia , 
92+     public  readonly  name : TokenWithTrivia , 
93+     public  readonly  openBracket : TokenWithTrivia , 
8994    public  readonly  properties : ReadonlyArray < BasePropertySyntax > , 
90-     public  readonly  closeBracket : Token , 
95+     public  readonly  closeBracket : TokenWithTrivia , 
9196  )  { 
9297    super ( SyntaxKind . Block ) ; 
9398    assertTokenKind ( type ,  TokenKind . ActionKeyword ,  TokenKind . WorkflowKeyword ) ; 
@@ -96,13 +101,17 @@ export class BlockSyntax extends BaseSyntaxNode {
96101    assertTokenKind ( closeBracket ,  TokenKind . RightCurlyBracket ) ; 
97102  } 
98103
99-   public  calculateRange ( ) : Range  { 
104+   protected  calculateRange ( ) : Range  { 
100105    return  combineRange ( this . type ,  this . name ,  this . openBracket ,  ...this . properties ,  this . closeBracket ) ; 
101106  } 
102107} 
103108
104109export  abstract  class  BasePropertySyntax  extends  BaseSyntaxNode  { 
105-   protected  constructor ( kind : SyntaxKind ,  public  readonly  key : Token ,  public  readonly  equal : Token )  { 
110+   protected  constructor ( 
111+     kind : SyntaxKind , 
112+     public  readonly  key : TokenWithTrivia , 
113+     public  readonly  equal : TokenWithTrivia , 
114+   )  { 
106115    super ( kind ) ; 
107116    assertTokenKind ( 
108117      key , 
@@ -120,73 +129,77 @@ export abstract class BasePropertySyntax extends BaseSyntaxNode {
120129} 
121130
122131export  class  StringPropertySyntax  extends  BasePropertySyntax  { 
123-   public  constructor ( key : Token ,  equal : Token ,  public  readonly  value : Token  |  undefined )  { 
132+   public  constructor ( key : TokenWithTrivia ,  equal : TokenWithTrivia ,  public  readonly  value : TokenWithTrivia  |  undefined )  { 
124133    super ( SyntaxKind . StringProperty ,  key ,  equal ) ; 
125134    assertTokenKind ( value ,  TokenKind . StringLiteral ) ; 
126135  } 
127136
128-   public  calculateRange ( ) : Range  { 
137+   protected  calculateRange ( ) : Range  { 
129138    return  combineRange ( this . key ,  this . equal ,  this . value ) ; 
130139  } 
131140} 
132141
133142export  class  ArrayPropertySyntax  extends  BasePropertySyntax  { 
134143  public  constructor ( 
135-     key : Token , 
136-     equal : Token , 
137-     public  readonly  openBracket : Token , 
144+     key : TokenWithTrivia , 
145+     equal : TokenWithTrivia , 
146+     public  readonly  openBracket : TokenWithTrivia , 
138147    public  readonly  items : ReadonlyArray < ArrayItemSyntax > , 
139-     public  readonly  closeBracket : Token , 
148+     public  readonly  closeBracket : TokenWithTrivia , 
140149  )  { 
141150    super ( SyntaxKind . ArrayProperty ,  key ,  equal ) ; 
142151    assertTokenKind ( openBracket ,  TokenKind . LeftSquareBracket ) ; 
143152    assertTokenKind ( closeBracket ,  TokenKind . RightSquareBracket ) ; 
144153  } 
145154
146-   public  calculateRange ( ) : Range  { 
155+   protected  calculateRange ( ) : Range  { 
147156    return  combineRange ( this . openBracket ,  ...this . items ,  this . closeBracket ) ; 
148157  } 
149158} 
150159
151160export  class  ArrayItemSyntax  extends  BaseSyntaxNode  { 
152-   public  constructor ( public  readonly  value : Token ,  public  readonly  comma : Token  |  undefined )  { 
161+   public  constructor ( public  readonly  value : TokenWithTrivia ,  public  readonly  comma : TokenWithTrivia  |  undefined )  { 
153162    super ( SyntaxKind . ArrayItem ) ; 
154163    assertTokenKind ( value ,  TokenKind . StringLiteral ) ; 
155164    assertTokenKind ( comma ,  TokenKind . Comma ) ; 
156165  } 
157166
158-   public  calculateRange ( ) : Range  { 
167+   protected  calculateRange ( ) : Range  { 
159168    return  combineRange ( this . value ,  this . comma ) ; 
160169  } 
161170} 
162171
163172export  class  ObjectPropertySyntax  extends  BasePropertySyntax  { 
164173  public  constructor ( 
165-     key : Token , 
166-     equal : Token , 
167-     public  readonly  openBracket : Token , 
174+     key : TokenWithTrivia , 
175+     equal : TokenWithTrivia , 
176+     public  readonly  openBracket : TokenWithTrivia , 
168177    public  readonly  members : ReadonlyArray < ObjectMemberSyntax > , 
169-     public  readonly  closeBracket : Token , 
178+     public  readonly  closeBracket : TokenWithTrivia , 
170179  )  { 
171180    super ( SyntaxKind . ObjectProperty ,  key ,  equal ) ; 
172181    assertTokenKind ( openBracket ,  TokenKind . LeftCurlyBracket ) ; 
173182    assertTokenKind ( closeBracket ,  TokenKind . RightCurlyBracket ) ; 
174183  } 
175184
176-   public  calculateRange ( ) : Range  { 
185+   protected  calculateRange ( ) : Range  { 
177186    return  combineRange ( this . openBracket ,  ...this . members ,  this . closeBracket ) ; 
178187  } 
179188} 
180189
181190export  class  ObjectMemberSyntax  extends  BaseSyntaxNode  { 
182-   public  constructor ( public  readonly  name : Token ,  public  readonly  equal : Token ,  public  readonly  value : Token )  { 
191+   public  constructor ( 
192+     public  readonly  name : TokenWithTrivia , 
193+     public  readonly  equal : TokenWithTrivia , 
194+     public  readonly  value : TokenWithTrivia , 
195+   )  { 
183196    super ( SyntaxKind . ObjectMember ) ; 
184197    assertTokenKind ( name ,  TokenKind . Identifier ) ; 
185198    assertTokenKind ( equal ,  TokenKind . Equal ) ; 
186199    assertTokenKind ( value ,  TokenKind . StringLiteral ) ; 
187200  } 
188201
189-   public  calculateRange ( ) : Range  { 
202+   protected  calculateRange ( ) : Range  { 
190203    return  combineRange ( this . name ,  this . equal ,  this . value ) ; 
191204  } 
192205} 
0 commit comments