Check for absence of delimiters when delimiters is None and fixed number of operands expected.

Ensure delimiters are absent where not expected. This is only checked in the case where operand count is known. This allows for the currently accepted case where there is a operand list with no delimiter and variable number of operands (which could be empty), followed by a delimited operand list.

PiperOrigin-RevId: 212202064
diff --git a/lib/Parser/Parser.cpp b/lib/Parser/Parser.cpp
index 3a817e9..b9b903c 100644
--- a/lib/Parser/Parser.cpp
+++ b/lib/Parser/Parser.cpp
@@ -1785,7 +1785,20 @@
     // Handle delimiters.
     switch (delimiter) {
     case Delimiter::None:
-      break;
+      // Don't check for the absence of a delimiter if the number of operands
+      // is unknown (and hence the operand list could be empty).
+      if (requiredOperandCount == -1)
+        break;
+      // Token already matches an identifier and so can't be a delimiter.
+      if (parser.getToken().is(Token::percent_identifier))
+        break;
+      // Test against known delimiters.
+      if (parser.getToken().is(Token::l_paren) ||
+          parser.getToken().is(Token::l_square))
+        return emitError(startLoc, "unexpected delimiter");
+      return emitError(startLoc, "unable to parse '" +
+                                     parser.getTokenSpelling() +
+                                     "' as operand");
     case Delimiter::OptionalParen:
       if (parser.getToken().isNot(Token::l_paren))
         return false;