protected override Boolean handleDo(DoStatementNode doStatement, HashSet <StatementNode> visited) { if (!handleStatement(doStatement.Statement, visited) || !ReachabilityChecker.isEndPointReachable(doStatement.Statement)) { return(Boolean.FALSE); } AssignmentState state = expressionChecker.handleExpression(doStatement.Condition, visited, true); switch (state) { case Assigned: case AssignedAfterFalse: return(Boolean.FALSE); case AssignedAfterTrue: return(Boolean.TRUE); default: var cinfo = doStatement.Condition.getUserData(typeof(ExpressionInfo)); if (cinfo.IsConstant) { return((Boolean)cinfo.Value); } break; } return(Boolean.TRUE); }
public virtual Value evaluate(Context cx, DoStatementNode node) { output("<DoStatementNode position=\"" + node.pos() + "\">"); indent_Renamed_Field++; if (node.expr != null) { node.expr.evaluate(cx, this); } if (node.statements != null) { node.statements.evaluate(cx, this); } indent_Renamed_Field--; output("</DoStatementNode>"); return(null); }
protected override Void handleDo(DoStatementNode doStatement, Void source) { try { context.MemberResolver.enterScope(); handleStatement(doStatement.Statement, source); } finally { context.MemberResolver.leaveScope(); } var condition = doStatement.Condition; this.ExpressionValidator.handleExpression(condition, null, true); ValidationHelper.setBoxing(context, context.TypeSystem.BooleanType, condition); var info = condition.getUserData(typeof(ExpressionInfo)); if (info == null || ValidationHelper.getType(context, condition) != context.TypeSystem.BooleanType) { throw context.error(CompileErrorId.NoImplicitConversion, condition, BytecodeHelper.getDisplayName(info == null ? null : info.Type), BytecodeHelper.getDisplayName(context.TypeSystem.BooleanType)); } return(null); }
public virtual Value evaluate(Context cx, DoStatementNode node) { output("<DoStatementNode position=\"" + node.pos() + "\">"); indent_Renamed_Field++; if (node.expr != null) { node.expr.evaluate(cx, this); } if (node.statements != null) { node.statements.evaluate(cx, this); } indent_Renamed_Field--; output("</DoStatementNode>"); return null; }
protected override Void handleDo(DoStatementNode doStatement, Set <TypeInfo> dependencies) { expressionHandler.handleExpression(doStatement.Condition, dependencies, true); handleStatement(doStatement.Statement, dependencies); return(null); }