65 lines
1.0 KiB
JavaScript
65 lines
1.0 KiB
JavaScript
// refinements of bound vars (closed-over locals)
|
|
// should have the same lifetimes as heap objects.
|
|
|
|
var x : ?string = "xxx";
|
|
|
|
var tests =
|
|
[
|
|
function() {
|
|
var y : string = x; // not ok
|
|
},
|
|
|
|
function() {
|
|
if (x != null) {
|
|
var y : string = x; // ok
|
|
}
|
|
},
|
|
|
|
function() {
|
|
if (x == null) {} else {
|
|
var y : string = x; // ok
|
|
}
|
|
},
|
|
|
|
function() {
|
|
if (x == null)
|
|
return;
|
|
var y : string = x; // ok
|
|
},
|
|
|
|
function() {
|
|
if (!(x != null)) {} else {
|
|
var y : string = x; // ok
|
|
}
|
|
},
|
|
|
|
/* TODO we actually allow this currently; fix
|
|
// requires further remedial work in Env
|
|
function() {
|
|
if (x != null) {
|
|
alert("");
|
|
var y : string = x; // not ok
|
|
}
|
|
},
|
|
*/
|
|
function() {
|
|
if (x != null) {}
|
|
var y : string = x; // not ok
|
|
},
|
|
|
|
function() {
|
|
if (x != null) {
|
|
} else {
|
|
var y : string = x; // not ok
|
|
}
|
|
},
|
|
|
|
function() {
|
|
var y : string = x != null ? x : ""; // ok
|
|
},
|
|
|
|
function() {
|
|
var y : string = x || ""; // ok
|
|
},
|
|
];
|