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 15x 15x 15x 15x 15x 1x 15x 14x 1x 1x 1x 1x 1x 1x 1x 14x 14x 15x 13x 13x 15x 15x 9x 9x 15x 1x 1x 14x 14x 15x 1x 1x 14x 1x | import * as Expressions from "../../2_statements/expressions"; import {StatementNode} from "../../nodes"; import {Source} from "../expressions/source"; import {Target} from "../expressions/target"; 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"; 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) { new 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; } } // just recurse for (const s of node.findAllExpressions(Expressions.Source)) { new Source().runSyntax(s, input); } for (const s of node.findAllExpressions(Expressions.SimpleSource3)) { new Source().runSyntax(s, input); } for (const t of node.findAllExpressions(Expressions.Target)) { new Target().runSyntax(t, input); } for (const s of node.findDirectExpressions(Expressions.SimpleSource2)) { new Source().runSyntax(s, input); } const exceptions = node.findFirstExpression(Expressions.ParameterException); for (const s of exceptions?.findAllExpressions(Expressions.SimpleFieldChain) || []) { new FieldChain().runSyntax(s, input, ReferenceType.DataReadReference); } } } |