From 3d46a45fa81550680edb657c5d7b8030fc35809c Mon Sep 17 00:00:00 2001 From: ivanwonder Date: Tue, 10 Mar 2020 12:22:46 +0800 Subject: [PATCH] fix(language-service): resolve the variable from the template context first (#35982) PR Close #35982 --- packages/language-service/src/expression_diagnostics.ts | 6 ++---- packages/language-service/test/project/app/parsing-cases.ts | 2 ++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/language-service/src/expression_diagnostics.ts b/packages/language-service/src/expression_diagnostics.ts index 39d5e3405c..2d060ee894 100644 --- a/packages/language-service/src/expression_diagnostics.ts +++ b/packages/language-service/src/expression_diagnostics.ts @@ -91,10 +91,8 @@ function getVarDeclarations( continue; } for (const variable of current.variables) { - let symbol = info.members.get(variable.value); - if (!symbol) { - symbol = getVariableTypeFromDirectiveContext(variable.value, info.query, current); - } + let symbol = getVariableTypeFromDirectiveContext(variable.value, info.query, current); + const kind = info.query.getTypeKind(symbol); if (kind === BuiltinType.Any || kind === BuiltinType.Unbound) { // For special cases such as ngFor and ngIf, the any type is not very useful. diff --git a/packages/language-service/test/project/app/parsing-cases.ts b/packages/language-service/test/project/app/parsing-cases.ts index 949c786621..1d5c01c70e 100644 --- a/packages/language-service/test/project/app/parsing-cases.ts +++ b/packages/language-service/test/project/app/parsing-cases.ts @@ -170,6 +170,8 @@ export class TemplateReference { primitiveIndexType: {[name: string]: string} = {}; anyValue: any; optional?: string; + // Use to test the `index` variable conflict between the `ngFor` and component context. + index = null; myClick(event: any) {} birthday = new Date(); }