| Index: src/sksl/ir/SkSLField.h
 | 
| diff --git a/src/sksl/ir/SkSLField.h b/src/sksl/ir/SkSLField.h
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..f2b68bc2bcae4567967a829e96e104cf7b38ed48
 | 
| --- /dev/null
 | 
| +++ b/src/sksl/ir/SkSLField.h
 | 
| @@ -0,0 +1,41 @@
 | 
| +/*
 | 
| + * Copyright 2016 Google Inc.
 | 
| + *
 | 
| + * Use of this source code is governed by a BSD-style license that can be
 | 
| + * found in the LICENSE file.
 | 
| + */
 | 
| + 
 | 
| +#ifndef SKSL_FIELD
 | 
| +#define SKSL_FIELD
 | 
| +
 | 
| +#include "SkSLModifiers.h"
 | 
| +#include "SkSLPosition.h"
 | 
| +#include "SkSLSymbol.h"
 | 
| +#include "SkSLType.h"
 | 
| +
 | 
| +namespace SkSL {
 | 
| +
 | 
| +/** 
 | 
| + * A symbol which should be interpreted as a field access. Fields are added to the symboltable 
 | 
| + * whenever a bare reference to an identifier should refer to a struct field; in GLSL, this is the 
 | 
| + * result of declaring anonymous interface blocks.
 | 
| + */
 | 
| +struct Field : public Symbol {
 | 
| +    Field(Position position, std::shared_ptr<Variable> owner, int fieldIndex)
 | 
| +    : INHERITED(position, kField_Kind, owner->fType->fields()[fieldIndex].fName)
 | 
| +    , fOwner(owner)
 | 
| +    , fFieldIndex(fieldIndex) {}
 | 
| +
 | 
| +    virtual std::string description() const override {
 | 
| +        return fOwner->description() + "." + fOwner->fType->fields()[fFieldIndex].fName;
 | 
| +    }
 | 
| +
 | 
| +    const std::shared_ptr<Variable> fOwner;
 | 
| +    const int fFieldIndex;
 | 
| +
 | 
| +    typedef Symbol INHERITED;
 | 
| +};
 | 
| +
 | 
| +} // namespace SkSL
 | 
| +
 | 
| +#endif
 | 
| 
 |