File: varianceAnnotationValidation.errors.txt

package info (click to toggle)
node-typescript 5.0.4%2Bds1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 459,140 kB
  • sloc: javascript: 1,972,754; makefile: 6; sh: 1
file content (48 lines) | stat: -rw-r--r-- 2,107 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
tests/cases/compiler/varianceAnnotationValidation.ts(5,22): error TS2636: Type 'Controller<sub-T>' is not assignable to type 'Controller<super-T>' as implied by variance annotation.
  Types of property 'run' are incompatible.
    Type '(animal: sub-T) => void' is not assignable to type '(animal: super-T) => void'.
      Types of parameters 'animal' and 'animal' are incompatible.
        Type 'super-T' is not assignable to type 'sub-T'.
tests/cases/compiler/varianceAnnotationValidation.ts(27,1): error TS2322: Type 'AnimalContainer<Animal>' is not assignable to type 'AnimalContainer<Dog>'.
  Property 'bark' is missing in type 'Animal' but required in type 'Dog'.


==== tests/cases/compiler/varianceAnnotationValidation.ts (2 errors) ====
    // Repro from #49607
    
    // Variance annotation error expected
    
    interface Controller<out T> {
                         ~~~~~
!!! error TS2636: Type 'Controller<sub-T>' is not assignable to type 'Controller<super-T>' as implied by variance annotation.
!!! error TS2636:   Types of property 'run' are incompatible.
!!! error TS2636:     Type '(animal: sub-T) => void' is not assignable to type '(animal: super-T) => void'.
!!! error TS2636:       Types of parameters 'animal' and 'animal' are incompatible.
!!! error TS2636:         Type 'super-T' is not assignable to type 'sub-T'.
    	createAnimal: () => T;
    	run: (animal: T) => void;
    }
    
    interface Animal {
    	run(): void;
    };
    
    class Dog implements Animal {
    	run() {};
    	bark() {};
    }
    
    interface AnimalContainer<T> {
    	controller: Controller<T>;
    }
    
    declare let ca: AnimalContainer<Animal>;
    declare let cd: AnimalContainer<Dog>;
    
    ca = cd;  // Ok
    cd = ca;  // Error
    ~~
!!! error TS2322: Type 'AnimalContainer<Animal>' is not assignable to type 'AnimalContainer<Dog>'.
!!! error TS2322:   Property 'bark' is missing in type 'Animal' but required in type 'Dog'.
!!! related TS2728 tests/cases/compiler/varianceAnnotationValidation.ts:16:2: 'bark' is declared here.