From a382b8390596967f72a5622daf959b6f20e458f2 Mon Sep 17 00:00:00 2001 From: yoyo930021 Date: Mon, 16 Nov 2020 17:30:29 +0800 Subject: [PATCH 1/2] Fix Infinite loop when template tag self close --- server/src/embeddedSupport/vueDocumentRegionParser.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/embeddedSupport/vueDocumentRegionParser.ts b/server/src/embeddedSupport/vueDocumentRegionParser.ts index e26b545fe2..00f4646b77 100644 --- a/server/src/embeddedSupport/vueDocumentRegionParser.ts +++ b/server/src/embeddedSupport/vueDocumentRegionParser.ts @@ -103,7 +103,7 @@ function scanTemplateRegion(scanner: Scanner, text: string): EmbeddedRegion | nu while (unClosedTemplate !== 0) { // skip parsing on non html syntax, just search terminator if (token === TokenType.AttributeValue && languageId !== 'vue-html') { - while (token !== TokenType.StartTagClose) { + while (![TokenType.StartTagClose, TokenType.StartTagSelfClose].includes(token)) { token = scanner.scan(); } start = scanner.getTokenEnd(); From d38849af0b1835464d31f3b8812b5b8508f3e00c Mon Sep 17 00:00:00 2001 From: yoyo930021 Date: Mon, 16 Nov 2020 17:30:56 +0800 Subject: [PATCH 2/2] Add Test for template self closed when external --- test/lsp/features/external/basic.test.ts | 11 +++++++++++ test/lsp/fixture/external/Foo.pug | 1 + test/lsp/fixture/external/Foo.ts | 5 +++++ test/lsp/fixture/external/Foo.vue | 3 +++ 4 files changed, 20 insertions(+) create mode 100644 test/lsp/features/external/basic.test.ts create mode 100644 test/lsp/fixture/external/Foo.pug create mode 100644 test/lsp/fixture/external/Foo.ts create mode 100644 test/lsp/fixture/external/Foo.vue diff --git a/test/lsp/features/external/basic.test.ts b/test/lsp/features/external/basic.test.ts new file mode 100644 index 0000000000..0589ccf664 --- /dev/null +++ b/test/lsp/features/external/basic.test.ts @@ -0,0 +1,11 @@ +import { testCompletion } from '../../../completionHelper'; +import { position } from '../../../util'; +import { getDocUri } from '../../path'; + +describe('Should use external file in Vue SFC', () => { + const docUri = getDocUri('external/Foo.vue'); + + it('Should work fine when template self close', async () => { + await testCompletion(docUri, position(2, 0), ['