message: Correctly parse empty affine maps.
  Previously the test case crashes / produces an error.
diff: @@ -2901,7 +2901,7 @@ ParseResult AffineParser::parseAffineMapOfSSAIds(AffineMap &map) {
  return failure();
  // Parsed a valid affine map.
  if (exprs.empty())
  - map = AffineMap();
  + map = AffineMap::get(getContext());
  else
  map = AffineMap::get(numDimOperands, dimsAndSymbols.size() - numDimOperands,
  exprs);
  @@ -2912,7 +2912,8 @@ ParseResult AffineParser::parseAffineMapOfSSAIds(AffineMap &map) {
  ///
  /// affine-map ::= dim-and-symbol-id-lists `->` multi-dim-affine-expr
  ///
  -/// multi-dim-affine-expr ::= `(` affine-expr (`,` affine-expr)* `)
  +/// multi-dim-affine-expr ::= `(` `)`
  +/// multi-dim-affine-expr ::= `(` affine-expr (`,` affine-expr)* `)`
  AffineMap AffineParser::parseAffineMapRange(unsigned numDims,
  unsigned numSymbols) {
  parseToken(Token::l_paren, "expected '(' at start of affine map range");
  @@ -2928,9 +2929,12 @@ AffineMap AffineParser::parseAffineMapRange(unsigned numDims,
  // Parse a multi-dimensional affine expression (a comma-separated list of
  // 1-d affine expressions); the list cannot be empty. Grammar:
  // multi-dim-affine-expr ::= `(` affine-expr (`,` affine-expr)* `)
  - if (parseCommaSeparatedListUntil(Token::r_paren, parseElt, false))
  + if (parseCommaSeparatedListUntil(Token::r_paren, parseElt, true))
  return AffineMap();
  + if (exprs.empty())
  + return AffineMap::get(getContext());
  +
  // Parsed a valid affine map.
  return AffineMap::get(numDims, numSymbols, exprs);
  }
  