From c6a77514e80c13ea57b27ce0a57b5a4e5d2c4fb5 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Wed, 29 Nov 2017 11:37:35 -0800 Subject: [PATCH] Test:js object literal assignment as declaration --- .../jsObjectsMarkedAsOpenEnded.symbols | 4 ++++ .../jsObjectsMarkedAsOpenEnded.types | 16 ++++++------- .../typeFromPropertyAssignment7.symbols | 18 +++++++++++++++ .../typeFromPropertyAssignment7.types | 23 +++++++++++++++++++ .../salsa/typeFromPropertyAssignment7.ts | 10 ++++++++ 5 files changed, 63 insertions(+), 8 deletions(-) create mode 100644 tests/baselines/reference/typeFromPropertyAssignment7.symbols create mode 100644 tests/baselines/reference/typeFromPropertyAssignment7.types create mode 100644 tests/cases/conformance/salsa/typeFromPropertyAssignment7.ts diff --git a/tests/baselines/reference/jsObjectsMarkedAsOpenEnded.symbols b/tests/baselines/reference/jsObjectsMarkedAsOpenEnded.symbols index f4dcf96b04b..57e05c273b4 100644 --- a/tests/baselines/reference/jsObjectsMarkedAsOpenEnded.symbols +++ b/tests/baselines/reference/jsObjectsMarkedAsOpenEnded.symbols @@ -3,7 +3,9 @@ var variable = {}; >variable : Symbol(variable, Decl(a.js, 0, 3)) variable.a = 0; +>variable.a : Symbol(a, Decl(a.js, 0, 18)) >variable : Symbol(variable, Decl(a.js, 0, 3)) +>a : Symbol(a, Decl(a.js, 0, 18)) class C { >C : Symbol(C, Decl(a.js, 1, 15)) @@ -49,7 +51,9 @@ function getObj() { === tests/cases/conformance/salsa/b.ts === variable.a = 1; +>variable.a : Symbol(a, Decl(a.js, 0, 18)) >variable : Symbol(variable, Decl(a.js, 0, 3)) +>a : Symbol(a, Decl(a.js, 0, 18)) (new C()).member.a = 1; >(new C()).member : Symbol(C.member, Decl(a.js, 5, 19)) diff --git a/tests/baselines/reference/jsObjectsMarkedAsOpenEnded.types b/tests/baselines/reference/jsObjectsMarkedAsOpenEnded.types index d4f2f66e7ed..69d00b6aa79 100644 --- a/tests/baselines/reference/jsObjectsMarkedAsOpenEnded.types +++ b/tests/baselines/reference/jsObjectsMarkedAsOpenEnded.types @@ -1,13 +1,13 @@ === tests/cases/conformance/salsa/a.js === var variable = {}; ->variable : { [x: string]: any; } ->{} : { [x: string]: any; } +>variable : { [x: string]: any; a: number; } +>{} : { [x: string]: any; a: number; } variable.a = 0; >variable.a = 0 : 0 ->variable.a : any ->variable : { [x: string]: any; } ->a : any +>variable.a : number +>variable : { [x: string]: any; a: number; } +>a : number >0 : 0 class C { @@ -71,9 +71,9 @@ function getObj() { === tests/cases/conformance/salsa/b.ts === variable.a = 1; >variable.a = 1 : 1 ->variable.a : any ->variable : { [x: string]: any; } ->a : any +>variable.a : number +>variable : { [x: string]: any; a: number; } +>a : number >1 : 1 (new C()).member.a = 1; diff --git a/tests/baselines/reference/typeFromPropertyAssignment7.symbols b/tests/baselines/reference/typeFromPropertyAssignment7.symbols new file mode 100644 index 00000000000..1aa0e047523 --- /dev/null +++ b/tests/baselines/reference/typeFromPropertyAssignment7.symbols @@ -0,0 +1,18 @@ +=== tests/cases/conformance/salsa/a.js === +var obj = {}; +>obj : Symbol(obj, Decl(a.js, 0, 3), Decl(a.js, 0, 13)) + +obj.method = function (hunch) { +>obj.method : Symbol(method, Decl(a.js, 0, 13)) +>obj : Symbol(obj, Decl(a.js, 0, 3), Decl(a.js, 0, 13)) +>method : Symbol(method, Decl(a.js, 0, 13)) +>hunch : Symbol(hunch, Decl(a.js, 1, 23)) + + return true; +} +var b = obj.method(); +>b : Symbol(b, Decl(a.js, 4, 3)) +>obj.method : Symbol(method, Decl(a.js, 0, 13)) +>obj : Symbol(obj, Decl(a.js, 0, 3), Decl(a.js, 0, 13)) +>method : Symbol(method, Decl(a.js, 0, 13)) + diff --git a/tests/baselines/reference/typeFromPropertyAssignment7.types b/tests/baselines/reference/typeFromPropertyAssignment7.types new file mode 100644 index 00000000000..d53c5eb1a2a --- /dev/null +++ b/tests/baselines/reference/typeFromPropertyAssignment7.types @@ -0,0 +1,23 @@ +=== tests/cases/conformance/salsa/a.js === +var obj = {}; +>obj : { [x: string]: any; method: (hunch: any) => boolean; } +>{} : { [x: string]: any; method: (hunch: any) => boolean; } + +obj.method = function (hunch) { +>obj.method = function (hunch) { return true;} : (hunch: any) => boolean +>obj.method : (hunch: any) => boolean +>obj : { [x: string]: any; method: (hunch: any) => boolean; } +>method : (hunch: any) => boolean +>function (hunch) { return true;} : (hunch: any) => boolean +>hunch : any + + return true; +>true : true +} +var b = obj.method(); +>b : boolean +>obj.method() : boolean +>obj.method : (hunch: any) => boolean +>obj : { [x: string]: any; method: (hunch: any) => boolean; } +>method : (hunch: any) => boolean + diff --git a/tests/cases/conformance/salsa/typeFromPropertyAssignment7.ts b/tests/cases/conformance/salsa/typeFromPropertyAssignment7.ts new file mode 100644 index 00000000000..7e42915ddcb --- /dev/null +++ b/tests/cases/conformance/salsa/typeFromPropertyAssignment7.ts @@ -0,0 +1,10 @@ +// @noEmit: true +// @allowJs: true +// @checkJs: true +// @target: es6 +// @Filename: a.js +var obj = {}; +obj.method = function (hunch) { + return true; +} +var b = obj.method();