Просмотр исходного кода

fix(compiler): fix inline-template crashing (#9365)

fix #9361
Filipe Amaral 7 лет назад
Родитель
Сommit
55bfb94a33
2 измененных файлов с 15 добавлено и 8 удалено
  1. 1 1
      src/compiler/codegen/index.js
  2. 14 7
      test/unit/modules/compiler/codegen.spec.js

+ 1 - 1
src/compiler/codegen/index.js

@@ -346,7 +346,7 @@ function genInlineTemplate (el: ASTElement, state: CodegenState): ?string {
       { start: el.start }
     )
   }
-  if (ast.type === 1) {
+  if (ast && ast.type === 1) {
     const inlineRenderFns = generate(ast, state.options)
     return `inlineTemplate:{render:function(){${
       inlineRenderFns.render

+ 14 - 7
test/unit/modules/compiler/codegen.spec.js

@@ -591,14 +591,21 @@ describe('codegen', () => {
       '<my-component inline-template><hr><hr></my-component>',
       `with(this){return _c('my-component',{inlineTemplate:{render:function(){with(this){return _c('hr')}},staticRenderFns:[]}})}`
     )
-    try {
-      assertCodegen(
-        '<my-component inline-template></my-component>',
-        ''
-      )
-    } catch (e) {}
+    assertCodegen(
+      '<my-component inline-template></my-component>',
+      `with(this){return _c('my-component',{})}`
+    )
+    // have "is" attribute
+    assertCodegen(
+      '<div is="myComponent" inline-template><div></div></div>',
+      `with(this){return _c("myComponent",{tag:"div",inlineTemplate:{render:function(){with(this){return _c('div')}},staticRenderFns:[]}})}`
+    )
+    assertCodegen(
+      '<div is="myComponent" inline-template></div>',
+      `with(this){return _c("myComponent",{tag:"div"})}`
+    )
     expect('Inline-template components must have exactly one child element.').toHaveBeenWarned()
-    expect(console.error.calls.count()).toBe(2)
+    expect(console.error.calls.count()).toBe(3)
   })
 
   it('generate static trees inside v-for', () => {