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 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 370x 370x 370x 370x 370x 52x 52x 370x 370x 370x 370x 370x 370x 3x 3x 3x 3x 370x 366x 370x 1x 1x 366x 370x 366x 366x 370x 1x 1x 370x 370x 1x | import * as Expressions from "../../2_statements/expressions"; import {StatementNode} from "../../nodes"; import {Source} from "../expressions/source"; import {Target} from "../expressions/target"; import {StatementSyntax} from "../_statement_syntax"; import {Dynamic} from "../expressions/dynamic"; import {TypeUtils} from "../_type_utils"; import {FieldChain} from "../expressions/field_chain"; import {ReferenceType} from "../_reference"; import {SyntaxInput, syntaxIssue} from "../_syntax_input"; export class Write implements StatementSyntax { public runSyntax(node: StatementNode, input: SyntaxInput): void { // todo, more let second = node.getChildren()[1]; if (second.get() instanceof Expressions.WriteOffsetLength) { second = node.getChildren()[2]; } for (const s of node.findDirectExpressions(Expressions.Source)) { const type = Source.runSyntax(s, input); if (s === second && new TypeUtils(input.scope).isCharLike(type) === false && new TypeUtils(input.scope).isHexLike(type) === false) { const message = "Source not character like"; input.issues.push(syntaxIssue(input, s.getFirstToken(), message)); return; } } for (const s of node.findDirectExpression(Expressions.WriteOffsetLength)?.findDirectExpressions(Expressions.SimpleFieldChain2) || []) { FieldChain.runSyntax(s, input, ReferenceType.DataReadReference); } for (const s of node.findAllExpressions(Expressions.Dynamic)) { Dynamic.runSyntax(s, input); } const target = node.findDirectExpression(Expressions.Target); if (target) { Target.runSyntax(target, input); } } } |