/// Parse a colon followed by a type list, which must have at least one type.
virtual ParseResult parseColonTypeList(SmallVectorImpl<Type> &result) = 0;
+ /// Parse an optional colon followed by a type list, which if present must
+ /// have at least one type.
+ virtual ParseResult
+ parseOptionalColonTypeList(SmallVectorImpl<Type> &result) = 0;
+
/// Parse a keyword followed by a type.
ParseResult parseKeywordType(const char *keyword, Type &result) {
return failure(parseKeyword(keyword) || parseType(result));
return parser.parseTypeListNoParens(result);
}
+ /// Parse an optional colon followed by a type list, which if present must
+ /// have at least one type.
+ ParseResult
+ parseOptionalColonTypeList(SmallVectorImpl<Type> &result) override {
+ if (!parser.consumeIf(Token::colon))
+ return success();
+ return parser.parseTypeListNoParens(result);
+ }
+
private:
/// A set of placeholder value definitions for parsed region arguments.
SmallVector<Value *, 2> parsedRegionEntryArgumentPlaceholders;