Index: test/intl/bad-target.js |
diff --git a/test/intl/bad-target.js b/test/intl/bad-target.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7b7cbe9b5dd24268fadaa509af78cc1cc935b7e1 |
--- /dev/null |
+++ b/test/intl/bad-target.js |
@@ -0,0 +1,39 @@ |
+// Copyright 2016 the V8 project authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// Calling Intl methods with a bad receiver throws a TypeError |
+ |
+// An uninitialized object of the same type |
+assertThrows(() => Object.create(Intl.DateTimeFormat.prototype).format(), |
+ TypeError); |
+assertThrows(() => Object.create(Intl.NumberFormat.prototype).format(), |
+ TypeError); |
+assertThrows(() => Object.create(Intl.Collator.prototype).compare(), |
+ TypeError); |
+assertThrows(() => Object.create(Intl.v8BreakIterator.prototype).adoptText(), |
+ TypeError); |
+assertThrows(() => Object.create(Intl.v8BreakIterator.prototype).first(), |
+ TypeError); |
+assertThrows(() => Object.create(Intl.v8BreakIterator.prototype).next(), |
+ TypeError); |
+assertThrows(() => Object.create(Intl.v8BreakIterator.prototype).current(), |
+ TypeError); |
+assertThrows(() => Object.create(Intl.v8BreakIterator.prototype).breakType(), |
+ TypeError); |
+ |
+// Or similarly, just accessing the method getter on the prototype |
+assertThrows(() => Intl.DateTimeFormat.prototype.format, TypeError); |
+assertThrows(() => Intl.NumberFormat.prototype.format, TypeError); |
+assertThrows(() => Intl.Collator.prototype.compare, TypeError); |
+assertThrows(() => Intl.v8BreakIterator.prototype.adoptText, TypeError); |
+assertThrows(() => Intl.v8BreakIterator.prototype.first, TypeError); |
+assertThrows(() => Intl.v8BreakIterator.prototype.next, TypeError); |
+assertThrows(() => Intl.v8BreakIterator.prototype.current, TypeError); |
+assertThrows(() => Intl.v8BreakIterator.prototype.breakType, TypeError); |
+ |
+// The method .call'd on a different instance will have that |
+// other instance benignly ignored, since it's a bound function |
+let nf = Intl.NumberFormat(); |
+let df = Intl.DateTimeFormat(); |
+assertEquals("0", nf.format.call(df, 0)); |