Traverse FieldAccess' base expression in visitExpression.
The absence of the FieldAccess::fBase traversal appears to be a simple
oversight. This doesn't appear to affect any tests.
Change-Id: I82a5828acedd00f62bf177bd2cf70d67071a83fa
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/319413
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
diff --git a/src/sksl/SkSLAnalysis.cpp b/src/sksl/SkSLAnalysis.cpp
index e42f65c..6afa367 100644
--- a/src/sksl/SkSLAnalysis.cpp
+++ b/src/sksl/SkSLAnalysis.cpp
@@ -78,7 +78,7 @@
SampleUsage visit(const Program& program) {
fUsage = SampleUsage(); // reset to none
- this->INHERITED::visit(program);
+ INHERITED::visit(program);
return fUsage;
}
@@ -125,7 +125,7 @@
}
}
- return this->INHERITED::visitExpression(e);
+ return INHERITED::visitExpression(e);
}
using INHERITED = ProgramVisitor;
@@ -141,7 +141,7 @@
const VariableReference& var = e.as<VariableReference>();
return var.fVariable->fModifiers.fLayout.fBuiltin == fBuiltin;
}
- return this->INHERITED::visitExpression(e);
+ return INHERITED::visitExpression(e);
}
int fBuiltin;
@@ -160,17 +160,17 @@
bool visitExpression(const Expression& e) override {
++fCount;
- return this->INHERITED::visitExpression(e);
+ return INHERITED::visitExpression(e);
}
bool visitProgramElement(const ProgramElement& p) override {
++fCount;
- return this->INHERITED::visitProgramElement(p);
+ return INHERITED::visitProgramElement(p);
}
bool visitStatement(const Statement& s) override {
++fCount;
- return this->INHERITED::visitStatement(s);
+ return INHERITED::visitStatement(s);
}
private:
@@ -197,7 +197,7 @@
return true;
}
}
- return this->INHERITED::visitExpression(e);
+ return INHERITED::visitExpression(e);
}
private:
@@ -254,7 +254,6 @@
case Expression::Kind::kBoolLiteral:
case Expression::Kind::kDefined:
case Expression::Kind::kExternalValue:
- case Expression::Kind::kFieldAccess:
case Expression::Kind::kFloatLiteral:
case Expression::Kind::kFunctionReference:
case Expression::Kind::kIntLiteral:
@@ -279,6 +278,8 @@
if (this->visitExpression(*arg)) { return true; }
}
return false; }
+ case Expression::Kind::kFieldAccess:
+ return this->visitExpression(*e.as<FieldAccess>().fBase);
case Expression::Kind::kFunctionCall: {
const FunctionCall& c = e.as<FunctionCall>();
for (const auto& arg : c.fArguments) {