Lines Matching defs:context

64 static std::unique_ptr<Expression> simplify_vector_equality(const Context& context,
77 return Literal::MakeBool(context, left.fLine, equality);
86 static std::unique_ptr<Expression> simplify_vector(const Context& context,
95 if (std::unique_ptr<Expression> result = simplify_vector_equality(context, left, op, right)) {
128 return ConstructorCompound::Make(context, left.fLine, type, std::move(args));
131 static std::unique_ptr<Expression> cast_expression(const Context& context,
136 return Constructor::Convert(context, expr.fLine, type, std::move(ctorArgs));
179 static bool error_on_divide_by_zero(const Context& context, int line, Operator op,
187 context.fErrors->error(line, "division by zero");
231 static std::unique_ptr<Expression> simplify_no_op_arithmetic(const Context& context,
239 return cast_expression(context, left, resultType);
242 return cast_expression(context, right, resultType);
248 return cast_expression(context, left, resultType);
251 return cast_expression(context, right, resultType);
254 return cast_expression(context, right, resultType);
257 return cast_expression(context, left, resultType);
263 return cast_expression(context, left, resultType);
266 if (std::unique_ptr<Expression> val = cast_expression(context, right, resultType)) {
267 return PrefixExpression::Make(context, Token::Kind::TK_MINUS, std::move(val));
274 return cast_expression(context, left, resultType);
281 if (std::unique_ptr<Expression> var = cast_expression(context, left, resultType)) {
291 if (std::unique_ptr<Expression> var = cast_expression(context, left, resultType)) {
333 std::unique_ptr<Expression> ConstantFolder::Simplify(const Context& context,
369 return Literal::MakeBool(context, line, result);
392 return Literal::MakeBool(context, leftExpr.fLine, /*value=*/true);
398 return Literal::MakeBool(context, leftExpr.fLine, /*value=*/false);
401 if (error_on_divide_by_zero(context, line, op, *right)) {
410 std::unique_ptr<Expression> expr = simplify_no_op_arithmetic(context, *left, op, *right,
440 context.fErrors->error(line, "arithmetic overflow");
446 context.fErrors->error(line, "arithmetic overflow");
465 context.fErrors->error(line, "shift value out of range");
471 context.fErrors->error(line, "shift value out of range");
506 return simplify_vector(context, *left, op, *right);
509 return simplify_vector(context, *left, op, *right);
512 return simplify_vector_equality(context, *left, op, *right);
520 return simplify_vector(context, *left, op, ConstructorSplat(*right, left->type()));
523 return simplify_vector(context, *left, op, ConstructorSplat(*right, left->type()));
526 return simplify_vector_equality(context, *left, op,
535 return simplify_vector(context, ConstructorSplat(*left, right->type()), op, *right);
538 return simplify_vector(context, ConstructorSplat(*left, right->type()), op, *right);
541 return simplify_vector_equality(context, ConstructorSplat(*left, right->type()),
568 return Literal::MakeBool(context, line, equality);