tntim96 / JSCover

JSCover is a JavaScript Code Coverage Tool that measures line, branch and function coverage
GNU General Public License v2.0
399 stars 84 forks source link

Methods in a class are not evaluated correctly #275

Closed AmeyWadodkar closed 5 years ago

AmeyWadodkar commented 5 years ago

This is my class `class Person { constructor(name){ this.name = name; }; getname(){ document.getElementById("name").innerHTML = this.name; }; }

var person = new Person("John Doe"); person.getname();`

and this is the instrumented file: _$jscoverage['/person.js'].lineData[1]++; class Person { constructor(name) { _$jscoverage['/person.js'].functionData[0]++; _$jscoverage['/person.js'].lineData[3]++; this.name = name; } _$jscoverage['/person.js'].lineData[4]++; getname() { _$jscoverage['/person.js'].functionData[1]++; _$jscoverage['/person.js'].lineData[7]++; document.getElementById('name').innerHTML = this.name; } _$jscoverage['/person.js'].lineData[8]++; } _$jscoverage['/person.js'].lineData[11]++; var person = new Person('John Doe'); _$jscoverage['/person.js'].lineData[12]++; person.getname(); for :- _$jscoverage['/person.js'].lineData[4]++; eval() function gives an error SyntaxError: Unexpected token [

tntim96 commented 5 years ago

Try removing the semi-colons after the constructor and method declarations:

class Person {
  constructor(name){
    this.name = name;
  }
  getname(){
    document.getElementById("name").innerHTML = this.name;
  }
}

var person = new Person("John Doe");
person.getname();
tntim96 commented 5 years ago

Although this isn't a true bug, I've fixed this issue and uploaded a new 2.0.8-SNAPSHOT.