aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sksl/ir/SkSLTypeReference.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/sksl/ir/SkSLTypeReference.h')
-rw-r--r--src/sksl/ir/SkSLTypeReference.h13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/sksl/ir/SkSLTypeReference.h b/src/sksl/ir/SkSLTypeReference.h
index f7065b7c3f..df3dc15abd 100644
--- a/src/sksl/ir/SkSLTypeReference.h
+++ b/src/sksl/ir/SkSLTypeReference.h
@@ -18,9 +18,9 @@ namespace SkSL {
* always eventually replaced by Constructors in valid programs.
*/
struct TypeReference : public Expression {
- TypeReference(const Context& context, int offset, const Type& type)
+ TypeReference(const Context& context, int offset, const Type& value)
: INHERITED(offset, kTypeReference_Kind, *context.fInvalid_Type)
- , fValue(type) {}
+ , fValue(value) {}
bool hasSideEffects() const override {
return false;
@@ -30,9 +30,18 @@ struct TypeReference : public Expression {
return String(fValue.fName);
}
+ std::unique_ptr<Expression> clone() const override {
+ return std::unique_ptr<Expression>(new TypeReference(fOffset, fValue, &fType));
+ }
+
const Type& fValue;
typedef Expression INHERITED;
+
+private:
+ TypeReference(int offset, const Type& value, const Type* type)
+ : INHERITED(offset, kTypeReference_Kind, *type)
+ , fValue(value) {}
};
} // namespace