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 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 33x 33x 33x 33x 33x 33x 33x 33x 10x 10x 33x 33x 35x 35x 33x 33x 33x 59x 31x 59x 28x 28x 59x 33x 33x 10x 10x 33x 33x 33x 1x | import {ExpressionNode} from "../../nodes"; import * as Expressions from "../../2_statements/expressions"; import {Source} from "./source"; import {Let} from "./let"; import {Cond} from "./cond"; import {AbstractType} from "../../types/basic/_abstract_type"; import {SyntaxInput} from "../_syntax_input"; export class CondBody { public runSyntax( node: ExpressionNode | undefined, input: SyntaxInput): AbstractType | undefined { if (node === undefined) { return undefined; } let scoped = false; const l = node.findDirectExpression(Expressions.Let); if (l) { scoped = new Let().runSyntax(l, input); } for (const s of node.findDirectExpressions(Expressions.Cond)) { new Cond().runSyntax(s, input); } let type: AbstractType | undefined = undefined; for (const s of node.findDirectExpressions(Expressions.Source)) { if (type === undefined) { type = new Source().runSyntax(s, input); } else { new Source().runSyntax(s, input); } } if (scoped === true) { input.scope.pop(node.getLastToken().getEnd()); } return type; } } |