diff --git a/packages/compiler-cli/src/diagnostics/expression_diagnostics.ts b/packages/compiler-cli/src/diagnostics/expression_diagnostics.ts index 2253d2c077..135be11753 100644 --- a/packages/compiler-cli/src/diagnostics/expression_diagnostics.ts +++ b/packages/compiler-cli/src/diagnostics/expression_diagnostics.ts @@ -335,4 +335,4 @@ function offsetSpan(span: Span, amount: number): Span { function spanOf(sourceSpan: ParseSourceSpan): Span { return {start: sourceSpan.start.offset, end: sourceSpan.end.offset}; -} \ No newline at end of file +} diff --git a/packages/compiler-cli/src/diagnostics/typescript_symbols.ts b/packages/compiler-cli/src/diagnostics/typescript_symbols.ts index 6f2d072866..99c63d9155 100644 --- a/packages/compiler-cli/src/diagnostics/typescript_symbols.ts +++ b/packages/compiler-cli/src/diagnostics/typescript_symbols.ts @@ -557,7 +557,7 @@ class PipeSymbol implements Symbol { selectSignature(types: Symbol[]): Signature|undefined { let signature = selectSignature(this.tsType, this.context, types) !; - if (types.length == 1) { + if (types.length > 0) { const parameterType = types[0]; if (parameterType instanceof TypeWrapper) { let resultType: ts.Type|undefined = undefined; @@ -575,7 +575,7 @@ class PipeSymbol implements Symbol { } break; case 'slice': - resultType = getTypeParameterOf(parameterType.tsType, 'Array'); + resultType = parameterType.tsType; break; } if (resultType) { diff --git a/packages/language-service/test/diagnostics_spec.ts b/packages/language-service/test/diagnostics_spec.ts index 8672897401..daaa615435 100644 --- a/packages/language-service/test/diagnostics_spec.ts +++ b/packages/language-service/test/diagnostics_spec.ts @@ -76,6 +76,26 @@ describe('diagnostics', () => { } }); + it('should not produce diagnostics for slice pipe with arguments', () => { + mockHost.override(TEST_TEMPLATE, ` +