File: jsdocCatchClauseWithTypeAnnotation.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 (81 lines) | stat: -rw-r--r-- 4,826 bytes parent folder | download
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
tests/cases/conformance/jsdoc/foo.js(20,54): error TS2339: Property 'foo' does not exist on type 'unknown'.
tests/cases/conformance/jsdoc/foo.js(21,54): error TS2339: Property 'foo' does not exist on type 'unknown'.
tests/cases/conformance/jsdoc/foo.js(22,31): error TS1196: Catch clause variable type annotation must be 'any' or 'unknown' if specified.
tests/cases/conformance/jsdoc/foo.js(23,31): error TS1196: Catch clause variable type annotation must be 'any' or 'unknown' if specified.
tests/cases/conformance/jsdoc/foo.js(35,7): error TS2492: Cannot redeclare identifier 'err' in catch clause.
tests/cases/conformance/jsdoc/foo.js(46,45): error TS2339: Property 'x' does not exist on type '{}'.
tests/cases/conformance/jsdoc/foo.js(47,45): error TS2339: Property 'x' does not exist on type '{}'.
tests/cases/conformance/jsdoc/foo.js(48,31): error TS1196: Catch clause variable type annotation must be 'any' or 'unknown' if specified.
tests/cases/conformance/jsdoc/foo.js(49,31): error TS1196: Catch clause variable type annotation must be 'any' or 'unknown' if specified.


==== tests/cases/conformance/jsdoc/foo.js (9 errors) ====
    /**
     * @typedef {any} Any
     */
    
    /**
     * @typedef {unknown} Unknown
     */
    
    function fn() {
        try { } catch (x) { }                                            // should be OK
        try { } catch (/** @type {any} */ err) { }                       // should be OK
        try { } catch (/** @type {Any} */ err) { }                       // should be OK
        try { } catch (/** @type {unknown} */ err) { }                   // should be OK
        try { } catch (/** @type {Unknown} */ err) { }                   // should be OK
        try { } catch (err) { err.foo; }                                 // should be OK
        try { } catch (/** @type {any} */ err) { err.foo; }              // should be OK
        try { } catch (/** @type {Any} */ err) { err.foo; }              // should be OK
        try { } catch (/** @type {unknown} */ err) { console.log(err); } // should be OK
        try { } catch (/** @type {Unknown} */ err) { console.log(err); } // should be OK
        try { } catch (/** @type {unknown} */ err) { err.foo; }          // error in the body
                                                         ~~~
!!! error TS2339: Property 'foo' does not exist on type 'unknown'.
        try { } catch (/** @type {Unknown} */ err) { err.foo; }          // error in the body
                                                         ~~~
!!! error TS2339: Property 'foo' does not exist on type 'unknown'.
        try { } catch (/** @type {Error} */ err) { }                     // error in the type
                                  ~~~~~
!!! error TS1196: Catch clause variable type annotation must be 'any' or 'unknown' if specified.
        try { } catch (/** @type {object} */ err) { }                    // error in the type
                                  ~~~~~~
!!! error TS1196: Catch clause variable type annotation must be 'any' or 'unknown' if specified.
    
        try { console.log(); }
        // @ts-ignore
        catch (/** @type {number} */ err) { // e should not be a `number`
            console.log(err.toLowerCase());
        }
    
    	// minor bug: shows that the `catch` argument is skipped when checking scope
    	try { }
    	catch (err) {
    		/** @type {string} */
    		let err;
    		    ~~~
!!! error TS2492: Cannot redeclare identifier 'err' in catch clause.
    	}
    	try { }
    	catch (err) {
    		/** @type {boolean} */
    		var err;
    	}
    
        try { } catch ({ x }) { }                                        // should be OK
        try { } catch (/** @type {any} */ { x }) { x.foo; }              // should be OK
        try { } catch (/** @type {Any} */ { x }) { x.foo;}               // should be OK
        try { } catch (/** @type {unknown} */ { x }) { console.log(x); } // error in the destructure
                                                ~
!!! error TS2339: Property 'x' does not exist on type '{}'.
        try { } catch (/** @type {Unknown} */ { x }) { console.log(x); } // error in the destructure
                                                ~
!!! error TS2339: Property 'x' does not exist on type '{}'.
        try { } catch (/** @type {Error} */ { x }) { }                   // error in the type
                                  ~~~~~
!!! error TS1196: Catch clause variable type annotation must be 'any' or 'unknown' if specified.
        try { } catch (/** @type {object} */ { x }) { }                  // error in the type
                                  ~~~~~~
!!! error TS1196: Catch clause variable type annotation must be 'any' or 'unknown' if specified.
    }