escodegen icon indicating copy to clipboard operation
escodegen copied to clipboard

Bug on ExportDefatultDeclaration's sourcemap generation

Open clark-t opened this issue 6 years ago • 0 comments

Bug description

raw code like:

export default {
  a() {}
}

escodegen generates sourcemap now is:

{
  mappings: 'AAAA;AAAA;AAAA;AAAA',
  // other properties
}

the correct sourcemap should be:

{
  mappings: 'AAAA,eAAe;AAAA,IACdA,CAAA,GAAI;AAAA,KADU;AAAA,CAAf'
}

Reason

I found out that L1213 cause this problem, which this.generateExpression(xxx) + this.semicolon(flags) turns SourceNode tree into string and lost sourcemap information.

I think the correct code should be:

// LINE 1213
result = join(result, this.generateExpression(stmt.declaration, Precedence.Assignment, E_TTT));
result.push(this.semicolon(flags));

clark-t avatar Jun 08 '18 02:06 clark-t