=== tests/cases/conformance/es7/exponentiationOperator/exponentiationOperatorInTemplateStringWithSyntaxError3.ts === var t1 = 10; >t1 : number >10 : 10 var t2 = 10; >t2 : number >10 : 10 var s; >s : any // Error: early syntax error using ES7 SimpleUnaryExpression on left-hand side without () // With TemplateTail `${-t1 ** t2 - t1} world`; >`${-t1 ** t2 - t1} world` : string >-t1 ** t2 - t1 : number >-t1 ** t2 : number >-t1 : number >t1 : number >t2 : number >t1 : number `${-++t1 ** t2 - t1} world`; >`${-++t1 ** t2 - t1} world` : string >-++t1 ** t2 - t1 : number >-++t1 ** t2 : number >-++t1 : number >++t1 : number >t1 : number >t2 : number >t1 : number `${-t1++ ** t2 - t1} world`; >`${-t1++ ** t2 - t1} world` : string >-t1++ ** t2 - t1 : number >-t1++ ** t2 : number >-t1++ : number >t1++ : number >t1 : number >t2 : number >t1 : number `${!t1 ** t2 ** --t1 } world`; >`${!t1 ** t2 ** --t1 } world` : string >!t1 ** t2 ** --t1 : number >!t1 : boolean >t1 : number >t2 ** --t1 : number >t2 : number >--t1 : number >t1 : number `${typeof t1 ** t2 ** t1} world`; >`${typeof t1 ** t2 ** t1} world` : string >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number >t2 ** t1 : number >t2 : number >t1 : number `${1 + typeof t1 ** t2 ** t1} world`; >`${1 + typeof t1 ** t2 ** t1} world` : string >1 + typeof t1 ** t2 ** t1 : number >1 : 1 >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number >t2 ** t1 : number >t2 : number >t1 : number `${-t1 ** t2 - t1}${-t1 ** t2 - t1} world`; >`${-t1 ** t2 - t1}${-t1 ** t2 - t1} world` : string >-t1 ** t2 - t1 : number >-t1 ** t2 : number >-t1 : number >t1 : number >t2 : number >t1 : number >-t1 ** t2 - t1 : number >-t1 ** t2 : number >-t1 : number >t1 : number >t2 : number >t1 : number `${-++t1 ** t2 - t1}${-++t1 ** t2 - t1} world`; >`${-++t1 ** t2 - t1}${-++t1 ** t2 - t1} world` : string >-++t1 ** t2 - t1 : number >-++t1 ** t2 : number >-++t1 : number >++t1 : number >t1 : number >t2 : number >t1 : number >-++t1 ** t2 - t1 : number >-++t1 ** t2 : number >-++t1 : number >++t1 : number >t1 : number >t2 : number >t1 : number `${-t1++ ** t2 - t1}${-t1++ ** t2 - t1} world`; >`${-t1++ ** t2 - t1}${-t1++ ** t2 - t1} world` : string >-t1++ ** t2 - t1 : number >-t1++ ** t2 : number >-t1++ : number >t1++ : number >t1 : number >t2 : number >t1 : number >-t1++ ** t2 - t1 : number >-t1++ ** t2 : number >-t1++ : number >t1++ : number >t1 : number >t2 : number >t1 : number `${!t1 ** t2 ** --t1 }${!t1 ** t2 ** --t1 } world`; >`${!t1 ** t2 ** --t1 }${!t1 ** t2 ** --t1 } world` : string >!t1 ** t2 ** --t1 : number >!t1 : boolean >t1 : number >t2 ** --t1 : number >t2 : number >--t1 : number >t1 : number >!t1 ** t2 ** --t1 : number >!t1 : boolean >t1 : number >t2 ** --t1 : number >t2 : number >--t1 : number >t1 : number `${typeof t1 ** t2 ** t1}${typeof t1 ** t2 ** t1} world`; >`${typeof t1 ** t2 ** t1}${typeof t1 ** t2 ** t1} world` : string >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number >t2 ** t1 : number >t2 : number >t1 : number >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number >t2 ** t1 : number >t2 : number >t1 : number `${1 + typeof t1 ** t2 ** t1}${1 + typeof t1 ** t2 ** t1} world`; >`${1 + typeof t1 ** t2 ** t1}${1 + typeof t1 ** t2 ** t1} world` : string >1 + typeof t1 ** t2 ** t1 : number >1 : 1 >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number >t2 ** t1 : number >t2 : number >t1 : number >1 + typeof t1 ** t2 ** t1 : number >1 : 1 >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number >t2 ** t1 : number >t2 : number >t1 : number `${-t1 ** t2 - t1} hello world ${-t1 ** t2 - t1} !!`; >`${-t1 ** t2 - t1} hello world ${-t1 ** t2 - t1} !!` : string >-t1 ** t2 - t1 : number >-t1 ** t2 : number >-t1 : number >t1 : number >t2 : number >t1 : number >-t1 ** t2 - t1 : number >-t1 ** t2 : number >-t1 : number >t1 : number >t2 : number >t1 : number `${-++t1 ** t2 - t1} hello world ${-++t1 ** t2 - t1} !!`; >`${-++t1 ** t2 - t1} hello world ${-++t1 ** t2 - t1} !!` : string >-++t1 ** t2 - t1 : number >-++t1 ** t2 : number >-++t1 : number >++t1 : number >t1 : number >t2 : number >t1 : number >-++t1 ** t2 - t1 : number >-++t1 ** t2 : number >-++t1 : number >++t1 : number >t1 : number >t2 : number >t1 : number `${-t1++ ** t2 - t1} hello world ${-t1++ ** t2 - t1} !!`; >`${-t1++ ** t2 - t1} hello world ${-t1++ ** t2 - t1} !!` : string >-t1++ ** t2 - t1 : number >-t1++ ** t2 : number >-t1++ : number >t1++ : number >t1 : number >t2 : number >t1 : number >-t1++ ** t2 - t1 : number >-t1++ ** t2 : number >-t1++ : number >t1++ : number >t1 : number >t2 : number >t1 : number `${!t1 ** t2 ** --t1 } hello world ${!t1 ** t2 ** --t1 } !!`; >`${!t1 ** t2 ** --t1 } hello world ${!t1 ** t2 ** --t1 } !!` : string >!t1 ** t2 ** --t1 : number >!t1 : boolean >t1 : number >t2 ** --t1 : number >t2 : number >--t1 : number >t1 : number >!t1 ** t2 ** --t1 : number >!t1 : boolean >t1 : number >t2 ** --t1 : number >t2 : number >--t1 : number >t1 : number `${typeof t1 ** t2 ** t1} hello world ${typeof t1 ** t2 ** t1} !!`; >`${typeof t1 ** t2 ** t1} hello world ${typeof t1 ** t2 ** t1} !!` : string >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number >t2 ** t1 : number >t2 : number >t1 : number >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number >t2 ** t1 : number >t2 : number >t1 : number `${1 + typeof t1 ** t2 ** t1} hello world ${1 + typeof t1 ** t2 ** t1} !!`; >`${1 + typeof t1 ** t2 ** t1} hello world ${1 + typeof t1 ** t2 ** t1} !!` : string >1 + typeof t1 ** t2 ** t1 : number >1 : 1 >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number >t2 ** t1 : number >t2 : number >t1 : number >1 + typeof t1 ** t2 ** t1 : number >1 : 1 >typeof t1 ** t2 ** t1 : number >typeof t1 : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" >t1 : number >t2 ** t1 : number >t2 : number >t1 : number