Skip to content

Commit e34848d

Browse files
Merge pull request #2573 from Microsoft/classExpressionTests
Adding a couple of class tests.
2 parents 03a1542 + 3df576d commit e34848d

File tree

6 files changed

+121
-0
lines changed

6 files changed

+121
-0
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
tests/cases/compiler/classExpressionTest1.ts(2,11): error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration.
2+
3+
4+
==== tests/cases/compiler/classExpressionTest1.ts (1 errors) ====
5+
function M() {
6+
class C<X> {
7+
~
8+
!!! error TS9004: 'class' declarations are only supported directly inside a module or as a top level declaration.
9+
f<T>() {
10+
var t: T;
11+
var x: X;
12+
return { t, x };
13+
}
14+
}
15+
16+
var v = new C<number>();
17+
return v.f<string>();
18+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
//// [classExpressionTest1.ts]
2+
function M() {
3+
class C<X> {
4+
f<T>() {
5+
var t: T;
6+
var x: X;
7+
return { t, x };
8+
}
9+
}
10+
11+
var v = new C<number>();
12+
return v.f<string>();
13+
}
14+
15+
//// [classExpressionTest1.js]
16+
function M() {
17+
var C = (function () {
18+
function C() {
19+
}
20+
C.prototype.f = function () {
21+
var t;
22+
var x;
23+
return { t: t, x: x };
24+
};
25+
return C;
26+
})();
27+
var v = new C();
28+
return v.f();
29+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
tests/cases/compiler/classExpressionTest2.ts(2,19): error TS9003: 'class' expressions are not currently supported.
2+
tests/cases/compiler/classExpressionTest2.ts(5,20): error TS2304: Cannot find name 'X'.
3+
4+
5+
==== tests/cases/compiler/classExpressionTest2.ts (2 errors) ====
6+
function M() {
7+
var m = class C<X> {
8+
~
9+
!!! error TS9003: 'class' expressions are not currently supported.
10+
f<T>() {
11+
var t: T;
12+
var x: X;
13+
~
14+
!!! error TS2304: Cannot find name 'X'.
15+
return { t, x };
16+
}
17+
}
18+
19+
var v = new m<number>();
20+
return v.f<string>();
21+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
//// [classExpressionTest2.ts]
2+
function M() {
3+
var m = class C<X> {
4+
f<T>() {
5+
var t: T;
6+
var x: X;
7+
return { t, x };
8+
}
9+
}
10+
11+
var v = new m<number>();
12+
return v.f<string>();
13+
}
14+
15+
//// [classExpressionTest2.js]
16+
function M() {
17+
var m = (function () {
18+
function C() {
19+
}
20+
C.prototype.f = function () {
21+
var t;
22+
var x;
23+
return { t: t, x: x };
24+
};
25+
return C;
26+
})();
27+
var v = new m();
28+
return v.f();
29+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
function M() {
2+
class C<X> {
3+
f<T>() {
4+
var t: T;
5+
var x: X;
6+
return { t, x };
7+
}
8+
}
9+
10+
var v = new C<number>();
11+
return v.f<string>();
12+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
function M() {
2+
var m = class C<X> {
3+
f<T>() {
4+
var t: T;
5+
var x: X;
6+
return { t, x };
7+
}
8+
}
9+
10+
var v = new m<number>();
11+
return v.f<string>();
12+
}

0 commit comments

Comments
 (0)