Skip to content

Commit 7234432

Browse files
committed
refactor(language-service): Update getTcbNodesOfTemplateAtPosition to be usable without compiler (angular#67898)
updates getTcbNodesOfTemplateAtPosition to be usable without ngCompiler instance so it can be shared with more compiler types PR Close angular#67898
1 parent fb347af commit 7234432

3 files changed

Lines changed: 18 additions & 16 deletions

File tree

packages/language-service/src/codefixes/fix_missing_member.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,19 @@ export const missingMemberMeta: CodeActionMeta = {
3333
errorCode,
3434
tsLs,
3535
}) {
36-
const tcbNodesInfo =
37-
typeCheckInfo === null
38-
? null
39-
: getTcbNodesOfTemplateAtPosition(typeCheckInfo, start, compiler);
36+
if (typeCheckInfo === null) {
37+
return [];
38+
}
39+
const tcb = compiler.getTemplateTypeChecker().getTypeCheckBlock(typeCheckInfo.declaration);
40+
if (tcb === null) {
41+
return [];
42+
}
43+
const tcbNodesInfo = getTcbNodesOfTemplateAtPosition(typeCheckInfo.nodes, start, tcb);
4044
if (tcbNodesInfo === null) {
4145
return [];
4246
}
4347

4448
const codeActions: ts.CodeFixAction[] = [];
45-
const tcb = tcbNodesInfo.componentTcbNode;
4649
for (const tcbNode of tcbNodesInfo.nodes) {
4750
const tsLsCodeActions = tsLs.getCodeFixesAtPosition(
4851
tcb.getSourceFile().fileName,

packages/language-service/src/language_service.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -758,10 +758,15 @@ export class LanguageService {
758758
return undefined;
759759
}
760760

761+
const tcb = compiler.getTemplateTypeChecker().getTypeCheckBlock(typeCheckInfo.declaration);
762+
if (tcb === null) {
763+
return undefined;
764+
}
765+
761766
const selectionNodesInfo = getTcbNodesOfTemplateAtPosition(
762-
typeCheckInfo,
767+
typeCheckInfo.nodes,
763768
position,
764-
compiler,
769+
tcb,
765770
);
766771
if (selectionNodesInfo === null) {
767772
return undefined;

packages/language-service/src/template_target.ts

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -410,20 +410,14 @@ interface TcbNodesInfoForTemplate {
410410
*
411411
*/
412412
export function getTcbNodesOfTemplateAtPosition(
413-
typeCheckInfo: TypeCheckInfo,
413+
templateNodes: TmplAstNode[],
414414
position: number,
415-
compiler: NgCompiler,
415+
tcb: tss.Node,
416416
): TcbNodesInfoForTemplate | null {
417-
const target = getTargetAtPosition(typeCheckInfo.nodes, position);
417+
const target = getTargetAtPosition(templateNodes, position);
418418
if (target === null) {
419419
return null;
420420
}
421-
422-
const tcb = compiler.getTemplateTypeChecker().getTypeCheckBlock(typeCheckInfo.declaration);
423-
if (tcb === null) {
424-
return null;
425-
}
426-
427421
const tcbNodes: (tss.Node | null)[] = [];
428422
if (target.context.kind === TargetNodeKind.RawExpression) {
429423
const targetNode = target.context.node;

0 commit comments

Comments
 (0)