Skip to content

Commit 6879bc1

Browse files
committed
Test that spread removes readonly from properties
1 parent 1fc45d3 commit 6879bc1

File tree

4 files changed

+78
-0
lines changed

4 files changed

+78
-0
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
//// [spreadTypeRemovesReadonly.ts]
2+
interface ReadonlyData {
3+
readonly value: string;
4+
}
5+
6+
const data: ReadonlyData = { value: 'foo' };
7+
const clone = { ...data };
8+
clone.value = 'bar';
9+
10+
11+
//// [spreadTypeRemovesReadonly.js]
12+
var __assign = (this && this.__assign) || Object.assign || function(t) {
13+
for (var s, i = 1, n = arguments.length; i < n; i++) {
14+
s = arguments[i];
15+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
16+
t[p] = s[p];
17+
}
18+
return t;
19+
};
20+
var data = { value: 'foo' };
21+
var clone = __assign({}, data);
22+
clone.value = 'bar';
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
=== tests/cases/compiler/spreadTypeRemovesReadonly.ts ===
2+
interface ReadonlyData {
3+
>ReadonlyData : Symbol(ReadonlyData, Decl(spreadTypeRemovesReadonly.ts, 0, 0))
4+
5+
readonly value: string;
6+
>value : Symbol(ReadonlyData.value, Decl(spreadTypeRemovesReadonly.ts, 0, 24))
7+
}
8+
9+
const data: ReadonlyData = { value: 'foo' };
10+
>data : Symbol(data, Decl(spreadTypeRemovesReadonly.ts, 4, 5))
11+
>ReadonlyData : Symbol(ReadonlyData, Decl(spreadTypeRemovesReadonly.ts, 0, 0))
12+
>value : Symbol(value, Decl(spreadTypeRemovesReadonly.ts, 4, 28))
13+
14+
const clone = { ...data };
15+
>clone : Symbol(clone, Decl(spreadTypeRemovesReadonly.ts, 5, 5))
16+
>data : Symbol(data, Decl(spreadTypeRemovesReadonly.ts, 4, 5))
17+
18+
clone.value = 'bar';
19+
>clone.value : Symbol(value, Decl(spreadTypeRemovesReadonly.ts, 0, 24))
20+
>clone : Symbol(clone, Decl(spreadTypeRemovesReadonly.ts, 5, 5))
21+
>value : Symbol(value, Decl(spreadTypeRemovesReadonly.ts, 0, 24))
22+
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
=== tests/cases/compiler/spreadTypeRemovesReadonly.ts ===
2+
interface ReadonlyData {
3+
>ReadonlyData : ReadonlyData
4+
5+
readonly value: string;
6+
>value : string
7+
}
8+
9+
const data: ReadonlyData = { value: 'foo' };
10+
>data : ReadonlyData
11+
>ReadonlyData : ReadonlyData
12+
>{ value: 'foo' } : { value: string; }
13+
>value : string
14+
>'foo' : "foo"
15+
16+
const clone = { ...data };
17+
>clone : { value: string; }
18+
>{ ...data } : { value: string; }
19+
>data : ReadonlyData
20+
21+
clone.value = 'bar';
22+
>clone.value = 'bar' : "bar"
23+
>clone.value : string
24+
>clone : { value: string; }
25+
>value : string
26+
>'bar' : "bar"
27+
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
interface ReadonlyData {
2+
readonly value: string;
3+
}
4+
5+
const data: ReadonlyData = { value: 'foo' };
6+
const clone = { ...data };
7+
clone.value = 'bar';

0 commit comments

Comments
 (0)