diff --git a/test/annexB/language/function-code/block-decl-func-skip-arguments.js b/test/annexB/language/function-code/block-decl-func-skip-arguments.js
new file mode 100644
index 0000000000000000000000000000000000000000..3c41abddd78886e1baaa36c98dbbecd0afc923fb
--- /dev/null
+++ b/test/annexB/language/function-code/block-decl-func-skip-arguments.js
@@ -0,0 +1,54 @@
+/*---
+description: Functions named 'arguments' have legacy hoisting semantics
+esid: sec-web-compat-functiondeclarationinstantiation
+flags: [noStrict]
+info: |
+    FunctionDeclarationInstantiation ( _func_, _argumentsList_ )
+
+    [...]
+    7. Let _parameterNames_ be the BoundNames of _formals_.
+    [...]
+    22. If argumentsObjectNeeded is true, then
+      f. Append "arguments" to parameterNames.
+
+    Changes to FunctionDeclarationInstantiation
+
+    [...]
+    ii. If replacing the |FunctionDeclaration| _f_ with a |VariableStatement| that has _F_
+        as a |BindingIdentifier| would not produce any Early Errors for _func_ and _F_ is
+        not an element of _parameterNames_, then
+      [...]
+---*/
+
+// Simple parameters
+(function() {
+  assert.sameValue(arguments.toString(), "[object Arguments]");
+  {
+    assert.sameValue(arguments(), undefined);
+    function arguments() {}
+    assert.sameValue(arguments(), undefined);
+  }
+  assert.sameValue(arguments.toString(), "[object Arguments]");
+}());
+
+// Single named parameter
+(function(x) {
+  assert.sameValue(arguments.toString(), "[object Arguments]");
+  {
+    assert.sameValue(arguments(), undefined);
+    function arguments() {}
+    assert.sameValue(arguments(), undefined);
+  }
+  assert.sameValue(arguments.toString(), "[object Arguments]");
+}());
+
+// Non-simple parameters
+(function(..._) {
+  assert.sameValue(arguments.toString(), "[object Arguments]");
+  {
+    assert.sameValue(arguments(), undefined);
+    function arguments() {}
+    assert.sameValue(arguments(), undefined);
+  }
+  assert.sameValue(arguments.toString(), "[object Arguments]");
+}());