refactor(compiler-cli): introduce extended package to typecheck with it's API (#42984)
This commit introduces //packages/compiler-cli/src/ngtsc/typecheck/extended as a container for a new phase of diagnostics generation. The API provides an interface for new template checks to implement and generate template diagnostics. Refs #42966 PR Close #42984
This commit is contained in:
parent
e3415e597e
commit
3a092d6cea
|
@ -0,0 +1,15 @@
|
||||||
|
load("//tools:defaults.bzl", "ts_library")
|
||||||
|
|
||||||
|
ts_library(
|
||||||
|
name = "api",
|
||||||
|
srcs = glob(
|
||||||
|
["**/*.ts"],
|
||||||
|
),
|
||||||
|
visibility = ["//packages/compiler-cli/src/ngtsc:__subpackages__"],
|
||||||
|
deps = [
|
||||||
|
"//packages/compiler",
|
||||||
|
"//packages/compiler-cli/src/ngtsc/diagnostics",
|
||||||
|
"//packages/compiler-cli/src/ngtsc/typecheck/api",
|
||||||
|
"@npm//typescript",
|
||||||
|
],
|
||||||
|
)
|
|
@ -0,0 +1,47 @@
|
||||||
|
/**
|
||||||
|
* @license
|
||||||
|
* Copyright Google LLC All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Use of this source code is governed by an MIT-style license that can be
|
||||||
|
* found in the LICENSE file at https://angular.io/license
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {TmplAstNode} from '@angular/compiler';
|
||||||
|
import * as ts from 'typescript';
|
||||||
|
|
||||||
|
import {ErrorCode} from '../../../diagnostics';
|
||||||
|
import {TemplateTypeChecker} from '../../api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A `ts.Diangostic` with a specific error code.
|
||||||
|
*/
|
||||||
|
export type TemplateDiagnostic<T extends ErrorCode> = ts.Diagnostic&{code: T};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A Template Check receives information about the template it's checking and returns
|
||||||
|
* information about the diagnostics to be generated.
|
||||||
|
*/
|
||||||
|
export interface TemplateCheck<T extends ErrorCode> {
|
||||||
|
/** Unique template check code, used for configuration and searching the error. */
|
||||||
|
code: T;
|
||||||
|
|
||||||
|
/** Runs check and returns information about the diagnostics to be generated. */
|
||||||
|
run(ctx: TemplateContext, template: TmplAstNode[]): TemplateDiagnostic<T>[];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The TemplateContext provided to a Template Check to get diagnostic information.
|
||||||
|
*/
|
||||||
|
export interface TemplateContext {
|
||||||
|
/** Interface that provides information about template nodes. */
|
||||||
|
templateTypeChecker: TemplateTypeChecker;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TypeScript interface that provides type information about symbols that appear
|
||||||
|
* in the template (it is not to query types outside the Angular component).
|
||||||
|
*/
|
||||||
|
typeChecker: ts.TypeChecker;
|
||||||
|
|
||||||
|
/** The `@Component()` class from which the template was obtained. */
|
||||||
|
component: ts.ClassDeclaration;
|
||||||
|
}
|
Loading…
Reference in New Issue