Test:basic var x = x || {} support in JS

This commit is contained in:
Nathan Shively-Sanders
2018-02-07 11:32:20 -08:00
parent 9e8d59ca14
commit a51bce0ab5
3 changed files with 104 additions and 0 deletions

View File

@@ -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))

View File

@@ -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

View File

@@ -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