refactor(compiler): remove unneeded fields from metadata
Removes `CompileIdentifierMetadata.name` / `.moduleUrl`, as well as `CompileTypeMetadata.name / moduleUrl` and `CompileFactoryMetadata.name / moduleUrl`.
This commit is contained in:
@ -6,7 +6,7 @@
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
|
||||
import {StaticSymbol} from '@angular/compiler';
|
||||
import {StaticSymbol, identifierName, tokenReference} from '@angular/compiler';
|
||||
import {AST, ASTWithSource, AstVisitor, Binary, BindingPipe, Chain, Conditional, FunctionCall, ImplicitReceiver, Interpolation, KeyedRead, KeyedWrite, LiteralArray, LiteralMap, LiteralPrimitive, MethodCall, PrefixNot, PropertyRead, PropertyWrite, Quote, SafeMethodCall, SafePropertyRead} from '@angular/compiler/src/expression_parser/ast';
|
||||
import {ElementAst, EmbeddedTemplateAst, ReferenceAst, TemplateAst, templateVisitAll} from '@angular/compiler/src/template_parser/template_ast';
|
||||
|
||||
@ -667,7 +667,7 @@ function getReferences(info: TemplateInfo): SymbolDeclaration[] {
|
||||
for (const reference of references) {
|
||||
let type: Symbol;
|
||||
if (reference.value) {
|
||||
type = info.template.query.getTypeSymbol(reference.value.reference);
|
||||
type = info.template.query.getTypeSymbol(tokenReference(reference.value));
|
||||
}
|
||||
result.push({
|
||||
name: reference.name,
|
||||
@ -740,7 +740,8 @@ function getVarDeclarations(info: TemplateInfo, path: TemplateAstPath): SymbolDe
|
||||
function refinedVariableType(
|
||||
type: Symbol, info: TemplateInfo, templateElement: EmbeddedTemplateAst): Symbol {
|
||||
// Special case the ngFor directive
|
||||
const ngForDirective = templateElement.directives.find(d => d.directive.type.name == 'NgFor');
|
||||
const ngForDirective =
|
||||
templateElement.directives.find(d => identifierName(d.directive.type) == 'NgFor');
|
||||
if (ngForDirective) {
|
||||
const ngForOfBinding = ngForDirective.inputs.find(i => i.directiveName == 'ngForOf');
|
||||
if (ngForOfBinding) {
|
||||
|
@ -107,9 +107,9 @@ class LanguageServiceImpl implements LanguageService {
|
||||
getTemplateAst(template: TemplateSource, contextFile: string): AstResult {
|
||||
let result: AstResult;
|
||||
try {
|
||||
const directive =
|
||||
const {metadata} =
|
||||
this.metadataResolver.getNonNormalizedDirectiveMetadata(template.type as any);
|
||||
if (directive) {
|
||||
if (metadata) {
|
||||
const rawHtmlParser = new HtmlParser();
|
||||
const htmlParser = new I18NHtmlParser(rawHtmlParser);
|
||||
const expressionParser = new Parser(new Lexer());
|
||||
@ -125,15 +125,17 @@ class LanguageServiceImpl implements LanguageService {
|
||||
}
|
||||
if (ngModule) {
|
||||
const directives = ngModule.transitiveModule.directives.map(
|
||||
d => this.host.resolver.getNonNormalizedDirectiveMetadata(d.reference).toSummary());
|
||||
d => this.host.resolver.getNonNormalizedDirectiveMetadata(d.reference)
|
||||
.metadata.toSummary());
|
||||
const pipes = ngModule.transitiveModule.pipes.map(
|
||||
p => this.host.resolver.getOrLoadPipeMetadata(p.reference).toSummary());
|
||||
const schemas = ngModule.schemas;
|
||||
const parseResult = parser.tryParseHtml(
|
||||
htmlResult, directive, template.source, directives, pipes, schemas, '');
|
||||
htmlResult, metadata, template.source, directives, pipes, schemas, '');
|
||||
result = {
|
||||
htmlAst: htmlResult.rootNodes,
|
||||
templateAst: parseResult.templateAst, directive, directives, pipes,
|
||||
templateAst: parseResult.templateAst,
|
||||
directive: metadata, directives, pipes,
|
||||
parseErrors: parseResult.errors, expressionParser, errors
|
||||
};
|
||||
}
|
||||
|
@ -6,6 +6,7 @@
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
|
||||
import {tokenReference} from '@angular/compiler';
|
||||
import {AST} from '@angular/compiler/src/expression_parser/ast';
|
||||
import {Attribute} from '@angular/compiler/src/ml_parser/ast';
|
||||
import {BoundDirectivePropertyAst, BoundEventAst, ElementAst, TemplateAst} from '@angular/compiler/src/template_parser/template_ast';
|
||||
@ -67,7 +68,7 @@ export function locateSymbol(info: TemplateInfo): SymbolInfo {
|
||||
}
|
||||
},
|
||||
visitReference(ast) {
|
||||
symbol = info.template.query.getTypeSymbol(ast.value.reference);
|
||||
symbol = info.template.query.getTypeSymbol(tokenReference(ast.value));
|
||||
span = spanOf(ast);
|
||||
},
|
||||
visitVariable(ast) {},
|
||||
|
@ -6,7 +6,7 @@
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
|
||||
import {CompileDirectiveMetadata, CompilerConfig, StaticReflector, StaticSymbol, StaticSymbolCache, createOfflineCompileUrlResolver} from '@angular/compiler';
|
||||
import {CompileDirectiveMetadata, CompilerConfig, StaticReflector, StaticSymbol, StaticSymbolCache, componentModuleUrl, createOfflineCompileUrlResolver} from '@angular/compiler';
|
||||
import {NgAnalyzedModules, analyzeNgModules, extractProgramSymbols} from '@angular/compiler/src/aot/compiler';
|
||||
import {DirectiveNormalizer} from '@angular/compiler/src/directive_normalizer';
|
||||
import {DirectiveResolver} from '@angular/compiler/src/directive_resolver';
|
||||
@ -235,12 +235,12 @@ export class TypeScriptServiceHost implements LanguageServiceHost {
|
||||
const urlResolver = createOfflineCompileUrlResolver();
|
||||
for (const module of ngModuleSummary.ngModules) {
|
||||
for (const directive of module.declaredDirectives) {
|
||||
const directiveMetadata =
|
||||
const {metadata, annotation} =
|
||||
this.resolver.getNonNormalizedDirectiveMetadata(directive.reference);
|
||||
if (directiveMetadata.isComponent && directiveMetadata.template &&
|
||||
directiveMetadata.template.templateUrl) {
|
||||
const templateName =
|
||||
urlResolver.resolve(directive.moduleUrl, directiveMetadata.template.templateUrl);
|
||||
if (metadata.isComponent && metadata.template && metadata.template.templateUrl) {
|
||||
const templateName = urlResolver.resolve(
|
||||
componentModuleUrl(this.reflector, directive.reference, annotation),
|
||||
metadata.template.templateUrl);
|
||||
fileToComponent.set(templateName, directive.reference);
|
||||
templateReference.push(templateName);
|
||||
}
|
||||
@ -427,7 +427,7 @@ export class TypeScriptServiceHost implements LanguageServiceHost {
|
||||
this._reflector.getStaticSymbol(sourceFile.fileName, classDeclaration.name.text);
|
||||
try {
|
||||
if (this.resolver.isDirective(staticSymbol as any)) {
|
||||
const metadata =
|
||||
const {metadata} =
|
||||
this.resolver.getNonNormalizedDirectiveMetadata(staticSymbol as any);
|
||||
return {type: staticSymbol, declarationSpan: spanOf(target), metadata};
|
||||
}
|
||||
|
@ -6,7 +6,7 @@
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
|
||||
import {CompileDirectiveSummary, CompileTypeMetadata} from '@angular/compiler';
|
||||
import {CompileDirectiveSummary, CompileTypeMetadata, identifierName} from '@angular/compiler';
|
||||
import {ParseSourceSpan} from '@angular/compiler/src/parse_util';
|
||||
import {CssSelector, SelectorMatcher} from '@angular/compiler/src/selector';
|
||||
|
||||
@ -56,7 +56,8 @@ export function isNarrower(spanA: Span, spanB: Span): boolean {
|
||||
export function hasTemplateReference(type: CompileTypeMetadata): boolean {
|
||||
if (type.diDeps) {
|
||||
for (let diDep of type.diDeps) {
|
||||
if (diDep.token.identifier && diDep.token.identifier.name == 'TemplateRef') return true;
|
||||
if (diDep.token.identifier && identifierName(diDep.token.identifier) == 'TemplateRef')
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
Reference in New Issue
Block a user