Index: test/mjsunit/regress/regress-crbug-3184.js |
=================================================================== |
--- test/mjsunit/regress/regress-crbug-3184.js (revision 0) |
+++ test/mjsunit/regress/regress-crbug-3184.js (revision 0) |
@@ -0,0 +1,56 @@ |
+Object.extend = function (dest, source) { |
+ for (property in source) dest[property] = source[property]; |
+ return dest; |
+}; |
+ |
+Object.extend ( Function.prototype, |
+{ |
+ wrap : function (wrapper) { |
+ var method = this; |
+ var bmethod = (function(_method) { |
+ return function () { |
+ this.$$$parentMethodStore$$$ = this.$proceed; |
+ this.$proceed = function() { return _method.apply(this, arguments); }; |
+ }; |
+ })(method); |
+ var amethod = function () { |
+ this.$proceed = this.$$$parentMethodStore$$$; |
+ if (this.$proceed == undefined) delete this.$proceed; |
+ delete this.$$$parentMethodStore$$$; |
+ }; |
+ var value = function() { bmethod.call(this); retval = wrapper.apply(this, arguments); amethod.call(this); return retval; }; |
+ return value; |
+ } |
+}); |
+ |
+String.prototype.cap = function() { |
+ return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); |
+}; |
+ |
+String.prototype.cap = String.prototype.cap.wrap( |
+ function(each) { |
+ if (each && this.indexOf(" ") != -1) { |
+ return this.split(" ").map( |
+ function (value) { |
+ return value.cap(); |
+ } |
+ ).join(" "); |
+ } else { |
+ return this.$proceed(); |
+ } |
+}); |
+ |
+Object.extend( Array.prototype, |
+{ |
+ map : function(fun) { |
+ if (typeof fun != "function") throw new TypeError(); |
+ var len = this.length; |
+ var res = new Array(len); |
+ var thisp = arguments[1]; |
+ for (var i = 0; i < len; i++) { if (i in this) res[i] = fun.call(thisp, this[i], i, this); } |
+ return res; |
+ } |
+}); |
+assertEquals("Test1 test1", "test1 test1".cap()); |
+assertEquals("Test2 Test2", "test2 test2".cap(true)); |
+ |