Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 18x 18x 18x 18x 18x 1x 18x 17x 1x 1x 1x 1x 1x 1x 1x 17x 18x 1x 1x 18x 18x 2x 2x 2x 2x 2x 17x 17x 18x 13x 13x 18x 1x | import * as Expressions from "../../2_statements/expressions";
import {StatementNode} from "../../nodes";
import {Source} from "../expressions/source";
import {FieldChain} from "../expressions/field_chain";
import {ReferenceType} from "../_reference";
import {StatementSyntax} from "../_statement_syntax";
import {Version} from "../../../version";
import {SyntaxInput, syntaxIssue} from "../_syntax_input";
import {FunctionParameters} from "../expressions/function_parameters";
export class CallFunction implements StatementSyntax {
public runSyntax(node: StatementNode, input: SyntaxInput): void {
// todo, lots of work here, similar to receive.ts
const name = node.findFirstExpression(Expressions.FunctionName);
const chain = name?.findFirstExpression(Expressions.FieldChain);
if (chain) {
FieldChain.runSyntax(chain, input, ReferenceType.DataReadReference);
} else if (input.scope.getVersion() === Version.Cloud
&& node.findDirectExpression(Expressions.Destination) === undefined) {
const functionName = name?.concatTokens().replace(/'/g, "");
if (input.scope.findFunctionModule(functionName) === undefined) {
const message = `Function module "${functionName}" not found/released`;
input.issues.push(syntaxIssue(input, node.getFirstToken(), message));
return;
}
}
for (const s of node.findDirectExpressions(Expressions.SimpleSource2)) {
Source.runSyntax(s, input);
}
for (const s of node.findDirectExpressions(Expressions.Source)) {
Source.runSyntax(s, input);
}
for (const d of node.findDirectExpressions(Expressions.Destination)) {
const source = d.findFirstExpression(Expressions.Source);
if (source) {
Source.runSyntax(source, input);
}
}
const fp = node.findDirectExpression(Expressions.FunctionParameters);
if (fp) {
FunctionParameters.runSyntax(fp, input);
}
}
}
|