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 16x 16x 16x 16x 16x 1x 16x 15x 1x 1x 1x 1x 1x 1x 1x 15x 15x 16x 14x 14x 16x 16x 10x 10x 16x 1x 1x 15x 15x 16x 1x 1x 15x 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); } } } |