Test:javascript signature instantiation w/insufficient type args

This commit is contained in:
Nathan Shively-Sanders 2017-09-13 09:26:20 -07:00
parent d762f55199
commit 014f7ba828
2 changed files with 75 additions and 0 deletions

View file

@ -0,0 +1,48 @@
tests/cases/compiler/BaseB.js(2,24): error TS8004: 'type parameter declarations' can only be used in a .ts file.
tests/cases/compiler/BaseB.js(2,25): error TS1005: ',' expected.
tests/cases/compiler/BaseB.js(3,14): error TS2304: Cannot find name 'Class'.
tests/cases/compiler/BaseB.js(3,14): error TS8010: 'types' can only be used in a .ts file.
tests/cases/compiler/BaseB.js(4,25): error TS2304: Cannot find name 'Class'.
tests/cases/compiler/BaseB.js(4,25): error TS8010: 'types' can only be used in a .ts file.
tests/cases/compiler/SubB.js(3,41): error TS8011: 'type arguments' can only be used in a .ts file.
==== tests/cases/compiler/BaseA.js (0 errors) ====
// regression test for #18254
export default class BaseA {
}
==== tests/cases/compiler/SubA.js (0 errors) ====
import BaseA from './BaseA';
export default class SubA extends BaseA {
}
==== tests/cases/compiler/BaseB.js (6 errors) ====
import BaseA from './BaseA';
export default class B<T: BaseA> {
~~~~~~~~
!!! error TS8004: 'type parameter declarations' can only be used in a .ts file.
~
!!! error TS1005: ',' expected.
_AClass: Class<T>;
~~~~~
!!! error TS2304: Cannot find name 'Class'.
~~~~~~~~
!!! error TS8010: 'types' can only be used in a .ts file.
constructor(AClass: Class<T>) {
~~~~~
!!! error TS2304: Cannot find name 'Class'.
~~~~~~~~
!!! error TS8010: 'types' can only be used in a .ts file.
this._AClass = AClass;
}
}
==== tests/cases/compiler/SubB.js (1 errors) ====
import SubA from './SubA';
import BaseB from './BaseB';
export default class SubB extends BaseB<SubA> {
~~~~
!!! error TS8011: 'type arguments' can only be used in a .ts file.
constructor() {
super(SubA);
}
}

View file

@ -0,0 +1,27 @@
// @allowJs: true
// @checkJs: true
// @noEmit: true
// regression test for #18254
// @Filename: BaseA.js
export default class BaseA {
}
// @Filename: SubA.js
import BaseA from './BaseA';
export default class SubA extends BaseA {
}
// @Filename: BaseB.js
import BaseA from './BaseA';
export default class B<T: BaseA> {
_AClass: Class<T>;
constructor(AClass: Class<T>) {
this._AClass = AClass;
}
}
// @Filename: SubB.js
import SubA from './SubA';
import BaseB from './BaseB';
export default class SubB extends BaseB<SubA> {
constructor() {
super(SubA);
}
}