From d03fa26687605a43d9a0c3f395d1d32375f7eaee Mon Sep 17 00:00:00 2001 From: laoxiong Date: Thu, 20 Jul 2017 06:09:21 +0800 Subject: [PATCH] fix(compile): properly generate comments with special character (#6156) close #6150 --- src/compiler/codegen/index.js | 2 +- test/unit/modules/compiler/codegen.spec.js | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/compiler/codegen/index.js b/src/compiler/codegen/index.js index e8adf14676e..c1d35e3953d 100644 --- a/src/compiler/codegen/index.js +++ b/src/compiler/codegen/index.js @@ -442,7 +442,7 @@ export function genText (text: ASTText | ASTExpression): string { } export function genComment (comment: ASTText): string { - return `_e('${comment.text}')` + return `_e(${JSON.stringify(comment.text)})` } function genSlot (el: ASTElement, state: CodegenState): string { diff --git a/test/unit/modules/compiler/codegen.spec.js b/test/unit/modules/compiler/codegen.spec.js index d675c345cc0..f131bc884e9 100644 --- a/test/unit/modules/compiler/codegen.spec.js +++ b/test/unit/modules/compiler/codegen.spec.js @@ -479,7 +479,21 @@ describe('codegen', () => { comments: true }, baseOptions) const template = '
' - const generatedCode = `with(this){return _c('div',[_e('comment')])}` + const generatedCode = `with(this){return _c('div',[_e("comment")])}` + + const ast = parse(template, options) + optimize(ast, options) + const res = generate(ast, options) + expect(res.render).toBe(generatedCode) + }) + + // #6150 + it('generate comments with special characters', () => { + const options = extend({ + comments: true + }, baseOptions) + const template = '
' + const generatedCode = `with(this){return _c('div',[_e("\\n'comment'\\n")])}` const ast = parse(template, options) optimize(ast, options)