diff --git a/mlir/lib/AsmParser/AttributeParser.cpp b/mlir/lib/AsmParser/AttributeParser.cpp index dcb21e7d0831d..374471fd3ed41 100644 --- a/mlir/lib/AsmParser/AttributeParser.cpp +++ b/mlir/lib/AsmParser/AttributeParser.cpp @@ -883,6 +883,8 @@ ParseResult DenseArrayElementParser::parseIntegerElement(Parser &p) { !type.isUnsignedInteger()); p.consumeToken(); } else if (p.consumeIf(Token::integer)) { + if (type.isInteger(1)) + return p.emitError("expected 'true' or 'false' values for i1 type"); value = buildAttributeAPInt(type, isNegative, spelling); if (!value) return p.emitError("integer constant out of range"); diff --git a/mlir/test/IR/invalid-builtin-attributes.mlir b/mlir/test/IR/invalid-builtin-attributes.mlir index 58d4940eaf874..0d00b3141fbc6 100644 --- a/mlir/test/IR/invalid-builtin-attributes.mlir +++ b/mlir/test/IR/invalid-builtin-attributes.mlir @@ -580,6 +580,16 @@ func.func @duplicate_dictionary_attr_key() { // ----- +// expected-error@below {{expected i1 type for 'true' or 'false' values}} +#attr = array + +// ----- + +// expected-error@below {{expected 'true' or 'false' values for i1 type}} +#attr = array + +// ----- + // expected-error@below {{expected '[' after 'distinct'}} #attr = distinct<