Lines Matching refs:Expression
26 static std::unique_ptr<Expression> simplify_negation(const Context& context,
27 const Expression& originalExpr) {
28 const Expression* value = ConstantFolder::GetConstantValueForVariable(originalExpr);
30 case Expression::Kind::kLiteral: {
40 case Expression::Kind::kPrefix: {
48 case Expression::Kind::kConstructorArray:
57 case Expression::Kind::kConstructorDiagonalMatrix:
61 if (std::unique_ptr<Expression> simplified = simplify_negation(context,
69 case Expression::Kind::kConstructorSplat:
73 if (std::unique_ptr<Expression> simplified = simplify_negation(context,
81 case Expression::Kind::kConstructorCompound:
99 for (const std::unique_ptr<Expression>& expr : array) {
101 if (std::unique_ptr<Expression> simplified = simplify_negation(context, *expr)) {
111 static std::unique_ptr<Expression> negate_operand(const Context& context,
112 std::unique_ptr<Expression> value) {
114 if (std::unique_ptr<Expression> simplified = simplify_negation(context, *value)) {
122 static std::unique_ptr<Expression> logical_not_operand(const Context& context,
123 std::unique_ptr<Expression> operand) {
124 const Expression* value = ConstantFolder::GetConstantValueForVariable(*operand);
126 case Expression::Kind::kLiteral: {
132 case Expression::Kind::kPrefix: {
148 std::unique_ptr<Expression> PrefixExpression::Convert(const Context& context,
150 std::unique_ptr<Expression> base) {
222 std::unique_ptr<Expression> PrefixExpression::Make(const Context& context, Operator op,
223 std::unique_ptr<Expression> base) {