From 4c5fad3ea3361550838465e57dc2524fb383823f Mon Sep 17 00:00:00 2001 From: Godfrey Chan Date: Fri, 7 Feb 2020 03:30:37 -0800 Subject: [PATCH] [BUGFIX beta] Fix `{{#-in-element}}` double-clearing issue Closes #18696 --- package.json | 16 +- .../integration/syntax/in-element-test.js | 26 +++ yarn.lock | 190 +++++++++--------- 3 files changed, 129 insertions(+), 103 deletions(-) diff --git a/package.json b/package.json index e112621cfd9..5983092e280 100644 --- a/package.json +++ b/package.json @@ -74,15 +74,15 @@ }, "devDependencies": { "@babel/preset-env": "^7.7.7", - "@glimmer/compiler": "0.47.4", + "@glimmer/compiler": "0.47.5", "@glimmer/env": "^0.1.7", - "@glimmer/interfaces": "0.47.4", - "@glimmer/node": "0.47.4", - "@glimmer/opcode-compiler": "0.47.4", - "@glimmer/program": "0.47.4", - "@glimmer/reference": "0.47.4", - "@glimmer/runtime": "0.47.4", - "@glimmer/validator": "0.47.4", + "@glimmer/interfaces": "0.47.5", + "@glimmer/node": "0.47.5", + "@glimmer/opcode-compiler": "0.47.5", + "@glimmer/program": "0.47.5", + "@glimmer/reference": "0.47.5", + "@glimmer/runtime": "0.47.5", + "@glimmer/validator": "0.47.5", "@simple-dom/document": "^1.4.0", "@types/qunit": "^2.5.4", "@types/rsvp": "^4.0.3", diff --git a/packages/@ember/-internals/glimmer/tests/integration/syntax/in-element-test.js b/packages/@ember/-internals/glimmer/tests/integration/syntax/in-element-test.js index ff84f6f6573..ee2f67be7c3 100644 --- a/packages/@ember/-internals/glimmer/tests/integration/syntax/in-element-test.js +++ b/packages/@ember/-internals/glimmer/tests/integration/syntax/in-element-test.js @@ -228,5 +228,31 @@ moduleFor( assert.deepEqual(hooks, ['didInsertElement', 'willDestroyElement']); } + + ['@test appending to the root element should not cause double clearing are cleaned up properly']() { + this.render( + strip` + Before + {{#-in-element this.rootElement insertBefore=null}} + {{this.text}} + {{/-in-element}} + After + `, + { + rootElement: this.element, + text: 'Whoop!', + } + ); + + equalTokens(this.element, 'BeforeWhoop!After'); + + this.assertStableRerender(); + + runTask(() => set(this.context, 'text', 'Huzzah!')); + + equalTokens(this.element, 'BeforeHuzzah!After'); + + // teardown happens in afterEach and should not cause double-clearing error + } } ); diff --git a/yarn.lock b/yarn.lock index c99953c0c53..7377d677d2c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -801,138 +801,138 @@ resolved "https://registry.yarnpkg.com/@ember/edition-utils/-/edition-utils-1.2.0.tgz#a039f542dc14c8e8299c81cd5abba95e2459cfa6" integrity sha512-VmVq/8saCaPdesQmftPqbFtxJWrzxNGSQ+e8x8LLe3Hjm36pJ04Q8LeORGZkAeOhldoUX9seLGmSaHeXkIqoog== -"@glimmer/compiler@0.47.4": - version "0.47.4" - resolved "https://registry.yarnpkg.com/@glimmer/compiler/-/compiler-0.47.4.tgz#53c024ea66457be20f80b2c95845ec9ae838f4ee" - integrity sha512-YuNJR22gN7TYevenRlQIRLxys7d3i2hHX/qZdhy/VDCgXacf0AMm87LQAKM4k1sjHG8NtveSUEzAughLOBm7GQ== - dependencies: - "@glimmer/interfaces" "^0.47.4" - "@glimmer/syntax" "^0.47.4" - "@glimmer/util" "^0.47.4" - "@glimmer/wire-format" "^0.47.4" +"@glimmer/compiler@0.47.5": + version "0.47.5" + resolved "https://registry.yarnpkg.com/@glimmer/compiler/-/compiler-0.47.5.tgz#b41dedca886c0591c1acbed4d9ccd50b79487c75" + integrity sha512-iaRjtlMSnMjnKh8wGENfh+tT1cvlf+/KhpY8Q8/HWpzvB7jex3z/j26nkMryLVjzOtw0zRxybFatN4jqOOdF3g== + dependencies: + "@glimmer/interfaces" "^0.47.5" + "@glimmer/syntax" "^0.47.5" + "@glimmer/util" "^0.47.5" + "@glimmer/wire-format" "^0.47.5" "@simple-dom/interface" "^1.4.0" -"@glimmer/encoder@^0.47.4": - version "0.47.4" - resolved "https://registry.yarnpkg.com/@glimmer/encoder/-/encoder-0.47.4.tgz#c52c46d587152d0af1c3e866a4062d0665a8cc4a" - integrity sha512-tYZdIKssBTCogsUbjqhnbP27W9ZiefTYGebNH7O7V+/4ZeitiRhVzy+ELDSB0vKyvlfYWxyecjcckvxVTJBaNQ== +"@glimmer/encoder@^0.47.5": + version "0.47.5" + resolved "https://registry.yarnpkg.com/@glimmer/encoder/-/encoder-0.47.5.tgz#9ec13aaa87ce3edac84286ad2e5301fe4fd2f8e0" + integrity sha512-SScSjBRuvgeNqaIFaGZ6rZJt4Avlz2VZ7TLfNm+snOg/juFNhoAfevDECizzm0dzof4YE7tKoDruM+Dg0SINBA== dependencies: - "@glimmer/interfaces" "^0.47.4" - "@glimmer/vm" "^0.47.4" + "@glimmer/interfaces" "^0.47.5" + "@glimmer/vm" "^0.47.5" "@glimmer/env@0.1.7", "@glimmer/env@^0.1.7": version "0.1.7" resolved "https://registry.yarnpkg.com/@glimmer/env/-/env-0.1.7.tgz#fd2d2b55a9029c6b37a6c935e8c8871ae70dfa07" integrity sha1-/S0rVakCnGs3psk16MiHGucN+gc= -"@glimmer/interfaces@0.47.4", "@glimmer/interfaces@^0.47.4": - version "0.47.4" - resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.47.4.tgz#17772fae66571b606f9fa26d733d7211960a2560" - integrity sha512-Wbv6954fIOy1aWHh2IdneBmIGrGysyu+ZWrmAiuMQC92uf57a9AXFJW0DFY+X6gd8Biaw/Nx8EHE0bNeMYCp9Q== +"@glimmer/interfaces@0.47.5", "@glimmer/interfaces@^0.47.5": + version "0.47.5" + resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.47.5.tgz#8200459b2f54eadfedc4906e7cd0937421c03deb" + integrity sha512-sM6rQO5tEqcascwdMvlt8x03AaAILH//7jmF/Gq4HgL7dSfsflmvQV3YukevzEhZSgZfbUZIiOnSKgRYyMHifA== dependencies: "@simple-dom/interface" "^1.4.0" -"@glimmer/low-level@^0.47.4": - version "0.47.4" - resolved "https://registry.yarnpkg.com/@glimmer/low-level/-/low-level-0.47.4.tgz#04684558499f5a5dbeec6ab440f97c3889156e20" - integrity sha512-brjZnS2XjKJFtG7XsjiL/D+CgLAi2uFcuDQAMcUEATsjTdW/XWspnBrUaX2s5SmaFwf843pZi61oKr0EgLmQKw== +"@glimmer/low-level@^0.47.5": + version "0.47.5" + resolved "https://registry.yarnpkg.com/@glimmer/low-level/-/low-level-0.47.5.tgz#e81f7f8fc2ff582adedd4fe4443b9a83c1b851bc" + integrity sha512-DTpWeHn7SuYz2DTPs0eW396Tvw9/VbqT0kke84WyW7yeA6abykiDxHl05v0+WyBRwoPMu4wbs0O8I5iXHySFlw== -"@glimmer/node@0.47.4": - version "0.47.4" - resolved "https://registry.yarnpkg.com/@glimmer/node/-/node-0.47.4.tgz#a19ed1afb2ebac656d98a35acb4931a8a987fd23" - integrity sha512-UP86z6x2Bh7Q4jWbPxAvuWsfCqsbM8lROSiNx5ReA+K8iUgTT3PT6c2ea7TUSVmHnsx0Xzbs6UgINGMSROIaCg== +"@glimmer/node@0.47.5": + version "0.47.5" + resolved "https://registry.yarnpkg.com/@glimmer/node/-/node-0.47.5.tgz#e86943b01fe27a26c0aa2e1b29522c4aaefd88db" + integrity sha512-3EN3EBY56ayparChyFbd6c68fRQcnAVPRD3LBCwqA4Lf/cnGJ4YxowjkM9nW+DF/KBR6+BzYZ4Mw8kC2KqaFdA== dependencies: - "@glimmer/interfaces" "^0.47.4" - "@glimmer/runtime" "^0.47.4" + "@glimmer/interfaces" "^0.47.5" + "@glimmer/runtime" "^0.47.5" "@simple-dom/document" "^1.4.0" "@simple-dom/interface" "^1.4.0" -"@glimmer/opcode-compiler@0.47.4": - version "0.47.4" - resolved "https://registry.yarnpkg.com/@glimmer/opcode-compiler/-/opcode-compiler-0.47.4.tgz#71decdfa7cac9ceef18e415ab349288e83768e53" - integrity sha512-uNY88oFZT6vwE5T+Cq74mJEkr8fwZ+nfIqRXtZNAIl8gNxfZDv0Q6nSDK+U2WNz6s4edomzxRUL67wpREfzwGw== - dependencies: - "@glimmer/encoder" "^0.47.4" - "@glimmer/interfaces" "^0.47.4" - "@glimmer/program" "^0.47.4" - "@glimmer/reference" "^0.47.4" - "@glimmer/util" "^0.47.4" - "@glimmer/vm" "^0.47.4" - "@glimmer/wire-format" "^0.47.4" - -"@glimmer/program@0.47.4", "@glimmer/program@^0.47.4": - version "0.47.4" - resolved "https://registry.yarnpkg.com/@glimmer/program/-/program-0.47.4.tgz#b0105b28e332b458839b6c2e50c99f349198033b" - integrity sha512-jI3FbnE96HasdkYwqPNcOG/pwiIyfN7M3hrpKP1WCvtrDTp6MeikKSdiEafZefNlOk/zr1OqnG9RNMzjl7N3+w== - dependencies: - "@glimmer/encoder" "^0.47.4" - "@glimmer/interfaces" "^0.47.4" - "@glimmer/util" "^0.47.4" - -"@glimmer/reference@0.47.4", "@glimmer/reference@^0.47.4": - version "0.47.4" - resolved "https://registry.yarnpkg.com/@glimmer/reference/-/reference-0.47.4.tgz#972e24313ce2552e24ebbaf1ce7691d7c4c1f7e9" - integrity sha512-A7ruDxaa/jFSoAWv0yeGRGgtEevaP1XAhamJ4CMGAXAwE2PiODo5TZRNiTsgKnoZytsokcvfXOJZIHHQ/VHdTg== +"@glimmer/opcode-compiler@0.47.5": + version "0.47.5" + resolved "https://registry.yarnpkg.com/@glimmer/opcode-compiler/-/opcode-compiler-0.47.5.tgz#b07d6cc849c8ce012abaf906359cbf22eaa4dbcd" + integrity sha512-jD0exb7phakF4/g44b0Cgc0sHciCNZd6nlFfVoebCkrWBk69PTgBjWsi8AnGZRK0Sqj95K9aI8hHse6d8d0uXQ== + dependencies: + "@glimmer/encoder" "^0.47.5" + "@glimmer/interfaces" "^0.47.5" + "@glimmer/program" "^0.47.5" + "@glimmer/reference" "^0.47.5" + "@glimmer/util" "^0.47.5" + "@glimmer/vm" "^0.47.5" + "@glimmer/wire-format" "^0.47.5" + +"@glimmer/program@0.47.5", "@glimmer/program@^0.47.5": + version "0.47.5" + resolved "https://registry.yarnpkg.com/@glimmer/program/-/program-0.47.5.tgz#51439854edbea7ddba3c9db537d75ee8a6649ff1" + integrity sha512-Q1hEGUQ27O6DdV8tQUFQ5V9i2BAZ9E8C9sayfi8uw3Ostct3M5zeapXkpwnUIQvlznh5MrmBx123qsnfS7GJDg== + dependencies: + "@glimmer/encoder" "^0.47.5" + "@glimmer/interfaces" "^0.47.5" + "@glimmer/util" "^0.47.5" + +"@glimmer/reference@0.47.5", "@glimmer/reference@^0.47.5": + version "0.47.5" + resolved "https://registry.yarnpkg.com/@glimmer/reference/-/reference-0.47.5.tgz#db1e6f21dc141cb41d3ae4ba975654b1536364a1" + integrity sha512-ATHsAYurdCdsxyyfj6OlM4RwrdamJQHzW6sgvHz8fHsSG15RU43Gala7PAdgkgHVnbyfW/MsiYXhLsPzSnRqYQ== dependencies: "@glimmer/env" "^0.1.7" - "@glimmer/util" "^0.47.4" - "@glimmer/validator" "^0.47.4" + "@glimmer/util" "^0.47.5" + "@glimmer/validator" "^0.47.5" -"@glimmer/runtime@0.47.4", "@glimmer/runtime@^0.47.4": - version "0.47.4" - resolved "https://registry.yarnpkg.com/@glimmer/runtime/-/runtime-0.47.4.tgz#ebeb396f5b4a1dea28b9865f8c7990b445474343" - integrity sha512-41eyqls4TpWk1tNVZHG0v2O2ynIpJr/vkCn3fPCajYM96KTV0dAXThJWwRm04O6nSzMaGmSpFawDjCe0A1FZtw== +"@glimmer/runtime@0.47.5", "@glimmer/runtime@^0.47.5": + version "0.47.5" + resolved "https://registry.yarnpkg.com/@glimmer/runtime/-/runtime-0.47.5.tgz#32b9c198ad6d5485768a6b8be140663cb75da00e" + integrity sha512-2qVZko4rQM6lFfygq/pzBAD1pz4VGZLYlpmBDrSa/TwlQ+kVF9Pqe5p9+AyZ7Qv0R3hEp6GQjH/3hnGcpsLidA== dependencies: "@glimmer/env" "0.1.7" - "@glimmer/interfaces" "^0.47.4" - "@glimmer/low-level" "^0.47.4" - "@glimmer/program" "^0.47.4" - "@glimmer/reference" "^0.47.4" - "@glimmer/util" "^0.47.4" - "@glimmer/validator" "^0.47.4" - "@glimmer/vm" "^0.47.4" - "@glimmer/wire-format" "^0.47.4" + "@glimmer/interfaces" "^0.47.5" + "@glimmer/low-level" "^0.47.5" + "@glimmer/program" "^0.47.5" + "@glimmer/reference" "^0.47.5" + "@glimmer/util" "^0.47.5" + "@glimmer/validator" "^0.47.5" + "@glimmer/vm" "^0.47.5" + "@glimmer/wire-format" "^0.47.5" "@simple-dom/interface" "^1.4.0" -"@glimmer/syntax@^0.47.4": - version "0.47.4" - resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.47.4.tgz#827f63a9c5f14a8329ff26c1e1f6ad211683690d" - integrity sha512-GCqoKyU11+cD9jL1J6AlSgKn1/rFUt/Wc3pgf/AE7uxza00OOYDEbqfpzOdv9sF727aqKdy9qp3a9O54IcevuA== +"@glimmer/syntax@^0.47.5": + version "0.47.5" + resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.47.5.tgz#a9ed42009350ffe400f3b27f7ca5c8f804cd1574" + integrity sha512-pwjkhvYQM9NIwh1LVW64QKITzxbsmLVUhD4GVUN8JxeTAASy/YGywSz0vvFV3r+uM1LXP5QFiHLJPZBHv6g3uw== dependencies: - "@glimmer/interfaces" "^0.47.4" - "@glimmer/util" "^0.47.4" + "@glimmer/interfaces" "^0.47.5" + "@glimmer/util" "^0.47.5" handlebars "^4.5.1" simple-html-tokenizer "^0.5.9" -"@glimmer/util@^0.47.4": - version "0.47.4" - resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.47.4.tgz#de6061d30f03ca09950208f6de7b529efc8fb539" - integrity sha512-uGcUjDtcy/CTSKMYuIpmvZfv4busDcPbx6X+AnWkaTIonvp0z8HKpZ5QYrulR9Gcbbtb+noCTmMr2qa7AEyA4Q== +"@glimmer/util@^0.47.5": + version "0.47.5" + resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.47.5.tgz#34c7741e335af0f232a70652d1b6603e532d8894" + integrity sha512-NIwVlUd7KjnR0A0KO3+IHA11gZRQ1xSRQdDKJISib2i+qVspeQSWWNu+vm2ITTXiQzZBBGfSJTFyh23NZolufQ== dependencies: "@simple-dom/interface" "^1.4.0" -"@glimmer/validator@0.47.4", "@glimmer/validator@^0.47.4": - version "0.47.4" - resolved "https://registry.yarnpkg.com/@glimmer/validator/-/validator-0.47.4.tgz#8ba22ccdf5adbf57fd175cbe77f447e43cabd092" - integrity sha512-u7jFJRBtz3i5/XWRlfCjSUsp6/NEA4J0/ildurvfdWDZusLZ0qAu995H1C12WtpIvvbY4rA/ELHnt5sNMldHDQ== +"@glimmer/validator@0.47.5", "@glimmer/validator@^0.47.5": + version "0.47.5" + resolved "https://registry.yarnpkg.com/@glimmer/validator/-/validator-0.47.5.tgz#a2b7cce6d5c23ab1e88a75c8d383815b1d802fb1" + integrity sha512-KI0bop9xlwS23eSy69H4RsgdhrOi7LN30EfL5UO09aoUPc6Y7U8Y/Vs3wVksn6MsrOuAauHN9iuLcYdekPMz0Q== dependencies: "@glimmer/env" "^0.1.7" -"@glimmer/vm@^0.47.4": - version "0.47.4" - resolved "https://registry.yarnpkg.com/@glimmer/vm/-/vm-0.47.4.tgz#13cab445e5e8dccb556150dacbfa2f9d3384a6e0" - integrity sha512-pZHbgfNG24WYO/nYldBOQMuasau3sgxTc9F10Pk1mAUKoCSSct2z04MoJrrvOh1ItpppIxLS5OHsLkBBNtbEDg== +"@glimmer/vm@^0.47.5": + version "0.47.5" + resolved "https://registry.yarnpkg.com/@glimmer/vm/-/vm-0.47.5.tgz#c289775c02c0a02fa1678754c5d577e2799dac71" + integrity sha512-HHhJkvCzxvgTLgz4zpqaLnzRbP7S44uboKrg48oQd/cQDr/b2F4NWbzdie4puIGnPqt3Tm5weE0gfGx5xolBjw== dependencies: - "@glimmer/interfaces" "^0.47.4" - "@glimmer/util" "^0.47.4" + "@glimmer/interfaces" "^0.47.5" + "@glimmer/util" "^0.47.5" -"@glimmer/wire-format@^0.47.4": - version "0.47.4" - resolved "https://registry.yarnpkg.com/@glimmer/wire-format/-/wire-format-0.47.4.tgz#9e05a9f9eb48a8494b37b2c90f89ac03f048925d" - integrity sha512-DMrx8sC6cOR4+5dDq/i8FzqJFGB6LTEcBjDyjLKqP9O9I0FY1ktjn4mcuFAm2KB7LLMbYa1u3iLHRaEs4k3deg== +"@glimmer/wire-format@^0.47.5": + version "0.47.5" + resolved "https://registry.yarnpkg.com/@glimmer/wire-format/-/wire-format-0.47.5.tgz#52128415c06ed22ac88b61978f135faa34cc4330" + integrity sha512-HU/q8+P0oLlXtLeRueWm5RpZICGhB2Eiv5w+h9itCagPpX7QbRSVbiEFRwC3OMhgZHwZEGBIPWGa0kxQu3eruQ== dependencies: - "@glimmer/interfaces" "^0.47.4" - "@glimmer/util" "^0.47.4" + "@glimmer/interfaces" "^0.47.5" + "@glimmer/util" "^0.47.5" "@simple-dom/document@^1.4.0": version "1.4.0"