From 090f6bd77c53f2fe945dfefba69a1f7a99fe6ab8 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Fri, 13 Apr 2018 23:23:05 -0700 Subject: [PATCH] Accepted baselines. --- .../reference/api/tsserverlibrary.d.ts | 1 + tests/baselines/reference/api/typescript.d.ts | 1 + ...ggedTemplatesWithTypeArguments1.errors.txt | 92 ++++++----- .../taggedTemplatesWithTypeArguments1.js | 34 ++-- .../taggedTemplatesWithTypeArguments1.symbols | 62 +++++-- .../taggedTemplatesWithTypeArguments1.types | 155 ++++++++++-------- 6 files changed, 204 insertions(+), 141 deletions(-) diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index 2e8e3f3871d..ae99f93ae1a 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -1050,6 +1050,7 @@ declare namespace ts { interface TaggedTemplateExpression extends MemberExpression { kind: SyntaxKind.TaggedTemplateExpression; tag: LeftHandSideExpression; + typeArguments?: NodeArray; template: TemplateLiteral; } type CallLikeExpression = CallExpression | NewExpression | TaggedTemplateExpression | Decorator | JsxOpeningLikeElement; diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index 378949d5b5b..c419eceaf95 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -1050,6 +1050,7 @@ declare namespace ts { interface TaggedTemplateExpression extends MemberExpression { kind: SyntaxKind.TaggedTemplateExpression; tag: LeftHandSideExpression; + typeArguments?: NodeArray; template: TemplateLiteral; } type CallLikeExpression = CallExpression | NewExpression | TaggedTemplateExpression | Decorator | JsxOpeningLikeElement; diff --git a/tests/baselines/reference/taggedTemplatesWithTypeArguments1.errors.txt b/tests/baselines/reference/taggedTemplatesWithTypeArguments1.errors.txt index 700c98d54fe..6b732dbf4aa 100644 --- a/tests/baselines/reference/taggedTemplatesWithTypeArguments1.errors.txt +++ b/tests/baselines/reference/taggedTemplatesWithTypeArguments1.errors.txt @@ -1,16 +1,18 @@ -tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(9,18): error TS2365: Operator '>' cannot be applied to types 'boolean' and 'string'. -tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(9,20): error TS2693: 'Stuff' only refers to a type, but is being used as a value here. -tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(22,20): error TS2693: 'Stuff' only refers to a type, but is being used as a value here. -tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(22,50): error TS1005: ',' expected. -tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(39,18): error TS2365: Operator '>' cannot be applied to types 'boolean' and 'string'. -tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(39,30): error TS2693: 'Stuff' only refers to a type, but is being used as a value here. -tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(39,53): error TS1128: Declaration or statement expected. -tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(40,3): error TS2339: Property 'returnedProp' does not exist on type 'boolean'. -tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(41,3): error TS2339: Property 'returnedProp' does not exist on type 'boolean'. -tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(42,3): error TS2339: Property 'returnedProp' does not exist on type 'boolean'. +tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(11,22): error TS2339: Property 'x' does not exist on type '{}'. +tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(13,22): error TS2339: Property 'y' does not exist on type '{}'. +tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(15,22): error TS2339: Property 'z' does not exist on type '{}'. +tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(24,22): error TS2339: Property 'x' does not exist on type '{}'. +tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(26,22): error TS2339: Property 'y' does not exist on type '{}'. +tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(28,22): error TS2339: Property 'z' does not exist on type '{}'. +tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(38,19): error TS2339: Property 'x' does not exist on type '{}'. +tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(39,19): error TS2339: Property 'y' does not exist on type '{}'. +tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(40,19): error TS2339: Property 'z' does not exist on type '{}'. +tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(43,19): error TS2339: Property 'x' does not exist on type '{}'. +tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(44,19): error TS2339: Property 'y' does not exist on type '{}'. +tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(45,19): error TS2339: Property 'z' does not exist on type '{}'. -==== tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts (10 errors) ==== +==== tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts (12 errors) ==== declare function f(strs: TemplateStringsArray, ...callbacks: Array<(x: T) => any>): void; interface Stuff { @@ -20,63 +22,63 @@ tests/cases/conformance/es6/templates/taggedTemplatesWithTypeArguments1.ts(42,3) } export const a = f ` - ~~~~~~~~~~ - ~~~~~ -!!! error TS2693: 'Stuff' only refers to a type, but is being used as a value here. hello - ~~~~~~~~~ ${stuff => stuff.x} - ~~~~~~~~~~~~~~~~~~~~~~~ + ~ +!!! error TS2339: Property 'x' does not exist on type '{}'. brave - ~~~~~~~~~ ${stuff => stuff.y} - ~~~~~~~~~~~~~~~~~~~~~~~ + ~ +!!! error TS2339: Property 'y' does not exist on type '{}'. world - ~~~~~~~~~ ${stuff => stuff.z} - ~~~~~~~~~~~~~~~~~~~~~~~ + ~ +!!! error TS2339: Property 'z' does not exist on type '{}'. `; - ~ -!!! error TS2365: Operator '>' cannot be applied to types 'boolean' and 'string'. declare function g( strs: TemplateStringsArray, t: (i: Input) => T, u: (i: Input) => U, v: (i: Input) => V): T | U | V; export const b = g ` - ~~~~~ -!!! error TS2693: 'Stuff' only refers to a type, but is being used as a value here. - ~ -!!! error TS1005: ',' expected. hello ${stuff => stuff.x} + ~ +!!! error TS2339: Property 'x' does not exist on type '{}'. brave ${stuff => stuff.y} + ~ +!!! error TS2339: Property 'y' does not exist on type '{}'. world ${stuff => stuff.z} + ~ +!!! error TS2339: Property 'z' does not exist on type '{}'. `; declare let obj: { prop: (strs: TemplateStringsArray, x: (input: T) => T) => { - returnedObjProp: { - lastOne: T - } + returnedObjProp: T } } - export const c = obj["prop"] `${(input) => { ...input }}` - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2365: Operator '>' cannot be applied to types 'boolean' and 'string'. - ~~~~~ -!!! error TS2693: 'Stuff' only refers to a type, but is being used as a value here. - ~~~ -!!! error TS1128: Declaration or statement expected. - c.returnedProp.x; - ~~~~~~~~~~~~ -!!! error TS2339: Property 'returnedProp' does not exist on type 'boolean'. - c.returnedProp.y; - ~~~~~~~~~~~~ -!!! error TS2339: Property 'returnedProp' does not exist on type 'boolean'. - c.returnedProp.z; - ~~~~~~~~~~~~ -!!! error TS2339: Property 'returnedProp' does not exist on type 'boolean'. \ No newline at end of file + export let c = obj["prop"] `${(input) => ({ ...input })}` + c.returnedObjProp.x; + ~ +!!! error TS2339: Property 'x' does not exist on type '{}'. + c.returnedObjProp.y; + ~ +!!! error TS2339: Property 'y' does not exist on type '{}'. + c.returnedObjProp.z; + ~ +!!! error TS2339: Property 'z' does not exist on type '{}'. + + c = obj.prop `${(input) => ({ ...input })}` + c.returnedObjProp.x; + ~ +!!! error TS2339: Property 'x' does not exist on type '{}'. + c.returnedObjProp.y; + ~ +!!! error TS2339: Property 'y' does not exist on type '{}'. + c.returnedObjProp.z; + ~ +!!! error TS2339: Property 'z' does not exist on type '{}'. \ No newline at end of file diff --git a/tests/baselines/reference/taggedTemplatesWithTypeArguments1.js b/tests/baselines/reference/taggedTemplatesWithTypeArguments1.js index 629571b4db0..9d2474da8be 100644 --- a/tests/baselines/reference/taggedTemplatesWithTypeArguments1.js +++ b/tests/baselines/reference/taggedTemplatesWithTypeArguments1.js @@ -31,19 +31,22 @@ export const b = g ` declare let obj: { prop: (strs: TemplateStringsArray, x: (input: T) => T) => { - returnedObjProp: { - lastOne: T - } + returnedObjProp: T } } -export const c = obj["prop"] `${(input) => { ...input }}` -c.returnedProp.x; -c.returnedProp.y; -c.returnedProp.z; +export let c = obj["prop"] `${(input) => ({ ...input })}` +c.returnedObjProp.x; +c.returnedObjProp.y; +c.returnedObjProp.z; + +c = obj.prop `${(input) => ({ ...input })}` +c.returnedObjProp.x; +c.returnedObjProp.y; +c.returnedObjProp.z; //// [taggedTemplatesWithTypeArguments1.js] -export const a = f < Stuff > ` +export const a = f ` hello ${stuff => stuff.x} brave @@ -51,8 +54,7 @@ export const a = f < Stuff > ` world ${stuff => stuff.z} `; -export const b = g < Stuff, number, string, boolean; - > ` +export const b = g ` hello ${stuff => stuff.x} brave @@ -60,7 +62,11 @@ export const b = g < Stuff, number, string, boolean; world ${stuff => stuff.z} `; -export const c = obj["prop"] < Stuff > `${(input) => { input; }}`; -c.returnedProp.x; -c.returnedProp.y; -c.returnedProp.z; +export let c = obj["prop"] `${(input) => ({ ...input })}`; +c.returnedObjProp.x; +c.returnedObjProp.y; +c.returnedObjProp.z; +c = obj.prop `${(input) => ({ ...input })}`; +c.returnedObjProp.x; +c.returnedObjProp.y; +c.returnedObjProp.z; diff --git a/tests/baselines/reference/taggedTemplatesWithTypeArguments1.symbols b/tests/baselines/reference/taggedTemplatesWithTypeArguments1.symbols index 85170aad228..c90089e50cc 100644 --- a/tests/baselines/reference/taggedTemplatesWithTypeArguments1.symbols +++ b/tests/baselines/reference/taggedTemplatesWithTypeArguments1.symbols @@ -25,6 +25,7 @@ interface Stuff { export const a = f ` >a : Symbol(a, Decl(taggedTemplatesWithTypeArguments1.ts, 8, 12)) >f : Symbol(f, Decl(taggedTemplatesWithTypeArguments1.ts, 0, 0)) +>Stuff : Symbol(Stuff, Decl(taggedTemplatesWithTypeArguments1.ts, 0, 92)) hello ${stuff => stuff.x} @@ -74,9 +75,7 @@ declare function g( export const b = g ` >b : Symbol(b, Decl(taggedTemplatesWithTypeArguments1.ts, 21, 12)) >g : Symbol(g, Decl(taggedTemplatesWithTypeArguments1.ts, 15, 2)) ->number : Symbol(number, Decl(taggedTemplatesWithTypeArguments1.ts, 21, 25)) ->string : Symbol(string, Decl(taggedTemplatesWithTypeArguments1.ts, 21, 33)) ->boolean : Symbol(boolean, Decl(taggedTemplatesWithTypeArguments1.ts, 21, 41)) +>Stuff : Symbol(Stuff, Decl(taggedTemplatesWithTypeArguments1.ts, 0, 92)) hello ${stuff => stuff.x} @@ -108,29 +107,56 @@ declare let obj: { >T : Symbol(T, Decl(taggedTemplatesWithTypeArguments1.ts, 31, 11)) >T : Symbol(T, Decl(taggedTemplatesWithTypeArguments1.ts, 31, 11)) - returnedObjProp: { + returnedObjProp: T >returnedObjProp : Symbol(returnedObjProp, Decl(taggedTemplatesWithTypeArguments1.ts, 31, 66)) - - lastOne: T ->lastOne : Symbol(lastOne, Decl(taggedTemplatesWithTypeArguments1.ts, 32, 26)) >T : Symbol(T, Decl(taggedTemplatesWithTypeArguments1.ts, 31, 11)) - } } } -export const c = obj["prop"] `${(input) => { ...input }}` ->c : Symbol(c, Decl(taggedTemplatesWithTypeArguments1.ts, 38, 12)) +export let c = obj["prop"] `${(input) => ({ ...input })}` +>c : Symbol(c, Decl(taggedTemplatesWithTypeArguments1.ts, 36, 10)) >obj : Symbol(obj, Decl(taggedTemplatesWithTypeArguments1.ts, 30, 11)) >"prop" : Symbol(prop, Decl(taggedTemplatesWithTypeArguments1.ts, 30, 18)) ->input : Symbol(input, Decl(taggedTemplatesWithTypeArguments1.ts, 38, 40)) ->input : Symbol(input, Decl(taggedTemplatesWithTypeArguments1.ts, 38, 40)) +>Stuff : Symbol(Stuff, Decl(taggedTemplatesWithTypeArguments1.ts, 0, 92)) +>input : Symbol(input, Decl(taggedTemplatesWithTypeArguments1.ts, 36, 38)) +>input : Symbol(input, Decl(taggedTemplatesWithTypeArguments1.ts, 36, 38)) -c.returnedProp.x; ->c : Symbol(c, Decl(taggedTemplatesWithTypeArguments1.ts, 38, 12)) +c.returnedObjProp.x; +>c.returnedObjProp : Symbol(returnedObjProp, Decl(taggedTemplatesWithTypeArguments1.ts, 31, 66)) +>c : Symbol(c, Decl(taggedTemplatesWithTypeArguments1.ts, 36, 10)) +>returnedObjProp : Symbol(returnedObjProp, Decl(taggedTemplatesWithTypeArguments1.ts, 31, 66)) -c.returnedProp.y; ->c : Symbol(c, Decl(taggedTemplatesWithTypeArguments1.ts, 38, 12)) +c.returnedObjProp.y; +>c.returnedObjProp : Symbol(returnedObjProp, Decl(taggedTemplatesWithTypeArguments1.ts, 31, 66)) +>c : Symbol(c, Decl(taggedTemplatesWithTypeArguments1.ts, 36, 10)) +>returnedObjProp : Symbol(returnedObjProp, Decl(taggedTemplatesWithTypeArguments1.ts, 31, 66)) -c.returnedProp.z; ->c : Symbol(c, Decl(taggedTemplatesWithTypeArguments1.ts, 38, 12)) +c.returnedObjProp.z; +>c.returnedObjProp : Symbol(returnedObjProp, Decl(taggedTemplatesWithTypeArguments1.ts, 31, 66)) +>c : Symbol(c, Decl(taggedTemplatesWithTypeArguments1.ts, 36, 10)) +>returnedObjProp : Symbol(returnedObjProp, Decl(taggedTemplatesWithTypeArguments1.ts, 31, 66)) + +c = obj.prop `${(input) => ({ ...input })}` +>c : Symbol(c, Decl(taggedTemplatesWithTypeArguments1.ts, 36, 10)) +>obj.prop : Symbol(prop, Decl(taggedTemplatesWithTypeArguments1.ts, 30, 18)) +>obj : Symbol(obj, Decl(taggedTemplatesWithTypeArguments1.ts, 30, 11)) +>prop : Symbol(prop, Decl(taggedTemplatesWithTypeArguments1.ts, 30, 18)) +>Stuff : Symbol(Stuff, Decl(taggedTemplatesWithTypeArguments1.ts, 0, 92)) +>input : Symbol(input, Decl(taggedTemplatesWithTypeArguments1.ts, 41, 24)) +>input : Symbol(input, Decl(taggedTemplatesWithTypeArguments1.ts, 41, 24)) + +c.returnedObjProp.x; +>c.returnedObjProp : Symbol(returnedObjProp, Decl(taggedTemplatesWithTypeArguments1.ts, 31, 66)) +>c : Symbol(c, Decl(taggedTemplatesWithTypeArguments1.ts, 36, 10)) +>returnedObjProp : Symbol(returnedObjProp, Decl(taggedTemplatesWithTypeArguments1.ts, 31, 66)) + +c.returnedObjProp.y; +>c.returnedObjProp : Symbol(returnedObjProp, Decl(taggedTemplatesWithTypeArguments1.ts, 31, 66)) +>c : Symbol(c, Decl(taggedTemplatesWithTypeArguments1.ts, 36, 10)) +>returnedObjProp : Symbol(returnedObjProp, Decl(taggedTemplatesWithTypeArguments1.ts, 31, 66)) + +c.returnedObjProp.z; +>c.returnedObjProp : Symbol(returnedObjProp, Decl(taggedTemplatesWithTypeArguments1.ts, 31, 66)) +>c : Symbol(c, Decl(taggedTemplatesWithTypeArguments1.ts, 36, 10)) +>returnedObjProp : Symbol(returnedObjProp, Decl(taggedTemplatesWithTypeArguments1.ts, 31, 66)) diff --git a/tests/baselines/reference/taggedTemplatesWithTypeArguments1.types b/tests/baselines/reference/taggedTemplatesWithTypeArguments1.types index 9999bb67bd8..74f916d0efa 100644 --- a/tests/baselines/reference/taggedTemplatesWithTypeArguments1.types +++ b/tests/baselines/reference/taggedTemplatesWithTypeArguments1.types @@ -23,35 +23,34 @@ interface Stuff { } export const a = f ` ->a : boolean ->f ` hello ${stuff => stuff.x} brave ${stuff => stuff.y} world ${stuff => stuff.z}` : boolean ->fa : void +>f ` hello ${stuff => stuff.x} brave ${stuff => stuff.y} world ${stuff => stuff.z}` : void >f : (strs: TemplateStringsArray, ...callbacks: ((x: T) => any)[]) => void ->Stuff : any +>Stuff : Stuff >` hello ${stuff => stuff.x} brave ${stuff => stuff.y} world ${stuff => stuff.z}` : string hello ${stuff => stuff.x} ->stuff => stuff.x : (stuff: any) => any ->stuff : any +>stuff => stuff.x : (stuff: {}) => any +>stuff : {} >stuff.x : any ->stuff : any +>stuff : {} >x : any brave ${stuff => stuff.y} ->stuff => stuff.y : (stuff: any) => any ->stuff : any +>stuff => stuff.y : (stuff: {}) => any +>stuff : {} >stuff.y : any ->stuff : any +>stuff : {} >y : any world ${stuff => stuff.z} ->stuff => stuff.z : (stuff: any) => any ->stuff : any +>stuff => stuff.z : (stuff: {}) => any +>stuff : {} >stuff.z : any ->stuff : any +>stuff : {} >z : any `; @@ -85,48 +84,43 @@ declare function g( >V : V export const b = g ` ->b : boolean ->gb : any +>g ` hello ${stuff => stuff.x} brave ${stuff => stuff.y} world ${stuff => stuff.z}` : any >g : (strs: TemplateStringsArray, t: (i: Input) => T, u: (i: Input) => U, v: (i: Input) => V) => T | U | V ->Stuff : any ->number : any ->string : any ->boolean : any ->> ` hello ${stuff => stuff.x} brave ${stuff => stuff.y} world ${stuff => stuff.z}` : boolean -> : any +>Stuff : Stuff >` hello ${stuff => stuff.x} brave ${stuff => stuff.y} world ${stuff => stuff.z}` : string hello ${stuff => stuff.x} ->stuff => stuff.x : (stuff: any) => any ->stuff : any +>stuff => stuff.x : (stuff: {}) => any +>stuff : {} >stuff.x : any ->stuff : any +>stuff : {} >x : any brave ${stuff => stuff.y} ->stuff => stuff.y : (stuff: any) => any ->stuff : any +>stuff => stuff.y : (stuff: {}) => any +>stuff : {} >stuff.y : any ->stuff : any +>stuff : {} >y : any world ${stuff => stuff.z} ->stuff => stuff.z : (stuff: any) => any ->stuff : any +>stuff => stuff.z : (stuff: {}) => any +>stuff : {} >stuff.z : any ->stuff : any +>stuff : {} >z : any `; declare let obj: { ->obj : { prop: (strs: TemplateStringsArray, x: (input: T) => T) => { returnedObjProp: { lastOne: T; }; }; } +>obj : { prop: (strs: TemplateStringsArray, x: (input: T) => T) => { returnedObjProp: T; }; } prop: (strs: TemplateStringsArray, x: (input: T) => T) => { ->prop : (strs: TemplateStringsArray, x: (input: T) => T) => { returnedObjProp: { lastOne: T; }; } +>prop : (strs: TemplateStringsArray, x: (input: T) => T) => { returnedObjProp: T; } >T : T >strs : TemplateStringsArray >TemplateStringsArray : TemplateStringsArray @@ -135,47 +129,80 @@ declare let obj: { >T : T >T : T - returnedObjProp: { ->returnedObjProp : { lastOne: T; } - - lastOne: T ->lastOne : T + returnedObjProp: T +>returnedObjProp : T >T : T - } } } -export const c = obj["prop"] `${(input) => { ...input }}` ->c : boolean ->obj["prop"] `${(input) => { ...input }}` : boolean ->obj["prop"]obj["prop"] : (strs: TemplateStringsArray, x: (input: T) => T) => { returnedObjProp: { lastOne: T; }; } ->obj : { prop: (strs: TemplateStringsArray, x: (input: T) => T) => { returnedObjProp: { lastOne: T; }; }; } +export let c = obj["prop"] `${(input) => ({ ...input })}` +>c : { returnedObjProp: {}; } +>obj["prop"] `${(input) => ({ ...input })}` : { returnedObjProp: {}; } +>obj["prop"] : (strs: TemplateStringsArray, x: (input: T) => T) => { returnedObjProp: T; } +>obj : { prop: (strs: TemplateStringsArray, x: (input: T) => T) => { returnedObjProp: T; }; } >"prop" : "prop" ->Stuff : any ->`${(input) => { ...input }}` : string ->(input) => { ...input } : (input: any) => void ->input : any ->input : any +>Stuff : Stuff +>`${(input) => ({ ...input })}` : string +>(input) => ({ ...input }) : (input: {}) => {} +>input : {} +>({ ...input }) : {} +>{ ...input } : {} +>input : {} -c.returnedProp.x; ->c.returnedProp.x : any ->c.returnedProp : any ->c : boolean ->returnedProp : any +c.returnedObjProp.x; +>c.returnedObjProp.x : any +>c.returnedObjProp : {} +>c : { returnedObjProp: {}; } +>returnedObjProp : {} >x : any -c.returnedProp.y; ->c.returnedProp.y : any ->c.returnedProp : any ->c : boolean ->returnedProp : any +c.returnedObjProp.y; +>c.returnedObjProp.y : any +>c.returnedObjProp : {} +>c : { returnedObjProp: {}; } +>returnedObjProp : {} >y : any -c.returnedProp.z; ->c.returnedProp.z : any ->c.returnedProp : any ->c : boolean ->returnedProp : any +c.returnedObjProp.z; +>c.returnedObjProp.z : any +>c.returnedObjProp : {} +>c : { returnedObjProp: {}; } +>returnedObjProp : {} +>z : any + +c = obj.prop `${(input) => ({ ...input })}` +>c = obj.prop `${(input) => ({ ...input })}` : { returnedObjProp: {}; } +>c : { returnedObjProp: {}; } +>obj.prop `${(input) => ({ ...input })}` : { returnedObjProp: {}; } +>obj.prop : (strs: TemplateStringsArray, x: (input: T) => T) => { returnedObjProp: T; } +>obj : { prop: (strs: TemplateStringsArray, x: (input: T) => T) => { returnedObjProp: T; }; } +>prop : (strs: TemplateStringsArray, x: (input: T) => T) => { returnedObjProp: T; } +>Stuff : Stuff +>`${(input) => ({ ...input })}` : string +>(input) => ({ ...input }) : (input: {}) => {} +>input : {} +>({ ...input }) : {} +>{ ...input } : {} +>input : {} + +c.returnedObjProp.x; +>c.returnedObjProp.x : any +>c.returnedObjProp : {} +>c : { returnedObjProp: {}; } +>returnedObjProp : {} +>x : any + +c.returnedObjProp.y; +>c.returnedObjProp.y : any +>c.returnedObjProp : {} +>c : { returnedObjProp: {}; } +>returnedObjProp : {} +>y : any + +c.returnedObjProp.z; +>c.returnedObjProp.z : any +>c.returnedObjProp : {} +>c : { returnedObjProp: {}; } +>returnedObjProp : {} >z : any