diff --git a/mlir/lib/Parser/AttributeParser.cpp b/mlir/lib/Parser/AttributeParser.cpp --- a/mlir/lib/Parser/AttributeParser.cpp +++ b/mlir/lib/Parser/AttributeParser.cpp @@ -833,6 +833,7 @@ /// Parse an opaque elements attribute. Attribute Parser::parseOpaqueElementsAttr(Type attrType) { + llvm::SMLoc loc = getToken().getLoc(); consumeToken(Token::kw_opaque); if (parseToken(Token::less, "expected '<' after 'opaque'")) return nullptr; @@ -857,7 +858,8 @@ std::string data; if (parseElementAttrHexValues(*this, hexTok, data)) return nullptr; - return OpaqueElementsAttr::get(builder.getStringAttr(name), type, data); + return getChecked(loc, builder.getStringAttr(name), type, + data); } /// Shaped type for elements attribute. diff --git a/mlir/test/IR/attribute.mlir b/mlir/test/IR/attribute.mlir --- a/mlir/test/IR/attribute.mlir +++ b/mlir/test/IR/attribute.mlir @@ -645,3 +645,7 @@ return } +// ----- + +// expected-error @+1 {{invalid dialect namespace '"string with space"'}} +#invalid_dialect = opaque<"string with space", "0xDEADBEEF"> : tensor<100xi32>