Skip to content

Invalid JS: super in constructor shouldn’t accept @params #4752

@ruslux

Description

@ruslux

This code:

class A
  constructor: (@name) ->
    alert @name, 'name'
    
class B extends A
  constructor: (@name) ->
    super @name

produce wrong code (See class b#super):

var A, B, b;

A = class A {
  constructor(name) {
    this.name = name;
    alert(this.name, 'name');
  }

};

B = class B extends A {
  constructor(name) {
    super(this.name);
    this.name = name;
  }

};

where this is not defined
If I replace @name with name, like here:

class A
  constructor: (@name) ->
    alert @name, 'name'
    
class B extends A
  constructor: (@name) ->
    super name

will produce:

var A, B, b;

A = class A {
  constructor(name1) {
    this.name = name1;
    alert(this.name, 'name');
  }

};

B = class B extends A {
  constructor(name1) {
    super(name);
    this.name = name1;
  }

};

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions