refactor(compiler-cli): remove unnecessary constraint on `isDeclarationReference()` (#38959)

There is no need to check that the `ref.node` is of any particular type
because immediately after this check the entry is tested to see if it passes
`isClassDeclarationReference()`.

The only difference is that the error that is reported is slightly different
in the case that it is a `ref` but not one of the TS node types.

Previously:

```
`Value at position ${idx} in the NgModule.${arrayName} of ${
                className} is not a reference`
```

now

```
`Value at position ${idx} in the NgModule.${arrayName} of ${
                  className} is not a class`
```

Arguably the previous message was wrong, since this entry IS a reference
but is not a class.

PR Close #38959
This commit is contained in:
Pete Bacon Darwin 2020-09-27 10:50:51 +01:00 committed by atscott
parent cee393d0da
commit f35e9158b2
1 changed files with 2 additions and 9 deletions

View File

@ -540,8 +540,7 @@ export class NgModuleDecoratorHandler implements
} }
// Verify that a `ts.Declaration` reference is a `ClassDeclaration` reference. // Verify that a `ts.Declaration` reference is a `ClassDeclaration` reference.
private isClassDeclarationReference(ref: Reference<ts.Declaration>): private isClassDeclarationReference(ref: Reference): ref is Reference<ClassDeclaration> {
ref is Reference<ClassDeclaration> {
return this.reflector.isClass(ref.node); return this.reflector.isClass(ref.node);
} }
@ -568,7 +567,7 @@ export class NgModuleDecoratorHandler implements
if (Array.isArray(entry)) { if (Array.isArray(entry)) {
// Recurse into nested arrays. // Recurse into nested arrays.
refList.push(...this.resolveTypeList(expr, entry, className, arrayName)); refList.push(...this.resolveTypeList(expr, entry, className, arrayName));
} else if (isDeclarationReference(entry)) { } else if (entry instanceof Reference) {
if (!this.isClassDeclarationReference(entry)) { if (!this.isClassDeclarationReference(entry)) {
throw createValueHasWrongTypeError( throw createValueHasWrongTypeError(
entry.node, entry, entry.node, entry,
@ -593,9 +592,3 @@ function isNgModule(node: ClassDeclaration, compilation: ScopeData): boolean {
return !compilation.directives.some(directive => directive.ref.node === node) && return !compilation.directives.some(directive => directive.ref.node === node) &&
!compilation.pipes.some(pipe => pipe.ref.node === node); !compilation.pipes.some(pipe => pipe.ref.node === node);
} }
function isDeclarationReference(ref: any): ref is Reference<ts.Declaration> {
return ref instanceof Reference &&
(ts.isClassDeclaration(ref.node) || ts.isFunctionDeclaration(ref.node) ||
ts.isVariableDeclaration(ref.node));
}