From 2e5c29749f0959a7b1f53b38a95ab7f6e0edb511 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Wed, 6 Jun 2018 18:00:43 -0400 Subject: [PATCH 1/2] failing test for #1522 --- .../samples/onstate-before-render/_config.js | 14 ++++++++++ .../samples/onstate-before-render/main.html | 26 +++++++++++++++++++ .../samples/onstate-before-render/order.js | 1 + 3 files changed, 41 insertions(+) create mode 100644 test/runtime/samples/onstate-before-render/_config.js create mode 100644 test/runtime/samples/onstate-before-render/main.html create mode 100644 test/runtime/samples/onstate-before-render/order.js diff --git a/test/runtime/samples/onstate-before-render/_config.js b/test/runtime/samples/onstate-before-render/_config.js new file mode 100644 index 0000000000..56e30077bd --- /dev/null +++ b/test/runtime/samples/onstate-before-render/_config.js @@ -0,0 +1,14 @@ +import order from './order.js'; + +export default { + 'skip-ssr': true, + + test(assert, component, target) { + assert.deepEqual(order, [ + 'onstate', + 'render', + 'oncreate', + 'onupdate' + ]); + } +}; diff --git a/test/runtime/samples/onstate-before-render/main.html b/test/runtime/samples/onstate-before-render/main.html new file mode 100644 index 0000000000..572275268c --- /dev/null +++ b/test/runtime/samples/onstate-before-render/main.html @@ -0,0 +1,26 @@ +{identity(42)} + + \ No newline at end of file diff --git a/test/runtime/samples/onstate-before-render/order.js b/test/runtime/samples/onstate-before-render/order.js new file mode 100644 index 0000000000..109fa8b38c --- /dev/null +++ b/test/runtime/samples/onstate-before-render/order.js @@ -0,0 +1 @@ +export default []; \ No newline at end of file From 909015a34e8e9c42a69d850fb55e8f077536f9fb Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Wed, 6 Jun 2018 18:03:21 -0400 Subject: [PATCH 2/2] fix for #1522... maybe? --- src/compile/dom/index.ts | 3 ++- test/runtime/samples/onstate-before-render/_config.js | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/compile/dom/index.ts b/src/compile/dom/index.ts index 0a02b664be..6baa397241 100644 --- a/src/compile/dom/index.ts +++ b/src/compile/dom/index.ts @@ -222,11 +222,12 @@ export default function dom( ${compiler.slots.size && `this.slots = {};`} + ${templateProperties.onstate && `%onstate.call(this, { changed: @assignTrue({}, this._state), current: this._state });`} + this._fragment = @create_main_fragment(this, this._state); ${hasInitHooks && deindent` this.root._oncreate.push(() => { - ${templateProperties.onstate && `%onstate.call(this, { changed: @assignTrue({}, this._state), current: this._state });`} ${templateProperties.oncreate && `%oncreate.call(this);`} this.fire("update", { changed: @assignTrue({}, this._state), current: this._state }); }); diff --git a/test/runtime/samples/onstate-before-render/_config.js b/test/runtime/samples/onstate-before-render/_config.js index 56e30077bd..97c3af5083 100644 --- a/test/runtime/samples/onstate-before-render/_config.js +++ b/test/runtime/samples/onstate-before-render/_config.js @@ -10,5 +10,7 @@ export default { 'oncreate', 'onupdate' ]); + + order.length = 0; } };