return parseAttribute(result, Type(), attrName, attrs);
}
- /// Parse an optional attribute.
- virtual OptionalParseResult parseOptionalAttribute(Attribute &result,
- Type type,
- StringRef attrName,
- NamedAttrList &attrs) = 0;
- template <typename AttrT>
- OptionalParseResult parseOptionalAttribute(AttrT &result, StringRef attrName,
- NamedAttrList &attrs) {
- return parseOptionalAttribute(result, Type(), attrName, attrs);
- }
-
- /// Specialized variants of `parseOptionalAttribute` that remove potential
- /// ambiguities in syntax.
- virtual OptionalParseResult parseOptionalAttribute(ArrayAttr &result,
- Type type,
- StringRef attrName,
- NamedAttrList &attrs) = 0;
- virtual OptionalParseResult parseOptionalAttribute(StringAttr &result,
- Type type,
- StringRef attrName,
- NamedAttrList &attrs) = 0;
-
/// Parse an arbitrary attribute of a given type and return it in result. This
/// also adds the attribute to the specified attribute list with the specified
/// name.
return success();
}
+ /// Parse an arbitrary optional attribute of a given type and return it in
+ /// result.
+ virtual OptionalParseResult parseOptionalAttribute(Attribute &result,
+ Type type = {}) = 0;
+
+ /// Parse an optional array attribute and return it in result.
+ virtual OptionalParseResult parseOptionalAttribute(ArrayAttr &result,
+ Type type = {}) = 0;
+
+ /// Parse an optional string attribute and return it in result.
+ virtual OptionalParseResult parseOptionalAttribute(StringAttr &result,
+ Type type = {}) = 0;
+
+ /// Parse an optional attribute of a specific type and add it to the list with
+ /// the specified name.
+ template <typename AttrType>
+ OptionalParseResult parseOptionalAttribute(AttrType &result,
+ StringRef attrName,
+ NamedAttrList &attrs) {
+ return parseOptionalAttribute(result, Type(), attrName, attrs);
+ }
+
+ /// Parse an optional attribute of a specific type and add it to the list with
+ /// the specified name.
+ template <typename AttrType>
+ OptionalParseResult parseOptionalAttribute(AttrType &result, Type type,
+ StringRef attrName,
+ NamedAttrList &attrs) {
+ OptionalParseResult parseResult = parseOptionalAttribute(result, type);
+ if (parseResult.hasValue() && succeeded(*parseResult))
+ attrs.append(attrName, result);
+ return parseResult;
+ }
+
/// Parse a named dictionary into 'result' if it is present.
virtual ParseResult parseOptionalAttrDict(NamedAttrList &result) = 0;
return success(static_cast<bool>(result));
}
- /// Parse an optional attribute.
- template <typename AttrT>
- OptionalParseResult
- parseOptionalAttributeAndAddToList(AttrT &result, Type type,
- StringRef attrName, NamedAttrList &attrs) {
- OptionalParseResult parseResult =
- parser.parseOptionalAttribute(result, type);
- if (parseResult.hasValue() && succeeded(*parseResult))
- attrs.push_back(parser.builder.getNamedAttr(attrName, result));
- return parseResult;
- }
- OptionalParseResult parseOptionalAttribute(Attribute &result, Type type,
- StringRef attrName,
- NamedAttrList &attrs) override {
- return parseOptionalAttributeAndAddToList(result, type, attrName, attrs);
- }
- OptionalParseResult parseOptionalAttribute(ArrayAttr &result, Type type,
- StringRef attrName,
- NamedAttrList &attrs) override {
- return parseOptionalAttributeAndAddToList(result, type, attrName, attrs);
- }
- OptionalParseResult parseOptionalAttribute(StringAttr &result, Type type,
- StringRef attrName,
- NamedAttrList &attrs) override {
- return parseOptionalAttributeAndAddToList(result, type, attrName, attrs);
+ OptionalParseResult parseOptionalAttribute(Attribute &result,
+ Type type) override {
+ return parser.parseOptionalAttribute(result, type);
+ }
+ OptionalParseResult parseOptionalAttribute(ArrayAttr &result,
+ Type type) override {
+ return parser.parseOptionalAttribute(result, type);
+ }
+ OptionalParseResult parseOptionalAttribute(StringAttr &result,
+ Type type) override {
+ return parser.parseOptionalAttribute(result, type);
}
/// Parse a named dictionary into 'result' if it is present.