arrow-functions.js   [plain text]


load("./driver/driver.js");

let foo = (x) => x;
let bar = abc => abc;
let baz = abc => { return abc; };
let jaz = abc => { };

function wrapper(b) {
    let baz = (x) => x;
    baz(b);

    let foo = yyy => yyy;
    foo(b);
}

// ====== End test cases ======

foo(20);
var types = returnTypeFor(foo);
assert(types.globalTypeSet.displayTypeName === T.Integer, "Function 'foo' should return 'Integer'");

bar("hello");
types = returnTypeFor(bar);
assert(types.globalTypeSet.displayTypeName === T.String, "Function 'bar' should return 'String'");

baz("hello");
types = returnTypeFor(baz);
assert(types.globalTypeSet.displayTypeName === T.String, "Function 'baz' should return 'String'");

jaz("hello");
types = returnTypeFor(jaz);
assert(types.globalTypeSet.displayTypeName === T.Undefined, "Function 'jaz' should return 'Undefined'");

wrapper("hello");
types = findTypeForExpression(wrapper, "x)"); 
assert(types.instructionTypeSet.displayTypeName === T.String, "Parameter 'x' should be 'String'");

types = findTypeForExpression(wrapper, "yyy =>");
assert(types.instructionTypeSet.displayTypeName === T.String, "Parameter 'yyy' should be 'String'");