Skip to content

Commit 666edaa

Browse files
authored
fix return types of validation.success / validation.failure (#51)
1 parent 67dd640 commit 666edaa

4 files changed

Lines changed: 47 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@
1212
**Note**: Gaps between patch versions are faulty/broken releases.
1313
**Note**: A feature tagged as Experimental is in a high state of flux, you're at risk of it changing without notice.
1414

15+
# 0.2.3
16+
17+
- **Bug Fix**
18+
- fix return types of `validation.success` / `validation.failure` (@gcanti)
19+
1520
# 0.2.2
1621

1722
- **Bug Fix**

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "fp-ts",
3-
"version": "0.2.2",
3+
"version": "0.2.3",
44
"description": "Functional programming in TypeScript",
55
"files": [
66
"lib",

src/Validation.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -226,11 +226,11 @@ export function isSuccess<L, A>(fa: Validation<L, A>): fa is Success<L, A> {
226226
return fa instanceof Success
227227
}
228228

229-
export function failure<L, A>(semigroup: StaticSemigroup<L>, l: L): Failure<L, A> {
229+
export function failure<L, A>(semigroup: StaticSemigroup<L>, l: L): Validation<L, A> {
230230
return new Failure<L, A>(semigroup, l)
231231
}
232232

233-
export function success<L, A>(a: A): Success<L, A> {
233+
export function success<L, A>(a: A): Validation<L, A> {
234234
return new Success<L, A>(a)
235235
}
236236

test/Validation.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import * as assert from 'assert'
2+
import * as array from '../src/Array'
3+
import * as validation from '../src/Validation'
4+
import { monoidString } from '../src/Monoid'
5+
import { sequence } from '../src/Traversable'
6+
7+
describe('Validation', () => {
8+
9+
it('traverse', () => {
10+
const success = [
11+
validation.success<string, number>(1),
12+
validation.success<string, number>(2),
13+
validation.success<string, number>(3)
14+
]
15+
16+
const failure = [
17+
validation.success<string, number>(1),
18+
validation.failure<string, number>(monoidString, '[fail 1]'),
19+
validation.failure<string, number>(monoidString, '[fail 2]')
20+
]
21+
22+
const x = sequence(validation.getApplicativeS(monoidString), array)(success)
23+
24+
if (validation.isSuccess(x)) {
25+
assert.deepEqual(x.value, [1, 2, 3])
26+
} else {
27+
assert.ok(false)
28+
}
29+
30+
const y = sequence(validation.getApplicativeS(monoidString), array)(failure)
31+
32+
if (validation.isFailure(y)) {
33+
assert.strictEqual(y.value, '[fail 1][fail 2]')
34+
} else {
35+
assert.ok(false)
36+
}
37+
})
38+
39+
})

0 commit comments

Comments
 (0)