diff --git a/packages/translator/src/__tests__/fixtures/basic-converge-in-if/__snapshots__/csr.expected.md b/packages/translator/src/__tests__/fixtures/basic-converge-in-if/__snapshots__/csr.expected.md new file mode 100644 index 000000000..73f5f62f9 --- /dev/null +++ b/packages/translator/src/__tests__/fixtures/basic-converge-in-if/__snapshots__/csr.expected.md @@ -0,0 +1,9 @@ +# Render undefined +```html +0 +``` + +# Mutations +``` +inserted #text0 +``` \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/basic-converge-in-if/__snapshots__/dom.expected.js b/packages/translator/src/__tests__/fixtures/basic-converge-in-if/__snapshots__/dom.expected.js new file mode 100644 index 000000000..968f78347 --- /dev/null +++ b/packages/translator/src/__tests__/fixtures/basic-converge-in-if/__snapshots__/dom.expected.js @@ -0,0 +1,47 @@ +import { data as _data, setConditionalRenderer as _setConditionalRenderer, queue as _queue, queueInBranch as _queueInBranch, write as _write, createRenderer as _createRenderer, createRenderFn as _createRenderFn } from "@marko/runtime-fluurt/src/dom"; + +function _apply1With_a_b(_scope, a = _scope._[4], b = _scope._[5]) { + _data(_scope[0], a + b); +} + +function _apply1_b(_scope, b = _scope._[5]) { + _queue(_scope, _apply1With_a_b, 2); +} + +function _apply1_a(_scope, a = _scope._[4]) { + _queue(_scope, _apply1With_a_b, 2); +} + +function _apply2(_scope) { + _queue(_scope, _apply1_b, 1); + + _queue(_scope, _apply1_a, 0); +} + +function _apply_b(_scope, b) { + if (_write(_scope, 5, b)) _queueInBranch(_scope, 0, _if, _apply1_b, 2, 4); +} + +function _apply_a(_scope, a) { + if (_write(_scope, 4, a)) _queueInBranch(_scope, 0, _if, _apply1_a, 1, 5); +} + +function _apply(_scope) { + _apply_a(_scope, 0); + + _apply_b(_scope, 0); + + _setConditionalRenderer(_scope, 0, true ? _if : null); +} + +export const template = ""; +export const walks = +/* replace, skip(3), over(1) */ +"%+b"; +export const apply = _apply; + +const _if = _createRenderer(" ", +/* get */ +" ", _apply2); + +export default _createRenderFn(template, walks, apply); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/basic-converge-in-if/__snapshots__/html.expected.js b/packages/translator/src/__tests__/fixtures/basic-converge-in-if/__snapshots__/html.expected.js new file mode 100644 index 000000000..099bdd567 --- /dev/null +++ b/packages/translator/src/__tests__/fixtures/basic-converge-in-if/__snapshots__/html.expected.js @@ -0,0 +1,19 @@ +import { markHydrateNode as _markHydrateNode, write as _write, escapeXML as _escapeXML, nextScopeId as _nextScopeId, createRenderer as _createRenderer } from "@marko/runtime-fluurt/src/html"; + +const _renderer = input => { + const _scope = _nextScopeId(); + + const a = 0; + const b = 0; + + _write(`${_markHydrateNode(_scope, 0)}`); + + if (true) { + const _scope = _nextScopeId(); + + _write(`${_markHydrateNode(_scope, 0)}${_escapeXML(a + b)}`); + } +}; + +export default _renderer; +export const render = _createRenderer(_renderer); \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/basic-converge-in-if/__snapshots__/ssr.expected.md b/packages/translator/src/__tests__/fixtures/basic-converge-in-if/__snapshots__/ssr.expected.md new file mode 100644 index 000000000..ed8c6cd99 --- /dev/null +++ b/packages/translator/src/__tests__/fixtures/basic-converge-in-if/__snapshots__/ssr.expected.md @@ -0,0 +1,43 @@ +# Write + 0 + + +# Render "End" +```html + + + + + + 0 + + +``` + +# Mutations +``` +inserted #comment0 +inserted #comment1 +inserted html2 +inserted html2/head0 +inserted html2/body1 +inserted html2/body1/#text0 +``` + + +# Render "Hydrate" +```html + + + + + + 0 + + +``` + +# Mutations +``` + +``` \ No newline at end of file diff --git a/packages/translator/src/__tests__/fixtures/basic-converge-in-if/template.marko b/packages/translator/src/__tests__/fixtures/basic-converge-in-if/template.marko new file mode 100644 index 000000000..5d8ffea17 --- /dev/null +++ b/packages/translator/src/__tests__/fixtures/basic-converge-in-if/template.marko @@ -0,0 +1,5 @@ + + + + ${a + b} + \ No newline at end of file diff --git a/packages/translator/src/util/references.ts b/packages/translator/src/util/references.ts index 33dea210d..2798577a2 100644 --- a/packages/translator/src/util/references.ts +++ b/packages/translator/src/util/references.ts @@ -161,6 +161,8 @@ function updateReferenceGroup( currentGroup.count--; } + getOrCreateReferenceGroup(sectionId, newBinding); + path.node.extra![extraKey] = getOrCreateReferenceGroup( sectionId, newReferences