diff --git a/core/tests/regression_tests.rs b/core/tests/regression_tests.rs index adcff5de0..b8e81956a 100644 --- a/core/tests/regression_tests.rs +++ b/core/tests/regression_tests.rs @@ -129,6 +129,7 @@ swf_tests! { (equals2_swf6, "avm1/equals2_swf6", 1), (equals2_swf7, "avm1/equals2_swf7", 1), (register_class, "avm1/register_class", 1), + (register_and_init_order, "avm1/register_and_init_order", 1), (set_variable_scope, "avm1/set_variable_scope", 1), (slash_syntax, "avm1/slash_syntax", 2), (strictequals_swf6, "avm1/strictequals_swf6", 1), diff --git a/core/tests/swfs/avm1/register_and_init_order/aaclass.as b/core/tests/swfs/avm1/register_and_init_order/aaclass.as new file mode 100644 index 000000000..ac2d1bbfb --- /dev/null +++ b/core/tests/swfs/avm1/register_and_init_order/aaclass.as @@ -0,0 +1,32 @@ +class aaclass extends MovieClip { + function aaclass() { + trace("aaclass constructor"); + super(); + + trace(""); + trace("// trace(this._name)"); + trace(this._name); + trace(""); + + this.test(); + trace("aaclass constructor end"); + trace(""); + trace(""); + } + + function test() { + trace("aaclass test()"); + + trace(""); + + trace("// trace(this._name)"); + trace(this["_name"]); + trace(""); + + trace("// trace(this.box)"); + trace(this["box"]); + trace(""); + + trace("aaclass test() end"); + } +} \ No newline at end of file diff --git a/core/tests/swfs/avm1/register_and_init_order/output.txt b/core/tests/swfs/avm1/register_and_init_order/output.txt new file mode 100644 index 000000000..c4d5e9c6c --- /dev/null +++ b/core/tests/swfs/avm1/register_and_init_order/output.txt @@ -0,0 +1,156 @@ +b #initclip +b #endinitclip + + +aa #initclip +aa #endinitclip + + +a #initclip +a #endinitclip + + +c #initclip +c #endinitclip + + +a constructor() + +// trace(this._name) +a + +// trace(this._name) +a + +// trace(this.box) +_level0.a.box + +// trace(this.custom) +true + +// trace(this.box.custom) +undefined + +// trace(this.box.box) +_level0.a.box.box + +a constructor() end + + +aaclass constructor + +// trace(this._name) +box + +aaclass test() + +// trace(this._name) +box + +// trace(this.box) +_level0.a.box.box + +aaclass test() end +aaclass constructor end + + +b constructor() + +// trace(this._name) +b + +// trace(this._name) +b + +// trace(this.box) +_level0.b.box + +// trace(this.custom) +true + +b constructor() end + + +root first frame + +// trace(a._name) +a + +// trace(a.box) +_level0.a.box + +// trace(a.custom) +true + +// trace(a.box.box) +_level0.a.box.box + +// trace(a.box.custom) +undefined + +// trace(b._name) +b + +// trace(b.custom) +true + +// trace(b.box) +_level0.b.box + +root first frame end + + +a first frame + +// trace(this._name) +a + +// trace(this.box) +_level0.a.box + +// trace(this.custom) +true + +// trace(this.box.custom) +undefined + +// trace(this.box.box) +_level0.a.box.box + +// trace(this.oldbox) +_level0.a.box + +// trace(this.box === this.oldbox) +true + +a first frame end + + +aa first frame + +// trace(this._name) +box + +// trace(this.box) +_level0.a.box.box + +// trace(this.custom) +undefined + +aa first frame end + + +b first frame + +// trace(this._name) +b + +// trace(this.box) +_level0.b.box + +// trace(this.custom) +true + +b first frame end + + diff --git a/core/tests/swfs/avm1/register_and_init_order/test.fla b/core/tests/swfs/avm1/register_and_init_order/test.fla new file mode 100644 index 000000000..2e6b6c8c1 Binary files /dev/null and b/core/tests/swfs/avm1/register_and_init_order/test.fla differ diff --git a/core/tests/swfs/avm1/register_and_init_order/test.swf b/core/tests/swfs/avm1/register_and_init_order/test.swf new file mode 100644 index 000000000..c12d95d75 Binary files /dev/null and b/core/tests/swfs/avm1/register_and_init_order/test.swf differ