diff --git a/tests/baselines/reference/typeFromPropertyAssignment9.symbols b/tests/baselines/reference/typeFromPropertyAssignment9.symbols new file mode 100644 index 00000000000..966d4d5a5c0 --- /dev/null +++ b/tests/baselines/reference/typeFromPropertyAssignment9.symbols @@ -0,0 +1,39 @@ +=== tests/cases/conformance/salsa/a.js === +// TODO: JSDoc would provide a contextual type, so ... I should test that +// TODO: Try initializer of function or class I guess (though classes aren't context sensitive) +var my = my || {}; +>my : Symbol(my, Decl(a.js, 2, 3), Decl(a.js, 2, 18)) +>my : Symbol(my, Decl(a.js, 2, 3), Decl(a.js, 2, 18)) + +my.m = function() { +>my.m : Symbol(m, Decl(a.js, 2, 18)) +>my : Symbol(my, Decl(a.js, 2, 3), Decl(a.js, 2, 18)) +>m : Symbol(m, Decl(a.js, 2, 18)) + + return 1; +} +my.p = {}; +>my.p : Symbol(p, Decl(a.js, 5, 1)) +>my : Symbol(my, Decl(a.js, 2, 3), Decl(a.js, 2, 18)) +>p : Symbol(p, Decl(a.js, 5, 1)) + +my.n = 1; +>my.n : Symbol(n, Decl(a.js, 6, 10)) +>my : Symbol(my, Decl(a.js, 2, 3), Decl(a.js, 2, 18)) +>n : Symbol(n, Decl(a.js, 6, 10)) + +my.m +>my.m : Symbol(m, Decl(a.js, 2, 18)) +>my : Symbol(my, Decl(a.js, 2, 3), Decl(a.js, 2, 18)) +>m : Symbol(m, Decl(a.js, 2, 18)) + +my.p +>my.p : Symbol(p, Decl(a.js, 5, 1)) +>my : Symbol(my, Decl(a.js, 2, 3), Decl(a.js, 2, 18)) +>p : Symbol(p, Decl(a.js, 5, 1)) + +my.n +>my.n : Symbol(n, Decl(a.js, 6, 10)) +>my : Symbol(my, Decl(a.js, 2, 3), Decl(a.js, 2, 18)) +>n : Symbol(n, Decl(a.js, 6, 10)) + diff --git a/tests/baselines/reference/typeFromPropertyAssignment9.types b/tests/baselines/reference/typeFromPropertyAssignment9.types new file mode 100644 index 00000000000..5d6c03f72b0 --- /dev/null +++ b/tests/baselines/reference/typeFromPropertyAssignment9.types @@ -0,0 +1,48 @@ +=== tests/cases/conformance/salsa/a.js === +// TODO: JSDoc would provide a contextual type, so ... I should test that +// TODO: Try initializer of function or class I guess (though classes aren't context sensitive) +var my = my || {}; +>my : { [x: string]: any; m: () => number; p: { [x: string]: any; }; n: number; } +>my || {} : { [x: string]: any; m: () => number; p: { [x: string]: any; }; n: number; } +>my : { [x: string]: any; m: () => number; p: { [x: string]: any; }; n: number; } +>{} : { [x: string]: any; m: () => number; p: { [x: string]: any; }; n: number; } + +my.m = function() { +>my.m = function() { return 1;} : () => number +>my.m : () => number +>my : { [x: string]: any; m: () => number; p: { [x: string]: any; }; n: number; } +>m : () => number +>function() { return 1;} : () => number + + return 1; +>1 : 1 +} +my.p = {}; +>my.p = {} : { [x: string]: any; } +>my.p : { [x: string]: any; } +>my : { [x: string]: any; m: () => number; p: { [x: string]: any; }; n: number; } +>p : { [x: string]: any; } +>{} : { [x: string]: any; } + +my.n = 1; +>my.n = 1 : 1 +>my.n : number +>my : { [x: string]: any; m: () => number; p: { [x: string]: any; }; n: number; } +>n : number +>1 : 1 + +my.m +>my.m : () => number +>my : { [x: string]: any; m: () => number; p: { [x: string]: any; }; n: number; } +>m : () => number + +my.p +>my.p : { [x: string]: any; } +>my : { [x: string]: any; m: () => number; p: { [x: string]: any; }; n: number; } +>p : { [x: string]: any; } + +my.n +>my.n : number +>my : { [x: string]: any; m: () => number; p: { [x: string]: any; }; n: number; } +>n : number + diff --git a/tests/cases/conformance/salsa/typeFromPropertyAssignment9.ts b/tests/cases/conformance/salsa/typeFromPropertyAssignment9.ts new file mode 100644 index 00000000000..5fac39e27a8 --- /dev/null +++ b/tests/cases/conformance/salsa/typeFromPropertyAssignment9.ts @@ -0,0 +1,17 @@ +// @noEmit: true +// @allowJs: true +// @checkJs: true +// @target: es6 +// @Filename: a.js + +// TODO: JSDoc would provide a contextual type, so ... I should test that +// TODO: Try initializer of function or class I guess (though classes aren't context sensitive) +var my = my || {}; +my.m = function() { + return 1; +} +my.p = {}; +my.n = 1; +my.m +my.p +my.n