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) {