From 83d92c56baa7b9ab0cdc3a19c645e0f9af8c437b Mon Sep 17 00:00:00 2001
From: Simon H <5968653+dummdidumm@users.noreply.github.com>
Date: Wed, 15 Jun 2022 21:46:43 +0200
Subject: [PATCH] (fix) handle const in html pre-scanner (#1524)
#1499
---
packages/language-server/src/lib/documents/utils.ts | 3 ++-
.../test/lib/documents/parseHtml.test.ts | 12 ++++++++++++
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/packages/language-server/src/lib/documents/utils.ts b/packages/language-server/src/lib/documents/utils.ts
index 6388956f1..cb3c0830c 100644
--- a/packages/language-server/src/lib/documents/utils.ts
+++ b/packages/language-server/src/lib/documents/utils.ts
@@ -432,7 +432,8 @@ export function isInsideMoustacheTag(html: string, tagStart: number | null, posi
// TODO make this just check for '{'?
// Theoretically, someone could do {a < b} in a simple moustache tag
charactersBeforePosition.lastIndexOf('{#'),
- charactersBeforePosition.lastIndexOf('{:')
+ charactersBeforePosition.lastIndexOf('{:'),
+ charactersBeforePosition.lastIndexOf('{@')
) > charactersBeforePosition.lastIndexOf('}')
);
} else {
diff --git a/packages/language-server/test/lib/documents/parseHtml.test.ts b/packages/language-server/test/lib/documents/parseHtml.test.ts
index 875717f85..54dcc0d6c 100644
--- a/packages/language-server/test/lib/documents/parseHtml.test.ts
+++ b/packages/language-server/test/lib/documents/parseHtml.test.ts
@@ -37,6 +37,18 @@ describe('parseHtml', () => {
);
});
+ it('ignore binary operator inside @const', () => {
+ testRootElements(
+ parseHtml(
+ `{#if foo}
+ {@const bar = 1 << 2}
+
+ {/if}
+ `
+ )
+ );
+ });
+
it('ignore less than operator inside control flow moustache', () => {
testRootElements(
parseHtml(