(functionName, args)
| 580 | } |
| 581 | |
| 582 | inferArgumentTypesIfNeeded(functionName, args) { |
| 583 | // ensure arguments are filled in, so when we lookup return type, we already can infer it |
| 584 | for (let i = 0; i < args.length; i++) { |
| 585 | if (!this.needsArgumentType(functionName, i)) continue; |
| 586 | const type = this.getType(args[i]); |
| 587 | if (!type) { |
| 588 | throw this.astErrorOutput(`Unable to infer argument ${i}`, args[i]); |
| 589 | } |
| 590 | this.assignArgumentType(functionName, i, type); |
| 591 | } |
| 592 | } |
| 593 | |
| 594 | isAstMathVariable(ast) { |
| 595 | const mathProperties = [ |
no test coverage detected