This fixes a crash when no elements are parsed, but the type expects at least one.
Fixes PR#47763
Differential Revision: https://reviews.llvm.org/D92982
return nullptr;
}
+ // Handle the case where no elements were parsed.
+ if (!hexStorage.hasValue() && storage.empty() && type.getNumElements()) {
+ p.emitError(loc) << "parsed zero elements, but type (" << type
+ << ") expected at least 1";
+ return nullptr;
+ }
+
// Handle complex types in the specific element type cases below.
bool isComplex = false;
if (ComplexType complexTy = eltType.dyn_cast<ComplexType>()) {
// -----
+// expected-error@+1 {{parsed zero elements, but type ('tensor<i64>') expected at least 1}}
+#attr = dense<> : tensor<i64>
+
+// -----
+
func @elementsattr_toolarge2() -> () {
^bb0:
"foo"(){bar = dense<[-777]> : tensor<1xi8>} : () -> () // expected-error {{integer constant out of range}}