29 if (left.kind() != right.kind() || !left.type().matches(right.type())) {
37 switch (left.kind()) {
41 case Expression::Kind::kConstructorArray:
42 case Expression::Kind::kConstructorArrayCast:
43 case Expression::Kind::kConstructorCompound:
44 case Expression::Kind::kConstructorCompoundCast:
45 case Expression::Kind::kConstructorDiagonalMatrix:
46 case Expression::Kind::kConstructorMatrixResize:
47 case Expression::Kind::kConstructorScalarCast:
48 case Expression::Kind::kConstructorStruct:
49 case Expression::Kind::kConstructorSplat: {
50 if (left.kind() != right.kind()) {
57 if (leftSpan.size() != rightSpan.size()) {
60 for (
size_t index = 0; index < leftSpan.size(); ++index) {
67 case Expression::Kind::kFieldAccess:
78 case Expression::Kind::kPrefix:
84 case Expression::Kind::kSwizzle:
85 return left.as<
Swizzle>().components() == right.as<
Swizzle>().components() &&
88 case Expression::Kind::kVariableReference:
virtual SkSpan< std::unique_ptr< Expression > > argumentSpan()=0
std::unique_ptr< Expression > & base()
std::unique_ptr< Expression > & base()
std::unique_ptr< Expression > & index()
Operator getOperator() const
std::unique_ptr< Expression > & operand()
std::unique_ptr< Expression > & base()
bool IsSameExpressionTree(const Expression &left, const Expression &right)