dsherret / ts-morph

TypeScript Compiler API wrapper for static analysis and programmatic code changes.
https://ts-morph.com
MIT License
5.02k stars 196 forks source link

Single-line comment with AddPropertyAssignment caused an extra comma #1570

Open linzebingo opened 2 months ago

linzebingo commented 2 months ago

Describe the bug

Version: 23.0.0

Single-line comment with AddPropertyAssignment caused an extra comma

To Reproduce

const { Project } = require('ts-morph')

const sourceCode = `
export default {
  slave: {},
  // mako: {}
}
`
function main() {
  const project = new Project()
  const sourceFile = project.createSourceFile('index.ts', sourceCode)

  const defaultExportSymbol = sourceFile.getDefaultExportSymbol()

  if (defaultExportSymbol) {
    const declaration = defaultExportSymbol.getDeclarations()[0]
    const objectLiteralExpression = declaration.getExpression()
    if (objectLiteralExpression) {
      const publicPathProp = objectLiteralExpression.getProperty('publicPath')

      if (publicPathProp)
        publicPathProp.remove()

      objectLiteralExpression.addPropertyAssignment({
        name: 'publicPath',
        initializer: `"/"`,
      })
    }
  }

  console.log(sourceFile.getText())
}

main()

Expected behavior

Expect:

 export default {
    slave: {},
    // mako: {}
      publicPath: "/"
  }

Actual:

 export default {
    slave: {},,
    // mako: {}
     publicPath: "/"
  }