tests/cases/compiler/superErrors.ts(3,13): error TS2335: 'super' can only be referenced in a derived class.
tests/cases/compiler/superErrors.ts(3,18): error TS1034: 'super' must be followed by an argument list or member access.
tests/cases/compiler/superErrors.ts(4,19): error TS2335: 'super' can only be referenced in a derived class.
tests/cases/compiler/superErrors.ts(4,24): error TS1034: 'super' must be followed by an argument list or member access.
tests/cases/compiler/superErrors.ts(5,31): error TS2335: 'super' can only be referenced in a derived class.
tests/cases/compiler/superErrors.ts(5,36): error TS1034: 'super' must be followed by an argument list or member access.
tests/cases/compiler/superErrors.ts(22,13): error TS2338: 'super' property access is permitted only in a constructor, member function, or member accessor of a derived class.
tests/cases/compiler/superErrors.ts(27,27): error TS2338: 'super' property access is permitted only in a constructor, member function, or member accessor of a derived class.
tests/cases/compiler/superErrors.ts(31,36): error TS2338: 'super' property access is permitted only in a constructor, member function, or member accessor of a derived class.
tests/cases/compiler/superErrors.ts(31,41): error TS1034: 'super' must be followed by an argument list or member access.
tests/cases/compiler/superErrors.ts(39,27): error TS2338: 'super' property access is permitted only in a constructor, member function, or member accessor of a derived class.
tests/cases/compiler/superErrors.ts(43,36): error TS2338: 'super' property access is permitted only in a constructor, member function, or member accessor of a derived class.
tests/cases/compiler/superErrors.ts(43,41): error TS1034: 'super' must be followed by an argument list or member access.
tests/cases/compiler/superErrors.ts(47,22): error TS1034: 'super' must be followed by an argument list or member access.
tests/cases/compiler/superErrors.ts(48,28): error TS1034: 'super' must be followed by an argument list or member access.
tests/cases/compiler/superErrors.ts(49,40): error TS1034: 'super' must be followed by an argument list or member access.


==== tests/cases/compiler/superErrors.ts (16 errors) ====
    function foo() {
        // super in a non class context
        var x = super;
                ~~~~~
!!! error TS2335: 'super' can only be referenced in a derived class.
                     ~
!!! error TS1034: 'super' must be followed by an argument list or member access.
        var y = () => super;
                      ~~~~~
!!! error TS2335: 'super' can only be referenced in a derived class.
                           ~
!!! error TS1034: 'super' must be followed by an argument list or member access.
        var z = () => () => () => super;
                                  ~~~~~
!!! error TS2335: 'super' can only be referenced in a derived class.
                                       ~
!!! error TS1034: 'super' must be followed by an argument list or member access.
    }
    
    class User {
        name: string = "Bob";
        sayHello(): void {
            //console.log("Hello, " + this.name);
        }
    }
    
    class RegisteredUser extends User {
        name: string = "Frank";
        constructor() {
            super();
    
            // super call in an inner function in a constructor
            function inner() {
                super.sayHello();
                ~~~~~
!!! error TS2338: 'super' property access is permitted only in a constructor, member function, or member accessor of a derived class.
            }
    
            // super call in a lambda in an inner function in a constructor 
            function inner2() {
                var x = () => super.sayHello();
                              ~~~~~
!!! error TS2338: 'super' property access is permitted only in a constructor, member function, or member accessor of a derived class.
            }
    
            // super call in a lambda in a function expression in a constructor 
            (function() { return () => super; })();
                                       ~~~~~
!!! error TS2338: 'super' property access is permitted only in a constructor, member function, or member accessor of a derived class.
                                            ~
!!! error TS1034: 'super' must be followed by an argument list or member access.
        }
        sayHello(): void {
            // super call in a method
            super.sayHello();
    
            // super call in a lambda in an inner function in a method
            function inner() {
                var x = () => super.sayHello();
                              ~~~~~
!!! error TS2338: 'super' property access is permitted only in a constructor, member function, or member accessor of a derived class.
            }
    
            // super call in a lambda in a function expression in a constructor 
            (function() { return () => super; })();
                                       ~~~~~
!!! error TS2338: 'super' property access is permitted only in a constructor, member function, or member accessor of a derived class.
                                            ~
!!! error TS1034: 'super' must be followed by an argument list or member access.
        }
        static staticFunction(): void {
            // super in static functions
            var s = super;
                         ~
!!! error TS1034: 'super' must be followed by an argument list or member access.
            var x = () => super;
                               ~
!!! error TS1034: 'super' must be followed by an argument list or member access.
            var y = () => () => () => super;
                                           ~
!!! error TS1034: 'super' must be followed by an argument list or member access.
        }
    }