From 32421f66012fda81616e4ccba8f2ea903fec2bae Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Thu, 21 Nov 2019 14:46:39 -0500 Subject: [PATCH] stable sort that preserves order --- src/compiler/compile/render_dom/Renderer.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/compiler/compile/render_dom/Renderer.ts b/src/compiler/compile/render_dom/Renderer.ts index d800e670a1..67e4640a51 100644 --- a/src/compiler/compile/render_dom/Renderer.ts +++ b/src/compiler/compile/render_dom/Renderer.ts @@ -108,7 +108,7 @@ export default class Renderer { } }); - this.context.sort((a, b) => (b.priority - a.priority) || (a.name < b.name ? -1 : 1)); + this.context.sort((a, b) => (b.priority - a.priority) || ((a.index.value as number) - (b.index.value as number))); this.context.forEach((member, i) => member.index.value = i); } @@ -116,7 +116,7 @@ export default class Renderer { if (!this.context_lookup.has(name)) { const member: ContextMember = { name, - index: { type: 'Literal', value: -1 }, // set later + index: { type: 'Literal', value: this.context.length }, // index is updated later, but set here to preserve order within groups is_contextual: false, is_non_contextual: false, // shadowed vars could be contextual and non-contextual variable: null,