automatically generate clone() methods for SkSL fragment processors

Bug: skia:
Change-Id: Ib7b90f20d2b1558aad14f38f95c7c884e654c96d
Reviewed-on: https://skia-review.googlesource.com/28620
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
diff --git a/tests/SkSLFPTest.cpp b/tests/SkSLFPTest.cpp
index 7a1d371..82bcb10 100644
--- a/tests/SkSLFPTest.cpp
+++ b/tests/SkSLFPTest.cpp
@@ -88,6 +88,8 @@
              "    static sk_sp<GrFragmentProcessor> Make() {\n"
              "        return sk_sp<GrFragmentProcessor>(new GrTest());\n"
              "    }\n"
+             "    GrTest(const GrTest& src);\n"
+             "    sk_sp<GrFragmentProcessor> clone() const override;\n"
              "    const char* name() const override { return \"Test\"; }\n"
              "private:\n"
              "    GrTest()\n"
@@ -148,6 +150,13 @@
              "    (void) that;\n"
              "    return true;\n"
              "}\n"
+             "GrTest::GrTest(const GrTest& src)\n"
+             ": INHERITED(src.optimizationFlags()) {\n"
+             "    this->initClassID<GrTest>();\n"
+             "}\n"
+             "sk_sp<GrFragmentProcessor> GrTest::clone() const {\n"
+             "    return sk_sp<GrFragmentProcessor>(new GrTest(*this));\n"
+             "}\n"
              "#endif\n"
          });
 }
@@ -287,6 +296,7 @@
          });
     test(r,
          "@fields { fields section }"
+         "@clone { }"
          "void main() {"
          "sk_OutColor = float4(1);"
          "}",