From b09da6739019950fcdf0aa4a6757d545fc1f494c Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Sat, 7 Oct 2017 14:46:33 -0700 Subject: [PATCH] Added tests for pipeline --- src/compiler/checker.ts | 2 +- .../emitter.pipelineOperatorStage1.es2015.js | 13 ++++ ...tter.pipelineOperatorStage1.es2015.symbols | 40 ++++++++++++ ...mitter.pipelineOperatorStage1.es2015.types | 48 ++++++++++++++ .../emitter.pipelineOperatorStage1.es5.js | 13 ++++ ...emitter.pipelineOperatorStage1.es5.symbols | 40 ++++++++++++ .../emitter.pipelineOperatorStage1.es5.types | 48 ++++++++++++++ .../emitter.pipelineOperatorStage1.esnext.js | 12 ++++ ...tter.pipelineOperatorStage1.esnext.symbols | 40 ++++++++++++ ...mitter.pipelineOperatorStage1.esnext.types | 48 ++++++++++++++ .../reference/pipelineOperatorStage1.js | 13 ++++ .../reference/pipelineOperatorStage1.symbols | 49 +++++++++++++++ .../reference/pipelineOperatorStage1.types | 63 +++++++++++++++++++ ...peratorStage1WithNonFunctionRHS.errors.txt | 14 +++++ ...ipelineOperatorStage1WithNonFunctionRHS.js | 12 ++++ ...neOperatorStage1WithNonFunctionRHS.symbols | 37 +++++++++++ ...lineOperatorStage1WithNonFunctionRHS.types | 39 ++++++++++++ .../emitter.pipelineOperatorStage1.es2015.ts | 8 +++ .../emitter.pipelineOperatorStage1.es5.ts | 9 +++ .../emitter.pipelineOperatorStage1.esnext.ts | 8 +++ .../pipelineOperatorStage1.ts | 9 +++ ...ipelineOperatorStage1WithNonFunctionRHS.ts | 8 +++ 22 files changed, 572 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/emitter.pipelineOperatorStage1.es2015.js create mode 100644 tests/baselines/reference/emitter.pipelineOperatorStage1.es2015.symbols create mode 100644 tests/baselines/reference/emitter.pipelineOperatorStage1.es2015.types create mode 100644 tests/baselines/reference/emitter.pipelineOperatorStage1.es5.js create mode 100644 tests/baselines/reference/emitter.pipelineOperatorStage1.es5.symbols create mode 100644 tests/baselines/reference/emitter.pipelineOperatorStage1.es5.types create mode 100644 tests/baselines/reference/emitter.pipelineOperatorStage1.esnext.js create mode 100644 tests/baselines/reference/emitter.pipelineOperatorStage1.esnext.symbols create mode 100644 tests/baselines/reference/emitter.pipelineOperatorStage1.esnext.types create mode 100644 tests/baselines/reference/pipelineOperatorStage1.js create mode 100644 tests/baselines/reference/pipelineOperatorStage1.symbols create mode 100644 tests/baselines/reference/pipelineOperatorStage1.types create mode 100644 tests/baselines/reference/pipelineOperatorStage1WithNonFunctionRHS.errors.txt create mode 100644 tests/baselines/reference/pipelineOperatorStage1WithNonFunctionRHS.js create mode 100644 tests/baselines/reference/pipelineOperatorStage1WithNonFunctionRHS.symbols create mode 100644 tests/baselines/reference/pipelineOperatorStage1WithNonFunctionRHS.types create mode 100644 tests/cases/conformance/emitter/es2015/pipelineOperatorStage1/emitter.pipelineOperatorStage1.es2015.ts create mode 100644 tests/cases/conformance/emitter/es5/pipelineOperatorStage1/emitter.pipelineOperatorStage1.es5.ts create mode 100644 tests/cases/conformance/emitter/esnext/pipelineOperatorStage1/emitter.pipelineOperatorStage1.esnext.ts create mode 100644 tests/cases/conformance/expressions/pipelineOperatorStage1/pipelineOperatorStage1.ts create mode 100644 tests/cases/conformance/expressions/pipelineOperatorStage1/pipelineOperatorStage1WithNonFunctionRHS.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 9e932c3017a..9db800caa06 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -25337,7 +25337,7 @@ namespace ts { } function checkGrammarPipelineExpression(node: PipelineExpression) { - if (!compilerOptions.experimentalPipeline) { + if (!compilerOptions.experimentalPipelineStage1) { return grammarErrorOnNode(node.operatorToken, Diagnostics.Pipeline_expressions_are_part_of_a_stage_1_ECMAScript_proposal_and_are_subject_to_change_in_future_releases_Set_the_experimentalPipelineStage1_option_to_remove_this_warning); } } diff --git a/tests/baselines/reference/emitter.pipelineOperatorStage1.es2015.js b/tests/baselines/reference/emitter.pipelineOperatorStage1.es2015.js new file mode 100644 index 00000000000..0424cb367c7 --- /dev/null +++ b/tests/baselines/reference/emitter.pipelineOperatorStage1.es2015.js @@ -0,0 +1,13 @@ +//// [emitter.pipelineOperatorStage1.es2015.ts] +declare const ar: Iterable; +declare function map(ar: Iterable, fn: (v: T) => U): Iterable; +declare function identity(value: T): T; + +const x = ar |> (_ => map(_, x => x + 1)); +const y = ar |> identity; + + +//// [emitter.pipelineOperatorStage1.es2015.js] +const x = (_a = ar, (_ => map(_, x => x + 1))(_a)); +const y = (_b = ar, identity(_b)); +var _a, _b; diff --git a/tests/baselines/reference/emitter.pipelineOperatorStage1.es2015.symbols b/tests/baselines/reference/emitter.pipelineOperatorStage1.es2015.symbols new file mode 100644 index 00000000000..f959933903e --- /dev/null +++ b/tests/baselines/reference/emitter.pipelineOperatorStage1.es2015.symbols @@ -0,0 +1,40 @@ +=== tests/cases/conformance/emitter/es2015/pipelineOperatorStage1/emitter.pipelineOperatorStage1.es2015.ts === +declare const ar: Iterable; +>ar : Symbol(ar, Decl(emitter.pipelineOperatorStage1.es2015.ts, 0, 13)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.iterable.d.ts, --, --)) + +declare function map(ar: Iterable, fn: (v: T) => U): Iterable; +>map : Symbol(map, Decl(emitter.pipelineOperatorStage1.es2015.ts, 0, 35)) +>T : Symbol(T, Decl(emitter.pipelineOperatorStage1.es2015.ts, 1, 21)) +>U : Symbol(U, Decl(emitter.pipelineOperatorStage1.es2015.ts, 1, 23)) +>ar : Symbol(ar, Decl(emitter.pipelineOperatorStage1.es2015.ts, 1, 27)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.iterable.d.ts, --, --)) +>T : Symbol(T, Decl(emitter.pipelineOperatorStage1.es2015.ts, 1, 21)) +>fn : Symbol(fn, Decl(emitter.pipelineOperatorStage1.es2015.ts, 1, 43)) +>v : Symbol(v, Decl(emitter.pipelineOperatorStage1.es2015.ts, 1, 49)) +>T : Symbol(T, Decl(emitter.pipelineOperatorStage1.es2015.ts, 1, 21)) +>U : Symbol(U, Decl(emitter.pipelineOperatorStage1.es2015.ts, 1, 23)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.iterable.d.ts, --, --)) +>U : Symbol(U, Decl(emitter.pipelineOperatorStage1.es2015.ts, 1, 23)) + +declare function identity(value: T): T; +>identity : Symbol(identity, Decl(emitter.pipelineOperatorStage1.es2015.ts, 1, 74)) +>T : Symbol(T, Decl(emitter.pipelineOperatorStage1.es2015.ts, 2, 26)) +>value : Symbol(value, Decl(emitter.pipelineOperatorStage1.es2015.ts, 2, 29)) +>T : Symbol(T, Decl(emitter.pipelineOperatorStage1.es2015.ts, 2, 26)) +>T : Symbol(T, Decl(emitter.pipelineOperatorStage1.es2015.ts, 2, 26)) + +const x = ar |> (_ => map(_, x => x + 1)); +>x : Symbol(x, Decl(emitter.pipelineOperatorStage1.es2015.ts, 4, 5)) +>ar : Symbol(ar, Decl(emitter.pipelineOperatorStage1.es2015.ts, 0, 13)) +>_ : Symbol(_, Decl(emitter.pipelineOperatorStage1.es2015.ts, 4, 17)) +>map : Symbol(map, Decl(emitter.pipelineOperatorStage1.es2015.ts, 0, 35)) +>_ : Symbol(_, Decl(emitter.pipelineOperatorStage1.es2015.ts, 4, 17)) +>x : Symbol(x, Decl(emitter.pipelineOperatorStage1.es2015.ts, 4, 28)) +>x : Symbol(x, Decl(emitter.pipelineOperatorStage1.es2015.ts, 4, 28)) + +const y = ar |> identity; +>y : Symbol(y, Decl(emitter.pipelineOperatorStage1.es2015.ts, 5, 5)) +>ar : Symbol(ar, Decl(emitter.pipelineOperatorStage1.es2015.ts, 0, 13)) +>identity : Symbol(identity, Decl(emitter.pipelineOperatorStage1.es2015.ts, 1, 74)) + diff --git a/tests/baselines/reference/emitter.pipelineOperatorStage1.es2015.types b/tests/baselines/reference/emitter.pipelineOperatorStage1.es2015.types new file mode 100644 index 00000000000..2c6d4e8d1b9 --- /dev/null +++ b/tests/baselines/reference/emitter.pipelineOperatorStage1.es2015.types @@ -0,0 +1,48 @@ +=== tests/cases/conformance/emitter/es2015/pipelineOperatorStage1/emitter.pipelineOperatorStage1.es2015.ts === +declare const ar: Iterable; +>ar : Iterable +>Iterable : Iterable + +declare function map(ar: Iterable, fn: (v: T) => U): Iterable; +>map : (ar: Iterable, fn: (v: T) => U) => Iterable +>T : T +>U : U +>ar : Iterable +>Iterable : Iterable +>T : T +>fn : (v: T) => U +>v : T +>T : T +>U : U +>Iterable : Iterable +>U : U + +declare function identity(value: T): T; +>identity : (value: T) => T +>T : T +>value : T +>T : T +>T : T + +const x = ar |> (_ => map(_, x => x + 1)); +>x : Iterable +>ar |> (_ => map(_, x => x + 1)) : Iterable +>ar : Iterable +>(_ => map(_, x => x + 1)) : (_: Iterable) => Iterable +>_ => map(_, x => x + 1) : (_: Iterable) => Iterable +>_ : Iterable +>map(_, x => x + 1) : Iterable +>map : (ar: Iterable, fn: (v: T) => U) => Iterable +>_ : Iterable +>x => x + 1 : (x: number) => number +>x : number +>x + 1 : number +>x : number +>1 : 1 + +const y = ar |> identity; +>y : Iterable +>ar |> identity : Iterable +>ar : Iterable +>identity : (value: T) => T + diff --git a/tests/baselines/reference/emitter.pipelineOperatorStage1.es5.js b/tests/baselines/reference/emitter.pipelineOperatorStage1.es5.js new file mode 100644 index 00000000000..637abb6b3ad --- /dev/null +++ b/tests/baselines/reference/emitter.pipelineOperatorStage1.es5.js @@ -0,0 +1,13 @@ +//// [emitter.pipelineOperatorStage1.es5.ts] +declare const ar: Iterable; +declare function map(ar: Iterable, fn: (v: T) => U): Iterable; +declare function identity(value: T): T; + +const x = ar |> (_ => map(_, x => x + 1)); +const y = ar |> identity; + + +//// [emitter.pipelineOperatorStage1.es5.js] +var x = (_a = ar, (function (_) { return map(_, function (x) { return x + 1; }); })(_a)); +var y = (_b = ar, identity(_b)); +var _a, _b; diff --git a/tests/baselines/reference/emitter.pipelineOperatorStage1.es5.symbols b/tests/baselines/reference/emitter.pipelineOperatorStage1.es5.symbols new file mode 100644 index 00000000000..7d43eecf77f --- /dev/null +++ b/tests/baselines/reference/emitter.pipelineOperatorStage1.es5.symbols @@ -0,0 +1,40 @@ +=== tests/cases/conformance/emitter/es5/pipelineOperatorStage1/emitter.pipelineOperatorStage1.es5.ts === +declare const ar: Iterable; +>ar : Symbol(ar, Decl(emitter.pipelineOperatorStage1.es5.ts, 0, 13)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.iterable.d.ts, --, --)) + +declare function map(ar: Iterable, fn: (v: T) => U): Iterable; +>map : Symbol(map, Decl(emitter.pipelineOperatorStage1.es5.ts, 0, 35)) +>T : Symbol(T, Decl(emitter.pipelineOperatorStage1.es5.ts, 1, 21)) +>U : Symbol(U, Decl(emitter.pipelineOperatorStage1.es5.ts, 1, 23)) +>ar : Symbol(ar, Decl(emitter.pipelineOperatorStage1.es5.ts, 1, 27)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.iterable.d.ts, --, --)) +>T : Symbol(T, Decl(emitter.pipelineOperatorStage1.es5.ts, 1, 21)) +>fn : Symbol(fn, Decl(emitter.pipelineOperatorStage1.es5.ts, 1, 43)) +>v : Symbol(v, Decl(emitter.pipelineOperatorStage1.es5.ts, 1, 49)) +>T : Symbol(T, Decl(emitter.pipelineOperatorStage1.es5.ts, 1, 21)) +>U : Symbol(U, Decl(emitter.pipelineOperatorStage1.es5.ts, 1, 23)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.iterable.d.ts, --, --)) +>U : Symbol(U, Decl(emitter.pipelineOperatorStage1.es5.ts, 1, 23)) + +declare function identity(value: T): T; +>identity : Symbol(identity, Decl(emitter.pipelineOperatorStage1.es5.ts, 1, 74)) +>T : Symbol(T, Decl(emitter.pipelineOperatorStage1.es5.ts, 2, 26)) +>value : Symbol(value, Decl(emitter.pipelineOperatorStage1.es5.ts, 2, 29)) +>T : Symbol(T, Decl(emitter.pipelineOperatorStage1.es5.ts, 2, 26)) +>T : Symbol(T, Decl(emitter.pipelineOperatorStage1.es5.ts, 2, 26)) + +const x = ar |> (_ => map(_, x => x + 1)); +>x : Symbol(x, Decl(emitter.pipelineOperatorStage1.es5.ts, 4, 5)) +>ar : Symbol(ar, Decl(emitter.pipelineOperatorStage1.es5.ts, 0, 13)) +>_ : Symbol(_, Decl(emitter.pipelineOperatorStage1.es5.ts, 4, 17)) +>map : Symbol(map, Decl(emitter.pipelineOperatorStage1.es5.ts, 0, 35)) +>_ : Symbol(_, Decl(emitter.pipelineOperatorStage1.es5.ts, 4, 17)) +>x : Symbol(x, Decl(emitter.pipelineOperatorStage1.es5.ts, 4, 28)) +>x : Symbol(x, Decl(emitter.pipelineOperatorStage1.es5.ts, 4, 28)) + +const y = ar |> identity; +>y : Symbol(y, Decl(emitter.pipelineOperatorStage1.es5.ts, 5, 5)) +>ar : Symbol(ar, Decl(emitter.pipelineOperatorStage1.es5.ts, 0, 13)) +>identity : Symbol(identity, Decl(emitter.pipelineOperatorStage1.es5.ts, 1, 74)) + diff --git a/tests/baselines/reference/emitter.pipelineOperatorStage1.es5.types b/tests/baselines/reference/emitter.pipelineOperatorStage1.es5.types new file mode 100644 index 00000000000..963259ec105 --- /dev/null +++ b/tests/baselines/reference/emitter.pipelineOperatorStage1.es5.types @@ -0,0 +1,48 @@ +=== tests/cases/conformance/emitter/es5/pipelineOperatorStage1/emitter.pipelineOperatorStage1.es5.ts === +declare const ar: Iterable; +>ar : Iterable +>Iterable : Iterable + +declare function map(ar: Iterable, fn: (v: T) => U): Iterable; +>map : (ar: Iterable, fn: (v: T) => U) => Iterable +>T : T +>U : U +>ar : Iterable +>Iterable : Iterable +>T : T +>fn : (v: T) => U +>v : T +>T : T +>U : U +>Iterable : Iterable +>U : U + +declare function identity(value: T): T; +>identity : (value: T) => T +>T : T +>value : T +>T : T +>T : T + +const x = ar |> (_ => map(_, x => x + 1)); +>x : Iterable +>ar |> (_ => map(_, x => x + 1)) : Iterable +>ar : Iterable +>(_ => map(_, x => x + 1)) : (_: Iterable) => Iterable +>_ => map(_, x => x + 1) : (_: Iterable) => Iterable +>_ : Iterable +>map(_, x => x + 1) : Iterable +>map : (ar: Iterable, fn: (v: T) => U) => Iterable +>_ : Iterable +>x => x + 1 : (x: number) => number +>x : number +>x + 1 : number +>x : number +>1 : 1 + +const y = ar |> identity; +>y : Iterable +>ar |> identity : Iterable +>ar : Iterable +>identity : (value: T) => T + diff --git a/tests/baselines/reference/emitter.pipelineOperatorStage1.esnext.js b/tests/baselines/reference/emitter.pipelineOperatorStage1.esnext.js new file mode 100644 index 00000000000..34789659a50 --- /dev/null +++ b/tests/baselines/reference/emitter.pipelineOperatorStage1.esnext.js @@ -0,0 +1,12 @@ +//// [emitter.pipelineOperatorStage1.esnext.ts] +declare const ar: Iterable; +declare function map(ar: Iterable, fn: (v: T) => U): Iterable; +declare function identity(value: T): T; + +const x = ar |> (_ => map(_, x => x + 1)); +const y = ar |> identity; + + +//// [emitter.pipelineOperatorStage1.esnext.js] +const x = ar |> (_ => map(_, x => x + 1)); +const y = ar |> identity; diff --git a/tests/baselines/reference/emitter.pipelineOperatorStage1.esnext.symbols b/tests/baselines/reference/emitter.pipelineOperatorStage1.esnext.symbols new file mode 100644 index 00000000000..8f63c682905 --- /dev/null +++ b/tests/baselines/reference/emitter.pipelineOperatorStage1.esnext.symbols @@ -0,0 +1,40 @@ +=== tests/cases/conformance/emitter/esnext/pipelineOperatorStage1/emitter.pipelineOperatorStage1.esnext.ts === +declare const ar: Iterable; +>ar : Symbol(ar, Decl(emitter.pipelineOperatorStage1.esnext.ts, 0, 13)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.iterable.d.ts, --, --)) + +declare function map(ar: Iterable, fn: (v: T) => U): Iterable; +>map : Symbol(map, Decl(emitter.pipelineOperatorStage1.esnext.ts, 0, 35)) +>T : Symbol(T, Decl(emitter.pipelineOperatorStage1.esnext.ts, 1, 21)) +>U : Symbol(U, Decl(emitter.pipelineOperatorStage1.esnext.ts, 1, 23)) +>ar : Symbol(ar, Decl(emitter.pipelineOperatorStage1.esnext.ts, 1, 27)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.iterable.d.ts, --, --)) +>T : Symbol(T, Decl(emitter.pipelineOperatorStage1.esnext.ts, 1, 21)) +>fn : Symbol(fn, Decl(emitter.pipelineOperatorStage1.esnext.ts, 1, 43)) +>v : Symbol(v, Decl(emitter.pipelineOperatorStage1.esnext.ts, 1, 49)) +>T : Symbol(T, Decl(emitter.pipelineOperatorStage1.esnext.ts, 1, 21)) +>U : Symbol(U, Decl(emitter.pipelineOperatorStage1.esnext.ts, 1, 23)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.iterable.d.ts, --, --)) +>U : Symbol(U, Decl(emitter.pipelineOperatorStage1.esnext.ts, 1, 23)) + +declare function identity(value: T): T; +>identity : Symbol(identity, Decl(emitter.pipelineOperatorStage1.esnext.ts, 1, 74)) +>T : Symbol(T, Decl(emitter.pipelineOperatorStage1.esnext.ts, 2, 26)) +>value : Symbol(value, Decl(emitter.pipelineOperatorStage1.esnext.ts, 2, 29)) +>T : Symbol(T, Decl(emitter.pipelineOperatorStage1.esnext.ts, 2, 26)) +>T : Symbol(T, Decl(emitter.pipelineOperatorStage1.esnext.ts, 2, 26)) + +const x = ar |> (_ => map(_, x => x + 1)); +>x : Symbol(x, Decl(emitter.pipelineOperatorStage1.esnext.ts, 4, 5)) +>ar : Symbol(ar, Decl(emitter.pipelineOperatorStage1.esnext.ts, 0, 13)) +>_ : Symbol(_, Decl(emitter.pipelineOperatorStage1.esnext.ts, 4, 17)) +>map : Symbol(map, Decl(emitter.pipelineOperatorStage1.esnext.ts, 0, 35)) +>_ : Symbol(_, Decl(emitter.pipelineOperatorStage1.esnext.ts, 4, 17)) +>x : Symbol(x, Decl(emitter.pipelineOperatorStage1.esnext.ts, 4, 28)) +>x : Symbol(x, Decl(emitter.pipelineOperatorStage1.esnext.ts, 4, 28)) + +const y = ar |> identity; +>y : Symbol(y, Decl(emitter.pipelineOperatorStage1.esnext.ts, 5, 5)) +>ar : Symbol(ar, Decl(emitter.pipelineOperatorStage1.esnext.ts, 0, 13)) +>identity : Symbol(identity, Decl(emitter.pipelineOperatorStage1.esnext.ts, 1, 74)) + diff --git a/tests/baselines/reference/emitter.pipelineOperatorStage1.esnext.types b/tests/baselines/reference/emitter.pipelineOperatorStage1.esnext.types new file mode 100644 index 00000000000..da5a8d88ef2 --- /dev/null +++ b/tests/baselines/reference/emitter.pipelineOperatorStage1.esnext.types @@ -0,0 +1,48 @@ +=== tests/cases/conformance/emitter/esnext/pipelineOperatorStage1/emitter.pipelineOperatorStage1.esnext.ts === +declare const ar: Iterable; +>ar : Iterable +>Iterable : Iterable + +declare function map(ar: Iterable, fn: (v: T) => U): Iterable; +>map : (ar: Iterable, fn: (v: T) => U) => Iterable +>T : T +>U : U +>ar : Iterable +>Iterable : Iterable +>T : T +>fn : (v: T) => U +>v : T +>T : T +>U : U +>Iterable : Iterable +>U : U + +declare function identity(value: T): T; +>identity : (value: T) => T +>T : T +>value : T +>T : T +>T : T + +const x = ar |> (_ => map(_, x => x + 1)); +>x : Iterable +>ar |> (_ => map(_, x => x + 1)) : Iterable +>ar : Iterable +>(_ => map(_, x => x + 1)) : (_: Iterable) => Iterable +>_ => map(_, x => x + 1) : (_: Iterable) => Iterable +>_ : Iterable +>map(_, x => x + 1) : Iterable +>map : (ar: Iterable, fn: (v: T) => U) => Iterable +>_ : Iterable +>x => x + 1 : (x: number) => number +>x : number +>x + 1 : number +>x : number +>1 : 1 + +const y = ar |> identity; +>y : Iterable +>ar |> identity : Iterable +>ar : Iterable +>identity : (value: T) => T + diff --git a/tests/baselines/reference/pipelineOperatorStage1.js b/tests/baselines/reference/pipelineOperatorStage1.js new file mode 100644 index 00000000000..06a75bc2486 --- /dev/null +++ b/tests/baselines/reference/pipelineOperatorStage1.js @@ -0,0 +1,13 @@ +//// [pipelineOperatorStage1.ts] +declare const ar: Iterable; +declare function map(ar: Iterable, fn: (v: T) => U): Iterable; +declare function filter(ar: Iterable, fn: (v: T) => boolean): Iterable; + +const x = ar + |> (_ => map(_, x => x + 1)) + |> (_ => filter(_, x => x > 2)); + + +//// [pipelineOperatorStage1.js] +const x = (_a = ar, _a = (_ => map(_, x => x + 1))(_a), (_ => filter(_, x => x > 2))(_a)); +var _a; diff --git a/tests/baselines/reference/pipelineOperatorStage1.symbols b/tests/baselines/reference/pipelineOperatorStage1.symbols new file mode 100644 index 00000000000..1975f320503 --- /dev/null +++ b/tests/baselines/reference/pipelineOperatorStage1.symbols @@ -0,0 +1,49 @@ +=== tests/cases/conformance/expressions/pipelineOperatorStage1/pipelineOperatorStage1.ts === +declare const ar: Iterable; +>ar : Symbol(ar, Decl(pipelineOperatorStage1.ts, 0, 13)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.iterable.d.ts, --, --)) + +declare function map(ar: Iterable, fn: (v: T) => U): Iterable; +>map : Symbol(map, Decl(pipelineOperatorStage1.ts, 0, 35)) +>T : Symbol(T, Decl(pipelineOperatorStage1.ts, 1, 21)) +>U : Symbol(U, Decl(pipelineOperatorStage1.ts, 1, 23)) +>ar : Symbol(ar, Decl(pipelineOperatorStage1.ts, 1, 27)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.iterable.d.ts, --, --)) +>T : Symbol(T, Decl(pipelineOperatorStage1.ts, 1, 21)) +>fn : Symbol(fn, Decl(pipelineOperatorStage1.ts, 1, 43)) +>v : Symbol(v, Decl(pipelineOperatorStage1.ts, 1, 49)) +>T : Symbol(T, Decl(pipelineOperatorStage1.ts, 1, 21)) +>U : Symbol(U, Decl(pipelineOperatorStage1.ts, 1, 23)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.iterable.d.ts, --, --)) +>U : Symbol(U, Decl(pipelineOperatorStage1.ts, 1, 23)) + +declare function filter(ar: Iterable, fn: (v: T) => boolean): Iterable; +>filter : Symbol(filter, Decl(pipelineOperatorStage1.ts, 1, 74)) +>T : Symbol(T, Decl(pipelineOperatorStage1.ts, 2, 24)) +>ar : Symbol(ar, Decl(pipelineOperatorStage1.ts, 2, 27)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.iterable.d.ts, --, --)) +>T : Symbol(T, Decl(pipelineOperatorStage1.ts, 2, 24)) +>fn : Symbol(fn, Decl(pipelineOperatorStage1.ts, 2, 43)) +>v : Symbol(v, Decl(pipelineOperatorStage1.ts, 2, 49)) +>T : Symbol(T, Decl(pipelineOperatorStage1.ts, 2, 24)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.iterable.d.ts, --, --)) +>T : Symbol(T, Decl(pipelineOperatorStage1.ts, 2, 24)) + +const x = ar +>x : Symbol(x, Decl(pipelineOperatorStage1.ts, 4, 5)) +>ar : Symbol(ar, Decl(pipelineOperatorStage1.ts, 0, 13)) + + |> (_ => map(_, x => x + 1)) +>_ : Symbol(_, Decl(pipelineOperatorStage1.ts, 5, 8)) +>map : Symbol(map, Decl(pipelineOperatorStage1.ts, 0, 35)) +>_ : Symbol(_, Decl(pipelineOperatorStage1.ts, 5, 8)) +>x : Symbol(x, Decl(pipelineOperatorStage1.ts, 5, 19)) +>x : Symbol(x, Decl(pipelineOperatorStage1.ts, 5, 19)) + + |> (_ => filter(_, x => x > 2)); +>_ : Symbol(_, Decl(pipelineOperatorStage1.ts, 6, 8)) +>filter : Symbol(filter, Decl(pipelineOperatorStage1.ts, 1, 74)) +>_ : Symbol(_, Decl(pipelineOperatorStage1.ts, 6, 8)) +>x : Symbol(x, Decl(pipelineOperatorStage1.ts, 6, 22)) +>x : Symbol(x, Decl(pipelineOperatorStage1.ts, 6, 22)) + diff --git a/tests/baselines/reference/pipelineOperatorStage1.types b/tests/baselines/reference/pipelineOperatorStage1.types new file mode 100644 index 00000000000..1eb6ad05c39 --- /dev/null +++ b/tests/baselines/reference/pipelineOperatorStage1.types @@ -0,0 +1,63 @@ +=== tests/cases/conformance/expressions/pipelineOperatorStage1/pipelineOperatorStage1.ts === +declare const ar: Iterable; +>ar : Iterable +>Iterable : Iterable + +declare function map(ar: Iterable, fn: (v: T) => U): Iterable; +>map : (ar: Iterable, fn: (v: T) => U) => Iterable +>T : T +>U : U +>ar : Iterable +>Iterable : Iterable +>T : T +>fn : (v: T) => U +>v : T +>T : T +>U : U +>Iterable : Iterable +>U : U + +declare function filter(ar: Iterable, fn: (v: T) => boolean): Iterable; +>filter : (ar: Iterable, fn: (v: T) => boolean) => Iterable +>T : T +>ar : Iterable +>Iterable : Iterable +>T : T +>fn : (v: T) => boolean +>v : T +>T : T +>Iterable : Iterable +>T : T + +const x = ar +>x : Iterable +>ar |> (_ => map(_, x => x + 1)) |> (_ => filter(_, x => x > 2)) : Iterable +>ar |> (_ => map(_, x => x + 1)) : Iterable +>ar : Iterable + + |> (_ => map(_, x => x + 1)) +>(_ => map(_, x => x + 1)) : (_: Iterable) => Iterable +>_ => map(_, x => x + 1) : (_: Iterable) => Iterable +>_ : Iterable +>map(_, x => x + 1) : Iterable +>map : (ar: Iterable, fn: (v: T) => U) => Iterable +>_ : Iterable +>x => x + 1 : (x: number) => number +>x : number +>x + 1 : number +>x : number +>1 : 1 + + |> (_ => filter(_, x => x > 2)); +>(_ => filter(_, x => x > 2)) : (_: Iterable) => Iterable +>_ => filter(_, x => x > 2) : (_: Iterable) => Iterable +>_ : Iterable +>filter(_, x => x > 2) : Iterable +>filter : (ar: Iterable, fn: (v: T) => boolean) => Iterable +>_ : Iterable +>x => x > 2 : (x: number) => boolean +>x : number +>x > 2 : boolean +>x : number +>2 : 2 + diff --git a/tests/baselines/reference/pipelineOperatorStage1WithNonFunctionRHS.errors.txt b/tests/baselines/reference/pipelineOperatorStage1WithNonFunctionRHS.errors.txt new file mode 100644 index 00000000000..07be1e84722 --- /dev/null +++ b/tests/baselines/reference/pipelineOperatorStage1WithNonFunctionRHS.errors.txt @@ -0,0 +1,14 @@ +tests/cases/conformance/expressions/pipelineOperatorStage1/pipelineOperatorStage1WithNonFunctionRHS.ts(5,11): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'Number' has no compatible call signatures. + + +==== tests/cases/conformance/expressions/pipelineOperatorStage1/pipelineOperatorStage1WithNonFunctionRHS.ts (1 errors) ==== + declare const ar: Iterable; + declare function map(ar: Iterable, fn: (v: T) => U): Iterable; + declare function filter(ar: Iterable, fn: (v: T) => boolean): Iterable; + + const x = ar + ~~ + |> 1; + ~~~~~~~~ +!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'Number' has no compatible call signatures. + \ No newline at end of file diff --git a/tests/baselines/reference/pipelineOperatorStage1WithNonFunctionRHS.js b/tests/baselines/reference/pipelineOperatorStage1WithNonFunctionRHS.js new file mode 100644 index 00000000000..68cf74fc7bc --- /dev/null +++ b/tests/baselines/reference/pipelineOperatorStage1WithNonFunctionRHS.js @@ -0,0 +1,12 @@ +//// [pipelineOperatorStage1WithNonFunctionRHS.ts] +declare const ar: Iterable; +declare function map(ar: Iterable, fn: (v: T) => U): Iterable; +declare function filter(ar: Iterable, fn: (v: T) => boolean): Iterable; + +const x = ar + |> 1; + + +//// [pipelineOperatorStage1WithNonFunctionRHS.js] +const x = (_a = ar, 1(_a)); +var _a; diff --git a/tests/baselines/reference/pipelineOperatorStage1WithNonFunctionRHS.symbols b/tests/baselines/reference/pipelineOperatorStage1WithNonFunctionRHS.symbols new file mode 100644 index 00000000000..5b8ce844959 --- /dev/null +++ b/tests/baselines/reference/pipelineOperatorStage1WithNonFunctionRHS.symbols @@ -0,0 +1,37 @@ +=== tests/cases/conformance/expressions/pipelineOperatorStage1/pipelineOperatorStage1WithNonFunctionRHS.ts === +declare const ar: Iterable; +>ar : Symbol(ar, Decl(pipelineOperatorStage1WithNonFunctionRHS.ts, 0, 13)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.iterable.d.ts, --, --)) + +declare function map(ar: Iterable, fn: (v: T) => U): Iterable; +>map : Symbol(map, Decl(pipelineOperatorStage1WithNonFunctionRHS.ts, 0, 35)) +>T : Symbol(T, Decl(pipelineOperatorStage1WithNonFunctionRHS.ts, 1, 21)) +>U : Symbol(U, Decl(pipelineOperatorStage1WithNonFunctionRHS.ts, 1, 23)) +>ar : Symbol(ar, Decl(pipelineOperatorStage1WithNonFunctionRHS.ts, 1, 27)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.iterable.d.ts, --, --)) +>T : Symbol(T, Decl(pipelineOperatorStage1WithNonFunctionRHS.ts, 1, 21)) +>fn : Symbol(fn, Decl(pipelineOperatorStage1WithNonFunctionRHS.ts, 1, 43)) +>v : Symbol(v, Decl(pipelineOperatorStage1WithNonFunctionRHS.ts, 1, 49)) +>T : Symbol(T, Decl(pipelineOperatorStage1WithNonFunctionRHS.ts, 1, 21)) +>U : Symbol(U, Decl(pipelineOperatorStage1WithNonFunctionRHS.ts, 1, 23)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.iterable.d.ts, --, --)) +>U : Symbol(U, Decl(pipelineOperatorStage1WithNonFunctionRHS.ts, 1, 23)) + +declare function filter(ar: Iterable, fn: (v: T) => boolean): Iterable; +>filter : Symbol(filter, Decl(pipelineOperatorStage1WithNonFunctionRHS.ts, 1, 74)) +>T : Symbol(T, Decl(pipelineOperatorStage1WithNonFunctionRHS.ts, 2, 24)) +>ar : Symbol(ar, Decl(pipelineOperatorStage1WithNonFunctionRHS.ts, 2, 27)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.iterable.d.ts, --, --)) +>T : Symbol(T, Decl(pipelineOperatorStage1WithNonFunctionRHS.ts, 2, 24)) +>fn : Symbol(fn, Decl(pipelineOperatorStage1WithNonFunctionRHS.ts, 2, 43)) +>v : Symbol(v, Decl(pipelineOperatorStage1WithNonFunctionRHS.ts, 2, 49)) +>T : Symbol(T, Decl(pipelineOperatorStage1WithNonFunctionRHS.ts, 2, 24)) +>Iterable : Symbol(Iterable, Decl(lib.es2015.iterable.d.ts, --, --)) +>T : Symbol(T, Decl(pipelineOperatorStage1WithNonFunctionRHS.ts, 2, 24)) + +const x = ar +>x : Symbol(x, Decl(pipelineOperatorStage1WithNonFunctionRHS.ts, 4, 5)) +>ar : Symbol(ar, Decl(pipelineOperatorStage1WithNonFunctionRHS.ts, 0, 13)) + + |> 1; + diff --git a/tests/baselines/reference/pipelineOperatorStage1WithNonFunctionRHS.types b/tests/baselines/reference/pipelineOperatorStage1WithNonFunctionRHS.types new file mode 100644 index 00000000000..febaed94923 --- /dev/null +++ b/tests/baselines/reference/pipelineOperatorStage1WithNonFunctionRHS.types @@ -0,0 +1,39 @@ +=== tests/cases/conformance/expressions/pipelineOperatorStage1/pipelineOperatorStage1WithNonFunctionRHS.ts === +declare const ar: Iterable; +>ar : Iterable +>Iterable : Iterable + +declare function map(ar: Iterable, fn: (v: T) => U): Iterable; +>map : (ar: Iterable, fn: (v: T) => U) => Iterable +>T : T +>U : U +>ar : Iterable +>Iterable : Iterable +>T : T +>fn : (v: T) => U +>v : T +>T : T +>U : U +>Iterable : Iterable +>U : U + +declare function filter(ar: Iterable, fn: (v: T) => boolean): Iterable; +>filter : (ar: Iterable, fn: (v: T) => boolean) => Iterable +>T : T +>ar : Iterable +>Iterable : Iterable +>T : T +>fn : (v: T) => boolean +>v : T +>T : T +>Iterable : Iterable +>T : T + +const x = ar +>x : any +>ar |> 1 : any +>ar : Iterable + + |> 1; +>1 : 1 + diff --git a/tests/cases/conformance/emitter/es2015/pipelineOperatorStage1/emitter.pipelineOperatorStage1.es2015.ts b/tests/cases/conformance/emitter/es2015/pipelineOperatorStage1/emitter.pipelineOperatorStage1.es2015.ts new file mode 100644 index 00000000000..4e0a7eaeead --- /dev/null +++ b/tests/cases/conformance/emitter/es2015/pipelineOperatorStage1/emitter.pipelineOperatorStage1.es2015.ts @@ -0,0 +1,8 @@ +// @experimentalPipelineStage1: true +// @target: es2015 +declare const ar: Iterable; +declare function map(ar: Iterable, fn: (v: T) => U): Iterable; +declare function identity(value: T): T; + +const x = ar |> (_ => map(_, x => x + 1)); +const y = ar |> identity; diff --git a/tests/cases/conformance/emitter/es5/pipelineOperatorStage1/emitter.pipelineOperatorStage1.es5.ts b/tests/cases/conformance/emitter/es5/pipelineOperatorStage1/emitter.pipelineOperatorStage1.es5.ts new file mode 100644 index 00000000000..aec2b3a7175 --- /dev/null +++ b/tests/cases/conformance/emitter/es5/pipelineOperatorStage1/emitter.pipelineOperatorStage1.es5.ts @@ -0,0 +1,9 @@ +// @experimentalPipelineStage1: true +// @target: es5 +// @lib: es2015 +declare const ar: Iterable; +declare function map(ar: Iterable, fn: (v: T) => U): Iterable; +declare function identity(value: T): T; + +const x = ar |> (_ => map(_, x => x + 1)); +const y = ar |> identity; diff --git a/tests/cases/conformance/emitter/esnext/pipelineOperatorStage1/emitter.pipelineOperatorStage1.esnext.ts b/tests/cases/conformance/emitter/esnext/pipelineOperatorStage1/emitter.pipelineOperatorStage1.esnext.ts new file mode 100644 index 00000000000..6388ed9a539 --- /dev/null +++ b/tests/cases/conformance/emitter/esnext/pipelineOperatorStage1/emitter.pipelineOperatorStage1.esnext.ts @@ -0,0 +1,8 @@ +// @experimentalPipelineStage1: true +// @target: esnext +declare const ar: Iterable; +declare function map(ar: Iterable, fn: (v: T) => U): Iterable; +declare function identity(value: T): T; + +const x = ar |> (_ => map(_, x => x + 1)); +const y = ar |> identity; diff --git a/tests/cases/conformance/expressions/pipelineOperatorStage1/pipelineOperatorStage1.ts b/tests/cases/conformance/expressions/pipelineOperatorStage1/pipelineOperatorStage1.ts new file mode 100644 index 00000000000..8d2f53eeca3 --- /dev/null +++ b/tests/cases/conformance/expressions/pipelineOperatorStage1/pipelineOperatorStage1.ts @@ -0,0 +1,9 @@ +// @experimentalPipelineStage1: true +// @target: es2015 +declare const ar: Iterable; +declare function map(ar: Iterable, fn: (v: T) => U): Iterable; +declare function filter(ar: Iterable, fn: (v: T) => boolean): Iterable; + +const x = ar + |> (_ => map(_, x => x + 1)) + |> (_ => filter(_, x => x > 2)); diff --git a/tests/cases/conformance/expressions/pipelineOperatorStage1/pipelineOperatorStage1WithNonFunctionRHS.ts b/tests/cases/conformance/expressions/pipelineOperatorStage1/pipelineOperatorStage1WithNonFunctionRHS.ts new file mode 100644 index 00000000000..15b7dff23d6 --- /dev/null +++ b/tests/cases/conformance/expressions/pipelineOperatorStage1/pipelineOperatorStage1WithNonFunctionRHS.ts @@ -0,0 +1,8 @@ +// @experimentalPipelineStage1: true +// @target: es2015 +declare const ar: Iterable; +declare function map(ar: Iterable, fn: (v: T) => U): Iterable; +declare function filter(ar: Iterable, fn: (v: T) => boolean): Iterable; + +const x = ar + |> 1;