| var findTypeForExpression = $vm.findTypeForExpression; |
| var returnTypeFor = $vm.returnTypeFor; |
| |
| 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'"); |