From 8550303b5443da49bf681d95b028658b62e8387b Mon Sep 17 00:00:00 2001 From: ivanwonder Date: Mon, 10 Feb 2020 19:27:41 +0800 Subject: [PATCH] fix(language-service): get the right 'ElementAst' in the nested HTML tag For example, '

', when provide the hover info for 'string-model', the 'path.head' is root tag 'div'. Use the parent of 'path.tail' instead. --- packages/language-service/src/locate_symbol.ts | 4 ++-- packages/language-service/test/hover_spec.ts | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/language-service/src/locate_symbol.ts b/packages/language-service/src/locate_symbol.ts index 65591ea880e98..736919bd61447 100644 --- a/packages/language-service/src/locate_symbol.ts +++ b/packages/language-service/src/locate_symbol.ts @@ -116,8 +116,8 @@ function locateSymbol(ast: TemplateAst, path: TemplateAstPath, info: AstResult): }, visitElementProperty(ast) { attributeValueSymbol(); }, visitAttr(ast) { - const element = path.head; - if (!element || !(element instanceof ElementAst)) return; + const element = path.first(ElementAst); + if (!element) return; // Create a mapping of all directives applied to the element from their selectors. const matcher = new SelectorMatcher(); for (const dir of element.directives) { diff --git a/packages/language-service/test/hover_spec.ts b/packages/language-service/test/hover_spec.ts index 578f7fcc7efe5..b7d38ccb31f97 100644 --- a/packages/language-service/test/hover_spec.ts +++ b/packages/language-service/test/hover_spec.ts @@ -99,7 +99,8 @@ describe('hover', () => { }); it('should be able to find a reference to a directive', () => { - const content = mockHost.override(TEST_TEMPLATE, `
`); + const content = + mockHost.override(TEST_TEMPLATE, `
`); const marker = mockHost.getLocationMarkerFor(TEST_TEMPLATE, 'cursor'); const quickInfo = ngLS.getQuickInfoAtPosition(TEST_TEMPLATE, marker.start); expect(quickInfo).toBeDefined();