refactor(compiler-cli): implement DeclarationNode
node type (#38959)
Previously the `ConcreteDeclaration` and `InlineDeclaration` had different properties for the underlying node type. And the `InlineDeclaration` did not store a value that represented its declaration. It turns out that a natural declaration node for an inline type is the expression. For example in UMD/CommonJS this would be the `exports.<name>` property access node. So this expression is now used for the `node` of `InlineDeclaration` types and the `expression` property is dropped. To support this the codebase has been refactored to use a new `DeclarationNode` type which is a union of `ts.Declaration|ts.Expression` instead of `ts.Declaration` throughout. PR Close #38959
This commit is contained in:

committed by
atscott

parent
2c0282f4c2
commit
0accd1e68d
@ -12,6 +12,7 @@ ts_library(
|
||||
"//packages/compiler-cli/src/ngtsc/core:api",
|
||||
"//packages/compiler-cli/src/ngtsc/file_system",
|
||||
"//packages/compiler-cli/src/ngtsc/incremental",
|
||||
"//packages/compiler-cli/src/ngtsc/reflection",
|
||||
"//packages/compiler-cli/src/ngtsc/shims",
|
||||
"//packages/compiler-cli/src/ngtsc/typecheck",
|
||||
"//packages/compiler-cli/src/ngtsc/typecheck/api",
|
||||
|
@ -7,6 +7,7 @@
|
||||
*/
|
||||
import {AbsoluteSourceSpan, CssSelector, ParseSourceSpan, SelectorMatcher} from '@angular/compiler';
|
||||
import {NgCompiler} from '@angular/compiler-cli/src/ngtsc/core';
|
||||
import {DeclarationNode} from '@angular/compiler-cli/src/ngtsc/reflection';
|
||||
import {DirectiveSymbol} from '@angular/compiler-cli/src/ngtsc/typecheck/api';
|
||||
import * as e from '@angular/compiler/src/expression_parser/ast'; // e for expression AST
|
||||
import * as t from '@angular/compiler/src/render3/r3_ast'; // t for template AST
|
||||
@ -81,7 +82,7 @@ export function getTemplateInfoAtPosition(
|
||||
* First, attempt to sort component declarations by file name.
|
||||
* If the files are the same, sort by start location of the declaration.
|
||||
*/
|
||||
function tsDeclarationSortComparator(a: ts.Declaration, b: ts.Declaration): number {
|
||||
function tsDeclarationSortComparator(a: DeclarationNode, b: DeclarationNode): number {
|
||||
const aFile = a.getSourceFile().fileName;
|
||||
const bFile = b.getSourceFile().fileName;
|
||||
if (aFile < bFile) {
|
||||
|
Reference in New Issue
Block a user