[parser] Fix off-by-one in parameter count check

Upstream: https://chromium-review.googlesource.com/c/1326029

Bug: 160610106
Test: atest proxy_resolver_v8_unittest
Change-Id: I547b1a0cb88094ed79bf6ffe034df7f8834be4d1
(cherry picked from commit 089e85f552ec92402d9fcd19d110b0c7521c4601)
diff --git a/src/messages.h b/src/messages.h
index 030fc0b..e94ce16 100644
--- a/src/messages.h
+++ b/src/messages.h
@@ -695,7 +695,7 @@
   T(TooManyArguments,                                                          \
     "Too many arguments in function call (only 65535 allowed)")                \
   T(TooManyParameters,                                                         \
-    "Too many parameters in function definition (only 65535 allowed)")         \
+    "Too many parameters in function definition (only 65534 allowed)")         \
   T(TooManySpreads,                                                            \
     "Literal containing too many nested spreads (up to 65534 allowed)")        \
   T(TooManyVariables, "Too many variables declared (only 4194303 allowed)")    \
diff --git a/src/parsing/parser-base.h b/src/parsing/parser-base.h
index 9d13724..60d5e11 100644
--- a/src/parsing/parser-base.h
+++ b/src/parsing/parser-base.h
@@ -3830,7 +3830,8 @@
 
   if (peek() != Token::RPAREN) {
     while (true) {
-      if (parameters->arity > Code::kMaxArguments) {
+      // Add one since we're going to be adding a parameter.
+      if (parameters->arity + 1 > Code::kMaxArguments) {
         ReportMessage(MessageTemplate::kTooManyParameters);
         *ok = false;
         return;