Skip to content

Commit 0440af2

Browse files
Mindarnknapp
authored andcommitted
added missing type fields in typings and tests for them
1 parent b793350 commit 0440af2

File tree

2 files changed

+102
-3
lines changed

2 files changed

+102
-3
lines changed

types/index.d.ts

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,7 @@ declare namespace hbs {
270270
interface Statement extends Node {}
271271

272272
interface MustacheStatement extends Statement {
273+
type: 'MustacheStatement';
273274
path: PathExpression | Literal;
274275
params: Expression[];
275276
hash: Hash;
@@ -280,6 +281,7 @@ declare namespace hbs {
280281
interface Decorator extends MustacheStatement { }
281282

282283
interface BlockStatement extends Statement {
284+
type: 'BlockStatement';
283285
path: PathExpression;
284286
params: Expression[];
285287
hash: Hash;
@@ -293,6 +295,7 @@ declare namespace hbs {
293295
interface DecoratorBlock extends BlockStatement { }
294296

295297
interface PartialStatement extends Statement {
298+
type: 'PartialStatement';
296299
name: PathExpression | SubExpression;
297300
params: Expression[];
298301
hash: Hash;
@@ -301,6 +304,7 @@ declare namespace hbs {
301304
}
302305

303306
interface PartialBlockStatement extends Statement {
307+
type: 'PartialBlockStatement';
304308
name: PathExpression | SubExpression;
305309
params: Expression[];
306310
hash: Hash;
@@ -310,24 +314,28 @@ declare namespace hbs {
310314
}
311315

312316
interface ContentStatement extends Statement {
317+
type: 'ContentStatement';
313318
value: string;
314319
original: StripFlags;
315320
}
316321

317322
interface CommentStatement extends Statement {
323+
type: 'CommentStatement';
318324
value: string;
319325
strip: StripFlags;
320326
}
321327

322328
interface Expression extends Node {}
323329

324330
interface SubExpression extends Expression {
331+
type: 'SubExpression';
325332
path: PathExpression;
326333
params: Expression[];
327334
hash: Hash;
328335
}
329336

330337
interface PathExpression extends Expression {
338+
type: 'PathExpression';
331339
data: boolean;
332340
depth: number;
333341
parts: string[];
@@ -336,29 +344,38 @@ declare namespace hbs {
336344

337345
interface Literal extends Expression {}
338346
interface StringLiteral extends Literal {
347+
type: 'StringLiteral';
339348
value: string;
340349
original: string;
341350
}
342351

343352
interface BooleanLiteral extends Literal {
353+
type: 'BooleanLiteral';
344354
value: boolean;
345355
original: boolean;
346356
}
347357

348358
interface NumberLiteral extends Literal {
359+
type: 'NumberLiteral';
349360
value: number;
350361
original: number;
351362
}
352363

353-
interface UndefinedLiteral extends Literal {}
364+
interface UndefinedLiteral extends Literal {
365+
type: 'UndefinedLiteral';
366+
}
354367

355-
interface NullLiteral extends Literal {}
368+
interface NullLiteral extends Literal {
369+
type: 'NullLiteral';
370+
}
356371

357372
interface Hash extends Node {
373+
type: 'Hash';
358374
pairs: HashPair[];
359375
}
360376

361377
interface HashPair extends Node {
378+
type: 'HashPair';
362379
key: string;
363380
value: Expression;
364381
}

types/test.ts

Lines changed: 83 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,4 +110,86 @@ Handlebars.compile('test', {
110110

111111
Handlebars.compile('test')({},{allowCallsToHelperMissing: true});
112112

113-
Handlebars.compile('test')({},{});
113+
Handlebars.compile('test')({},{});
114+
115+
116+
const allthings = {} as hbs.AST.MustacheStatement |
117+
hbs.AST.BlockStatement |
118+
hbs.AST.PartialStatement |
119+
hbs.AST.PartialBlockStatement |
120+
hbs.AST.ContentStatement |
121+
hbs.AST.CommentStatement |
122+
hbs.AST.SubExpression |
123+
hbs.AST.PathExpression |
124+
hbs.AST.StringLiteral |
125+
hbs.AST.BooleanLiteral |
126+
hbs.AST.NumberLiteral |
127+
hbs.AST.UndefinedLiteral |
128+
hbs.AST.NullLiteral |
129+
hbs.AST.Hash |
130+
hbs.AST.HashPair;
131+
132+
switch(allthings.type) {
133+
case "MustacheStatement":
134+
let mustacheStatement: hbs.AST.MustacheStatement;
135+
mustacheStatement = allthings;
136+
break;
137+
case "BlockStatement":
138+
let blockStatement: hbs.AST.BlockStatement;
139+
blockStatement = allthings;
140+
break;
141+
case "PartialStatement":
142+
let partialStatement: hbs.AST.PartialStatement;
143+
partialStatement = allthings;
144+
break;
145+
case "PartialBlockStatement":
146+
let partialBlockStatement: hbs.AST.PartialBlockStatement;
147+
partialBlockStatement = allthings;
148+
break;
149+
case "ContentStatement":
150+
let ContentStatement: hbs.AST.ContentStatement;
151+
ContentStatement = allthings;
152+
break;
153+
case "CommentStatement":
154+
let CommentStatement: hbs.AST.CommentStatement;
155+
CommentStatement = allthings;
156+
break;
157+
case "SubExpression":
158+
let SubExpression: hbs.AST.SubExpression;
159+
SubExpression = allthings;
160+
break;
161+
case "PathExpression":
162+
let PathExpression: hbs.AST.PathExpression;
163+
PathExpression = allthings;
164+
break;
165+
case "StringLiteral":
166+
let StringLiteral: hbs.AST.StringLiteral;
167+
StringLiteral = allthings;
168+
break;
169+
case "BooleanLiteral":
170+
let BooleanLiteral: hbs.AST.BooleanLiteral;
171+
BooleanLiteral = allthings;
172+
break;
173+
case "NumberLiteral":
174+
let NumberLiteral: hbs.AST.NumberLiteral;
175+
NumberLiteral = allthings;
176+
break;
177+
case "UndefinedLiteral":
178+
let UndefinedLiteral: hbs.AST.UndefinedLiteral;
179+
UndefinedLiteral = allthings;
180+
break;
181+
case "NullLiteral":
182+
let NullLiteral: hbs.AST.NullLiteral;
183+
NullLiteral = allthings;
184+
break;
185+
case "Hash":
186+
let Hash: hbs.AST.Hash;
187+
Hash = allthings;
188+
break;
189+
case "HashPair":
190+
let HashPair: hbs.AST.HashPair;
191+
HashPair = allthings;
192+
break;
193+
default:
194+
break;
195+
}

0 commit comments

Comments
 (0)