summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/extensions/redeclaration-of-catch-warning.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/non262/extensions/redeclaration-of-catch-warning.js')
-rw-r--r--js/src/tests/non262/extensions/redeclaration-of-catch-warning.js37
1 files changed, 37 insertions, 0 deletions
diff --git a/js/src/tests/non262/extensions/redeclaration-of-catch-warning.js b/js/src/tests/non262/extensions/redeclaration-of-catch-warning.js
new file mode 100644
index 0000000000..efdfc0ef98
--- /dev/null
+++ b/js/src/tests/non262/extensions/redeclaration-of-catch-warning.js
@@ -0,0 +1,37 @@
+// |reftest| skip-if(!xulRuntime.shell)
+//
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 622646;
+var summary = "Shadowing an exception identifier in a catch block with a " +
+ "|const| or |let| declaration should throw an error";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+function assertRedeclarationErrorThrown(expression)
+{
+ "use strict";
+
+ try
+ {
+ evaluate(expression);
+ throw new Error("Redeclaration error wasn't thrown");
+ }
+ catch(e)
+ {
+ assertEq(e.message.indexOf("catch") > 0, true,
+ "wrong error, got " + e.message);
+ }
+}
+
+assertRedeclarationErrorThrown("try {} catch(e) { const e = undefined; }");
+assertRedeclarationErrorThrown("try {} catch(e) { let e; }");
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);