summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/auto-regress/bug499169.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/auto-regress/bug499169.js')
-rw-r--r--js/src/jit-test/tests/auto-regress/bug499169.js179
1 files changed, 179 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/auto-regress/bug499169.js b/js/src/jit-test/tests/auto-regress/bug499169.js
new file mode 100644
index 000000000..93b196a49
--- /dev/null
+++ b/js/src/jit-test/tests/auto-regress/bug499169.js
@@ -0,0 +1,179 @@
+// Binary: cache/js-dbg-32-30b481fd82f5-linux
+// Flags: -j
+//
+var Native = function(k) {
+ var f = k.initialize;
+ var d = f;
+ var j = function(n, l, o, m) {
+ n.prototype[l] = o;
+ };
+ d.alias = function(n, l, o) {
+ n = this.prototype[n]
+ return j(this, l, n, o);
+ };
+ d.implement = function(m, l, o) {
+ for (var n in m) {
+ j(this, n, m[n], l);
+ }
+ }
+ return d;
+};
+(function() {
+ var a = {
+ Array: Array,
+ Function: Function,
+ };
+ for (var h in a) {
+ new Native({
+ initialize: a[h],
+ });
+ }
+} ());
+Array.alias("forEach", "each");
+function $merge() {
+ var a = Array.slice(arguments);
+ a.unshift({});
+ return $mixin.apply(null, a);
+}
+function $mixin(e) {
+ for (var d = 1, a = arguments.length; d < a; d++) {
+ var b = arguments[d];
+ for (var c in b) {
+ var g = b[c],
+ f = e[c];
+ e[c] = f && $type(g) == "object" && $type(f) == "object" ? $mixin(f, g) : $unlink(g);
+ }
+ }
+}
+function $type(a) {
+ if (a == undefined) {
+ return false;
+ }
+ if (a.$family) {
+ }
+ return typeof a;
+}
+function $unlink(c) {
+ if ($type(c) == "object") {
+ b = {};
+ }
+ return b;
+}
+var Window = new Native({
+ initialize: function(a) {},
+});
+Array.implement({
+ extend: function(c) {
+ return this;
+ }
+});
+Function.implement({
+ extend: function(a) {
+ for (var b in a) {
+ this[b] = a[b];
+ }
+ return this;
+ },
+ run: function(a, b) {
+ return this.apply(b, a);
+ }
+});
+function Class(b) {
+ var a = function() {
+ Object.reset(this);
+ var c = this.initialize ? this.initialize.apply(this, arguments) : this;
+ }.extend(this);
+ a.implement(b);
+ return a;
+}
+Object.reset = function(a, c) {
+ if (c == null) {
+ for (var e in a) {
+ Object.reset(a, e);
+ }
+ }
+ switch ($type(a[c])) {
+ case "object":
+ var d = function() {};
+ d.prototype = a[c];
+ var b = new d;
+ a[c] = Object.reset(b);
+ }
+ return a;
+};
+(new Native({initialize: Class})).extend({});
+ function wrap(a, b, c) {
+ return function() {
+ var d = c.apply(this, arguments);
+ }.extend({});
+ }
+Class.implement({
+ implement: function(a, d) {
+ if ($type(a) == "object") {
+ for (var e in a) {
+ this.implement(e, a[e]);
+ }
+ }
+ var f = Class.Mutators[a];
+ if (f) {
+ d = f.call(this, d);
+ }
+ var c = this.prototype;
+ switch ($type(d)) {
+ case "function":
+ c[a] = wrap(this, a, d);
+ break;
+ case "object":
+ var b = c[a];
+ if ($type(b) == "object") {
+ $mixin(b, d);
+ } else {
+ c[a] = $unlink(d);
+ }
+ }
+ }
+});
+Class.Mutators = {
+ Extends: function(a) {
+ this.prototype = new a;
+ },
+ Implements: function(a) {
+ a.each(function(b) {
+ b = new b;
+ this.implement(b);
+ },
+ this);
+ }
+};
+var Events = new Class({});
+var Options = new Class({
+ setOptions: function() {
+ this.options = $merge.run([this.options].extend(arguments));
+ }
+});
+var Autocompleter = {};
+Autocompleter.Base = new Class({
+ Implements: [Options, Events],
+ options: {},
+});
+Autocompleter.Ajax = {};
+Autocompleter.Ajax.Base = new Class({
+ Extends: Autocompleter.Base,
+ options: {
+ postVar: "value",
+ onRequest: function(){},
+ }
+});
+Autocompleter.Ajax.Json = new Class({
+ Extends: Autocompleter.Ajax.Base,
+});
+Autocompleter.JsonP = new Class({
+ Extends: Autocompleter.Ajax.Json,
+ options: {
+ minLength: 1
+ },
+ initialize: function(el, url, options) {
+ this.setOptions({});
+ }
+});
+new Autocompleter.JsonP();