Index: test/mjsunit/messages.js |
diff --git a/test/mjsunit/messages.js b/test/mjsunit/messages.js |
index c2ba73600a51d9e62554f646dcb458981119b82c..41622554abbd3ac248b77c6368e46d63f917bf53 100644 |
--- a/test/mjsunit/messages.js |
+++ b/test/mjsunit/messages.js |
@@ -2,14 +2,17 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+// Flags: --stack-size=100 --harmony --harmony-reflect |
+ |
function test(f, expected, type) { |
try { |
f(); |
- assertUnreachable(); |
} catch (e) { |
assertInstanceof(e, type); |
assertEquals(expected, e.message); |
+ return; |
} |
+ assertUnreachable(); |
} |
// === Error === |
@@ -23,6 +26,17 @@ test(function() { |
// === TypeError === |
+// kApplyNonFunction |
+test(function() { |
+ Function.prototype.apply.call(1, []); |
+}, "Function.prototype.apply was called on 1, which is a number " + |
+ "and not a function", TypeError); |
+ |
+// kCannotConvertToPrimitive |
+test(function() { |
+ [].join(Object(Symbol(1))); |
+}, "Cannot convert object to primitive value", TypeError); |
+ |
// kGeneratorRunning |
test(function() { |
var iter; |
@@ -42,13 +56,78 @@ test(function() { |
}, "Method RegExp.prototype.compile called on incompatible receiver " + |
"[object RegExp]", TypeError); |
+// kInstanceofFunctionExpected |
+test(function() { |
+ 1 instanceof 1; |
+}, "Expecting a function in instanceof check, but got 1", TypeError); |
+ |
+// kInstanceofNonobjectProto |
+test(function() { |
+ function f() {} |
+ var o = new f(); |
+ f.prototype = 1; |
+ o instanceof f; |
+}, "Function has non-object prototype '1' in instanceof check", TypeError); |
+ |
+// kInvalidInOperatorUse |
+test(function() { |
+ 1 in 1; |
+}, "Cannot use 'in' operator to search for '1' in 1", TypeError); |
+ |
+// kNotConstructor |
+test(function() { |
+ new Symbol(); |
+}, "Symbol is not a constructor", TypeError); |
+ |
// kPropertyNotFunction |
test(function() { |
Set.prototype.add = 0; |
new Set(1); |
}, "Property 'add' of object #<Set> is not a function", TypeError); |
+// kSymbolToPrimitive |
+test(function() { |
+ 1 + Object(Symbol()); |
+}, "Cannot convert a Symbol wrapper object to a primitive value", TypeError); |
+ |
+// kSymbolToString |
+test(function() { |
+ "" + Symbol(); |
+}, "Cannot convert a Symbol value to a string", TypeError); |
+ |
+// kSymbolToNumber |
+test(function() { |
+ 1 + Symbol(); |
+}, "Cannot convert a Symbol value to a number", TypeError); |
+ |
+// kUndefinedOrNullToObject |
+test(function() { |
+ Array.prototype.toString.call(null); |
+}, "Cannot convert undefined or null to object", TypeError); |
+ |
// kWithExpression |
test(function() { |
with (null) {} |
}, "null has no properties", TypeError); |
+ |
+// kWrongArgs |
+test(function() { |
+ (function() {}).apply({}, 1); |
+}, "Function.prototype.apply: Arguments list has wrong type", TypeError); |
+ |
+test(function() { |
+ Reflect.apply(function() {}, {}, 1); |
+}, "Reflect.apply: Arguments list has wrong type", TypeError); |
+ |
+test(function() { |
+ Reflect.construct(function() {}, 1); |
+}, "Reflect.construct: Arguments list has wrong type", TypeError); |
+ |
+ |
+// === RangeError === |
+ |
+// kStackOverflow |
+test(function() { |
+ function f() { f(Array(1000)); } |
+ f(); |
+}, "Maximum call stack size exceeded", RangeError); |