From 0440af214738a611b51c15abdd84254aca200a85 Mon Sep 17 00:00:00 2001
From: Alexander Schramm <alexander.schramm96@gmail.com>
Date: Mon, 7 Oct 2019 23:09:08 +0200
Subject: [PATCH 1/3] added missing type fields in typings and tests for them

---
 types/index.d.ts | 21 ++++++++++--
 types/test.ts    | 84 +++++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 102 insertions(+), 3 deletions(-)

diff --git a/types/index.d.ts b/types/index.d.ts
index a1b1693e9..6fdaf0f9c 100644
--- a/types/index.d.ts
+++ b/types/index.d.ts
@@ -270,6 +270,7 @@ declare namespace hbs {
       interface Statement extends Node {}
 
       interface MustacheStatement extends Statement {
+          type: 'MustacheStatement';
           path: PathExpression | Literal;
           params: Expression[];
           hash: Hash;
@@ -280,6 +281,7 @@ declare namespace hbs {
       interface Decorator extends MustacheStatement { }
 
       interface BlockStatement extends Statement {
+          type: 'BlockStatement';
           path: PathExpression;
           params: Expression[];
           hash: Hash;
@@ -293,6 +295,7 @@ declare namespace hbs {
       interface DecoratorBlock extends BlockStatement { }
 
       interface PartialStatement extends Statement {
+          type: 'PartialStatement';
           name: PathExpression | SubExpression;
           params: Expression[];
           hash: Hash;
@@ -301,6 +304,7 @@ declare namespace hbs {
       }
 
       interface PartialBlockStatement extends Statement {
+          type: 'PartialBlockStatement';
           name: PathExpression | SubExpression;
           params: Expression[];
           hash: Hash;
@@ -310,11 +314,13 @@ declare namespace hbs {
       }
 
       interface ContentStatement extends Statement {
+          type: 'ContentStatement';
           value: string;
           original: StripFlags;
       }
 
       interface CommentStatement extends Statement {
+          type: 'CommentStatement';
           value: string;
           strip: StripFlags;
       }
@@ -322,12 +328,14 @@ declare namespace hbs {
       interface Expression extends Node {}
 
       interface SubExpression extends Expression {
+          type: 'SubExpression';
           path: PathExpression;
           params: Expression[];
           hash: Hash;
       }
 
       interface PathExpression extends Expression {
+          type: 'PathExpression';
           data: boolean;
           depth: number;
           parts: string[];
@@ -336,29 +344,38 @@ declare namespace hbs {
 
       interface Literal extends Expression {}
       interface StringLiteral extends Literal {
+          type: 'StringLiteral';
           value: string;
           original: string;
       }
 
       interface BooleanLiteral extends Literal {
+          type: 'BooleanLiteral';
           value: boolean;
           original: boolean;
       }
 
       interface NumberLiteral extends Literal {
+          type: 'NumberLiteral';
           value: number;
           original: number;
       }
 
-      interface UndefinedLiteral extends Literal {}
+      interface UndefinedLiteral extends Literal {
+          type: 'UndefinedLiteral';
+	  }
 
-      interface NullLiteral extends Literal {}
+      interface NullLiteral extends Literal {
+          type: 'NullLiteral';
+	  }
 
       interface Hash extends Node {
+          type: 'Hash';
           pairs: HashPair[];
       }
 
       interface HashPair extends Node {
+          type: 'HashPair';
           key: string;
           value: Expression;
       }
diff --git a/types/test.ts b/types/test.ts
index 72d6ff70a..ff435916e 100644
--- a/types/test.ts
+++ b/types/test.ts
@@ -110,4 +110,86 @@ Handlebars.compile('test', {
 
 Handlebars.compile('test')({},{allowCallsToHelperMissing: true});
 
-Handlebars.compile('test')({},{});
\ No newline at end of file
+Handlebars.compile('test')({},{});
+
+
+const allthings = {} as hbs.AST.MustacheStatement |
+  hbs.AST.BlockStatement |
+  hbs.AST.PartialStatement |
+  hbs.AST.PartialBlockStatement |
+  hbs.AST.ContentStatement |
+  hbs.AST.CommentStatement |
+  hbs.AST.SubExpression |
+  hbs.AST.PathExpression |
+  hbs.AST.StringLiteral |
+  hbs.AST.BooleanLiteral |
+  hbs.AST.NumberLiteral |
+  hbs.AST.UndefinedLiteral |
+  hbs.AST.NullLiteral |
+  hbs.AST.Hash |
+  hbs.AST.HashPair;
+
+switch(allthings.type) {
+  case "MustacheStatement":
+    let mustacheStatement: hbs.AST.MustacheStatement;
+    mustacheStatement = allthings;
+    break;
+  case "BlockStatement":
+    let blockStatement: hbs.AST.BlockStatement;
+    blockStatement = allthings;
+    break;
+  case "PartialStatement":
+    let partialStatement: hbs.AST.PartialStatement;
+    partialStatement = allthings;
+    break;
+  case "PartialBlockStatement":
+    let partialBlockStatement: hbs.AST.PartialBlockStatement;
+    partialBlockStatement = allthings;
+    break;
+  case "ContentStatement":
+    let ContentStatement: hbs.AST.ContentStatement;
+    ContentStatement = allthings;
+    break;
+  case "CommentStatement":
+    let CommentStatement: hbs.AST.CommentStatement;
+    CommentStatement = allthings;
+    break;
+  case "SubExpression":
+    let SubExpression: hbs.AST.SubExpression;
+    SubExpression = allthings;
+    break;
+  case "PathExpression":
+    let PathExpression: hbs.AST.PathExpression;
+    PathExpression = allthings;
+    break;
+  case "StringLiteral":
+    let StringLiteral: hbs.AST.StringLiteral;
+    StringLiteral = allthings;
+    break;
+  case "BooleanLiteral":
+    let BooleanLiteral: hbs.AST.BooleanLiteral;
+    BooleanLiteral = allthings;
+    break;
+  case "NumberLiteral":
+    let NumberLiteral: hbs.AST.NumberLiteral;
+    NumberLiteral = allthings;
+    break;
+  case "UndefinedLiteral":
+    let UndefinedLiteral: hbs.AST.UndefinedLiteral;
+    UndefinedLiteral = allthings;
+    break;
+  case "NullLiteral":
+    let NullLiteral: hbs.AST.NullLiteral;
+    NullLiteral = allthings;
+    break;
+  case "Hash":
+    let Hash: hbs.AST.Hash;
+    Hash = allthings;
+    break;
+  case "HashPair":
+    let HashPair: hbs.AST.HashPair;
+    HashPair = allthings;
+    break;
+  default:
+    break;
+}
\ No newline at end of file

From ba570c42cf505073dfd59b95614e000962b77a89 Mon Sep 17 00:00:00 2001
From: Nils Knappmeier <github@knappi.org>
Date: Tue, 8 Oct 2019 22:04:57 +0200
Subject: [PATCH 2/3] Update release notes

---
 release-notes.md | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/release-notes.md b/release-notes.md
index 713990a49..c20a86cbc 100644
--- a/release-notes.md
+++ b/release-notes.md
@@ -2,7 +2,17 @@
 
 ## Development
 
-[Commits](https://github.com/wycats/handlebars.js/compare/v4.4.2...master)
+[Commits](https://github.com/wycats/handlebars.js/compare/v4.4.3...master)
+
+## v4.4.3 - October 8th, 2019
+Bugfixes
+
+Typings:
+- add missing type fields to AST typings and add tests for them - 0440af2
+
+
+
+[Commits](https://github.com/wycats/handlebars.js/compare/v4.4.2...v4.4.3)
 
 ## v4.4.2 - October 2nd, 2019
 - chore: fix grunt-saucelabs dependency - b7eada0

From 2e53fba68f8c51f9aca97615944fdbdeba94ff62 Mon Sep 17 00:00:00 2001
From: Nils Knappmeier <github@knappi.org>
Date: Tue, 8 Oct 2019 22:05:35 +0200
Subject: [PATCH 3/3] v4.4.3

---
 components/bower.json           | 2 +-
 components/handlebars.js.nuspec | 2 +-
 components/package.json         | 2 +-
 lib/handlebars/base.js          | 2 +-
 package.json                    | 2 +-
 5 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/components/bower.json b/components/bower.json
index cdc450704..ea6ba5fb8 100644
--- a/components/bower.json
+++ b/components/bower.json
@@ -1,6 +1,6 @@
 {
   "name": "handlebars",
-  "version": "4.4.2",
+  "version": "4.4.3",
   "main": "handlebars.js",
   "license": "MIT",
   "dependencies": {}
diff --git a/components/handlebars.js.nuspec b/components/handlebars.js.nuspec
index 41400dbd8..1c69e0abb 100644
--- a/components/handlebars.js.nuspec
+++ b/components/handlebars.js.nuspec
@@ -2,7 +2,7 @@
 <package>
 	<metadata>
 		<id>handlebars.js</id>
-		<version>4.4.2</version>
+		<version>4.4.3</version>
 		<authors>handlebars.js Authors</authors>
 		<licenseUrl>https://github.com/wycats/handlebars.js/blob/master/LICENSE</licenseUrl>
 		<projectUrl>https://github.com/wycats/handlebars.js/</projectUrl>
diff --git a/components/package.json b/components/package.json
index 23058be48..0b116e797 100644
--- a/components/package.json
+++ b/components/package.json
@@ -1,6 +1,6 @@
 {
   "name": "handlebars",
-  "version": "4.4.2",
+  "version": "4.4.3",
   "license": "MIT",
   "jspm": {
     "main": "handlebars",
diff --git a/lib/handlebars/base.js b/lib/handlebars/base.js
index 14575756c..7d649de09 100644
--- a/lib/handlebars/base.js
+++ b/lib/handlebars/base.js
@@ -4,7 +4,7 @@ import {registerDefaultHelpers} from './helpers';
 import {registerDefaultDecorators} from './decorators';
 import logger from './logger';
 
-export const VERSION = '4.4.2';
+export const VERSION = '4.4.3';
 export const COMPILER_REVISION = 8;
 export const LAST_COMPATIBLE_COMPILER_REVISION = 7;
 
diff --git a/package.json b/package.json
index 9d54050cb..54daa5c9a 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
 {
   "name": "handlebars",
   "barename": "handlebars",
-  "version": "4.4.2",
+  "version": "4.4.3",
   "description": "Handlebars provides the power necessary to let you build semantic templates effectively with no frustration",
   "homepage": "http://www.handlebarsjs.com/",
   "keywords": [
