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(