Sfoglia il codice sorgente

build: build 2.6.0-beta.3

Evan You 7 anni fa
parent
commit
9f3cbafa55

+ 26 - 9
dist/vue.common.dev.js

@@ -1,5 +1,5 @@
 /*!
- * Vue.js v2.6.0-beta.2
+ * Vue.js v2.6.0-beta.3
  * (c) 2014-2019 Evan You
  * Released under the MIT License.
  */
@@ -5319,7 +5319,7 @@ Object.defineProperty(Vue, 'FunctionalRenderContext', {
   value: FunctionalRenderContext
 });
 
-Vue.version = '2.6.0-beta.2';
+Vue.version = '2.6.0-beta.3';
 
 /*  */
 
@@ -9089,6 +9089,7 @@ var isNonPhrasingTag = makeMap(
 
 // Regular Expressions for parsing tags and attributes
 var attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
+var dynamicArgAttribute = /^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
 var ncname = "[a-zA-Z_][\\-\\.0-9_a-zA-Z" + unicodeLetters + "]*";
 var qnameCapture = "((?:" + ncname + "\\:)?" + ncname + ")";
 var startTagOpen = new RegExp(("^<" + qnameCapture));
@@ -9266,7 +9267,7 @@ function parseHTML (html, options) {
       };
       advance(start[0].length);
       var end, attr;
-      while (!(end = html.match(startTagClose)) && (attr = html.match(attribute))) {
+      while (!(end = html.match(startTagClose)) && (attr = html.match(dynamicArgAttribute) || html.match(attribute))) {
         attr.start = index;
         advance(attr[0].length);
         attr.end = index;
@@ -9395,6 +9396,8 @@ var slotRE = /^v-slot(:|$)|^#/;
 var lineBreakRE = /[\r\n]/;
 var whitespaceRE$1 = /\s+/g;
 
+var invalidAttributeRE = /[\s"'<>\/=]/;
+
 var decodeHTMLCached = cached(he.decode);
 
 // configurable state
@@ -9551,12 +9554,26 @@ function parse (
         element.ns = ns;
       }
 
-      if (options.outputSourceRange) {
-        element.start = start$1;
-        element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {
-          cumulated[attr.name] = attr;
-          return cumulated
-        }, {});
+      {
+        if (options.outputSourceRange) {
+          element.start = start$1;
+          element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {
+            cumulated[attr.name] = attr;
+            return cumulated
+          }, {});
+        }
+        attrs.forEach(function (attr) {
+          if (invalidAttributeRE.test(attr.name)) {
+            warn$2(
+              "Invalid dynamic argument expression: attribute names cannot contain " +
+              "spaces, quotes, <, >, / or =.",
+              {
+                start: attr.start + attr.name.indexOf("["),
+                end: attr.start + attr.name.length
+              }
+            );
+          }
+        });
       }
 
       if (isForbiddenTag(element) && !isServerRendering()) {

File diff suppressed because it is too large
+ 1 - 1
dist/vue.common.prod.js


+ 26 - 9
dist/vue.esm.browser.js

@@ -1,5 +1,5 @@
 /*!
- * Vue.js v2.6.0-beta.2
+ * Vue.js v2.6.0-beta.3
  * (c) 2014-2019 Evan You
  * Released under the MIT License.
  */
@@ -5352,7 +5352,7 @@ Object.defineProperty(Vue, 'FunctionalRenderContext', {
   value: FunctionalRenderContext
 });
 
-Vue.version = '2.6.0-beta.2';
+Vue.version = '2.6.0-beta.3';
 
 /*  */
 
@@ -9108,6 +9108,7 @@ const isNonPhrasingTag = makeMap(
 
 // Regular Expressions for parsing tags and attributes
 const attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
+const dynamicArgAttribute = /^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
 const ncname = `[a-zA-Z_][\\-\\.0-9_a-zA-Z${unicodeLetters}]*`;
 const qnameCapture = `((?:${ncname}\\:)?${ncname})`;
 const startTagOpen = new RegExp(`^<${qnameCapture}`);
@@ -9285,7 +9286,7 @@ function parseHTML (html, options) {
       };
       advance(start[0].length);
       let end, attr;
-      while (!(end = html.match(startTagClose)) && (attr = html.match(attribute))) {
+      while (!(end = html.match(startTagClose)) && (attr = html.match(dynamicArgAttribute) || html.match(attribute))) {
         attr.start = index;
         advance(attr[0].length);
         attr.end = index;
@@ -9414,6 +9415,8 @@ const slotRE = /^v-slot(:|$)|^#/;
 const lineBreakRE = /[\r\n]/;
 const whitespaceRE$1 = /\s+/g;
 
+const invalidAttributeRE = /[\s"'<>\/=]/;
+
 const decodeHTMLCached = cached(he.decode);
 
 // configurable state
@@ -9570,12 +9573,26 @@ function parse (
         element.ns = ns;
       }
 
-      if (options.outputSourceRange) {
-        element.start = start;
-        element.rawAttrsMap = element.attrsList.reduce((cumulated, attr) => {
-          cumulated[attr.name] = attr;
-          return cumulated
-        }, {});
+      {
+        if (options.outputSourceRange) {
+          element.start = start;
+          element.rawAttrsMap = element.attrsList.reduce((cumulated, attr) => {
+            cumulated[attr.name] = attr;
+            return cumulated
+          }, {});
+        }
+        attrs.forEach(attr => {
+          if (invalidAttributeRE.test(attr.name)) {
+            warn$2(
+              `Invalid dynamic argument expression: attribute names cannot contain ` +
+              `spaces, quotes, <, >, / or =.`,
+              {
+                start: attr.start + attr.name.indexOf(`[`),
+                end: attr.start + attr.name.length
+              }
+            );
+          }
+        });
       }
 
       if (isForbiddenTag(element) && !isServerRendering()) {

File diff suppressed because it is too large
+ 1 - 1
dist/vue.esm.browser.min.js


+ 27 - 10
dist/vue.esm.js

@@ -1,5 +1,5 @@
 /*!
- * Vue.js v2.6.0-beta.2
+ * Vue.js v2.6.0-beta.3
  * (c) 2014-2019 Evan You
  * Released under the MIT License.
  */
@@ -5339,7 +5339,7 @@ Object.defineProperty(Vue, 'FunctionalRenderContext', {
   value: FunctionalRenderContext
 });
 
-Vue.version = '2.6.0-beta.2';
+Vue.version = '2.6.0-beta.3';
 
 /*  */
 
@@ -9117,6 +9117,7 @@ var isNonPhrasingTag = makeMap(
 
 // Regular Expressions for parsing tags and attributes
 var attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
+var dynamicArgAttribute = /^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
 var ncname = "[a-zA-Z_][\\-\\.0-9_a-zA-Z" + unicodeLetters + "]*";
 var qnameCapture = "((?:" + ncname + "\\:)?" + ncname + ")";
 var startTagOpen = new RegExp(("^<" + qnameCapture));
@@ -9294,7 +9295,7 @@ function parseHTML (html, options) {
       };
       advance(start[0].length);
       var end, attr;
-      while (!(end = html.match(startTagClose)) && (attr = html.match(attribute))) {
+      while (!(end = html.match(startTagClose)) && (attr = html.match(dynamicArgAttribute) || html.match(attribute))) {
         attr.start = index;
         advance(attr[0].length);
         attr.end = index;
@@ -9424,6 +9425,8 @@ var slotRE = /^v-slot(:|$)|^#/;
 var lineBreakRE = /[\r\n]/;
 var whitespaceRE$1 = /\s+/g;
 
+var invalidAttributeRE = /[\s"'<>\/=]/;
+
 var decodeHTMLCached = cached(he.decode);
 
 // configurable state
@@ -9580,12 +9583,26 @@ function parse (
         element.ns = ns;
       }
 
-      if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {
-        element.start = start$1;
-        element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {
-          cumulated[attr.name] = attr;
-          return cumulated
-        }, {});
+      if (process.env.NODE_ENV !== 'production') {
+        if (options.outputSourceRange) {
+          element.start = start$1;
+          element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {
+            cumulated[attr.name] = attr;
+            return cumulated
+          }, {});
+        }
+        attrs.forEach(function (attr) {
+          if (invalidAttributeRE.test(attr.name)) {
+            warn$2(
+              "Invalid dynamic argument expression: attribute names cannot contain " +
+              "spaces, quotes, <, >, / or =.",
+              {
+                start: attr.start + attr.name.indexOf("["),
+                end: attr.start + attr.name.length
+              }
+            );
+          }
+        });
       }
 
       if (isForbiddenTag(element) && !isServerRendering()) {
@@ -9976,7 +9993,7 @@ function processSlotContent (el) {
   }
 
   // 2.6 v-slot syntax
-  if (process.env.NEW_SLOT_SYNTAX) {
+  {
     if (el.tag === 'template') {
       // v-slot on <template>
       var slotBinding = getAndRemoveAttrByRegex(el, slotRE);

+ 26 - 9
dist/vue.js

@@ -1,5 +1,5 @@
 /*!
- * Vue.js v2.6.0-beta.2
+ * Vue.js v2.6.0-beta.3
  * (c) 2014-2019 Evan You
  * Released under the MIT License.
  */
@@ -5323,7 +5323,7 @@
     value: FunctionalRenderContext
   });
 
-  Vue.version = '2.6.0-beta.2';
+  Vue.version = '2.6.0-beta.3';
 
   /*  */
 
@@ -9093,6 +9093,7 @@
 
   // Regular Expressions for parsing tags and attributes
   var attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
+  var dynamicArgAttribute = /^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
   var ncname = "[a-zA-Z_][\\-\\.0-9_a-zA-Z" + unicodeLetters + "]*";
   var qnameCapture = "((?:" + ncname + "\\:)?" + ncname + ")";
   var startTagOpen = new RegExp(("^<" + qnameCapture));
@@ -9270,7 +9271,7 @@
         };
         advance(start[0].length);
         var end, attr;
-        while (!(end = html.match(startTagClose)) && (attr = html.match(attribute))) {
+        while (!(end = html.match(startTagClose)) && (attr = html.match(dynamicArgAttribute) || html.match(attribute))) {
           attr.start = index;
           advance(attr[0].length);
           attr.end = index;
@@ -9399,6 +9400,8 @@
   var lineBreakRE = /[\r\n]/;
   var whitespaceRE$1 = /\s+/g;
 
+  var invalidAttributeRE = /[\s"'<>\/=]/;
+
   var decodeHTMLCached = cached(he.decode);
 
   // configurable state
@@ -9555,12 +9558,26 @@
           element.ns = ns;
         }
 
-        if (options.outputSourceRange) {
-          element.start = start$1;
-          element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {
-            cumulated[attr.name] = attr;
-            return cumulated
-          }, {});
+        {
+          if (options.outputSourceRange) {
+            element.start = start$1;
+            element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {
+              cumulated[attr.name] = attr;
+              return cumulated
+            }, {});
+          }
+          attrs.forEach(function (attr) {
+            if (invalidAttributeRE.test(attr.name)) {
+              warn$2(
+                "Invalid dynamic argument expression: attribute names cannot contain " +
+                "spaces, quotes, <, >, / or =.",
+                {
+                  start: attr.start + attr.name.indexOf("["),
+                  end: attr.start + attr.name.length
+                }
+              );
+            }
+          });
         }
 
         if (isForbiddenTag(element) && !isServerRendering()) {

File diff suppressed because it is too large
+ 1 - 1
dist/vue.min.js


+ 2 - 2
dist/vue.runtime.common.dev.js

@@ -1,5 +1,5 @@
 /*!
- * Vue.js v2.6.0-beta.2
+ * Vue.js v2.6.0-beta.3
  * (c) 2014-2019 Evan You
  * Released under the MIT License.
  */
@@ -5310,7 +5310,7 @@ Object.defineProperty(Vue, 'FunctionalRenderContext', {
   value: FunctionalRenderContext
 });
 
-Vue.version = '2.6.0-beta.2';
+Vue.version = '2.6.0-beta.3';
 
 /*  */
 

File diff suppressed because it is too large
+ 1 - 1
dist/vue.runtime.common.prod.js


+ 2 - 2
dist/vue.runtime.esm.js

@@ -1,5 +1,5 @@
 /*!
- * Vue.js v2.6.0-beta.2
+ * Vue.js v2.6.0-beta.3
  * (c) 2014-2019 Evan You
  * Released under the MIT License.
  */
@@ -5330,7 +5330,7 @@ Object.defineProperty(Vue, 'FunctionalRenderContext', {
   value: FunctionalRenderContext
 });
 
-Vue.version = '2.6.0-beta.2';
+Vue.version = '2.6.0-beta.3';
 
 /*  */
 

+ 2 - 2
dist/vue.runtime.js

@@ -1,5 +1,5 @@
 /*!
- * Vue.js v2.6.0-beta.2
+ * Vue.js v2.6.0-beta.3
  * (c) 2014-2019 Evan You
  * Released under the MIT License.
  */
@@ -5314,7 +5314,7 @@
     value: FunctionalRenderContext
   });
 
-  Vue.version = '2.6.0-beta.2';
+  Vue.version = '2.6.0-beta.3';
 
   /*  */
 

File diff suppressed because it is too large
+ 1 - 1
dist/vue.runtime.min.js


+ 24 - 7
packages/vue-server-renderer/basic.js

@@ -3344,6 +3344,7 @@
 
   // Regular Expressions for parsing tags and attributes
   var attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
+  var dynamicArgAttribute = /^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
   var ncname = "[a-zA-Z_][\\-\\.0-9_a-zA-Z" + unicodeLetters + "]*";
   var qnameCapture = "((?:" + ncname + "\\:)?" + ncname + ")";
   var startTagOpen = new RegExp(("^<" + qnameCapture));
@@ -3521,7 +3522,7 @@
         };
         advance(start[0].length);
         var end, attr;
-        while (!(end = html.match(startTagClose)) && (attr = html.match(attribute))) {
+        while (!(end = html.match(startTagClose)) && (attr = html.match(dynamicArgAttribute) || html.match(attribute))) {
           attr.start = index;
           advance(attr[0].length);
           attr.end = index;
@@ -3798,6 +3799,8 @@
   var lineBreakRE = /[\r\n]/;
   var whitespaceRE = /\s+/g;
 
+  var invalidAttributeRE = /[\s"'<>\/=]/;
+
   var decodeHTMLCached = cached(he.decode);
 
   // configurable state
@@ -3954,12 +3957,26 @@
           element.ns = ns;
         }
 
-        if (options.outputSourceRange) {
-          element.start = start$1;
-          element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {
-            cumulated[attr.name] = attr;
-            return cumulated
-          }, {});
+        {
+          if (options.outputSourceRange) {
+            element.start = start$1;
+            element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {
+              cumulated[attr.name] = attr;
+              return cumulated
+            }, {});
+          }
+          attrs.forEach(function (attr) {
+            if (invalidAttributeRE.test(attr.name)) {
+              warn$1(
+                "Invalid dynamic argument expression: attribute names cannot contain " +
+                "spaces, quotes, <, >, / or =.",
+                {
+                  start: attr.start + attr.name.indexOf("["),
+                  end: attr.start + attr.name.length
+                }
+              );
+            }
+          });
         }
 
         if (isForbiddenTag(element) && !isServerRendering()) {

+ 24 - 7
packages/vue-server-renderer/build.dev.js

@@ -3094,6 +3094,7 @@ var style = {
 
 // Regular Expressions for parsing tags and attributes
 var attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
+var dynamicArgAttribute = /^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
 var ncname = "[a-zA-Z_][\\-\\.0-9_a-zA-Z" + unicodeLetters + "]*";
 var qnameCapture = "((?:" + ncname + "\\:)?" + ncname + ")";
 var startTagOpen = new RegExp(("^<" + qnameCapture));
@@ -3271,7 +3272,7 @@ function parseHTML (html, options) {
       };
       advance(start[0].length);
       var end, attr;
-      while (!(end = html.match(startTagClose)) && (attr = html.match(attribute))) {
+      while (!(end = html.match(startTagClose)) && (attr = html.match(dynamicArgAttribute) || html.match(attribute))) {
         attr.start = index;
         advance(attr[0].length);
         attr.end = index;
@@ -3548,6 +3549,8 @@ var slotRE = /^v-slot(:|$)|^#/;
 var lineBreakRE = /[\r\n]/;
 var whitespaceRE = /\s+/g;
 
+var invalidAttributeRE = /[\s"'<>\/=]/;
+
 var decodeHTMLCached = cached(he.decode);
 
 // configurable state
@@ -3704,12 +3707,26 @@ function parse (
         element.ns = ns;
       }
 
-      if (options.outputSourceRange) {
-        element.start = start$1;
-        element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {
-          cumulated[attr.name] = attr;
-          return cumulated
-        }, {});
+      {
+        if (options.outputSourceRange) {
+          element.start = start$1;
+          element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {
+            cumulated[attr.name] = attr;
+            return cumulated
+          }, {});
+        }
+        attrs.forEach(function (attr) {
+          if (invalidAttributeRE.test(attr.name)) {
+            warn$1(
+              "Invalid dynamic argument expression: attribute names cannot contain " +
+              "spaces, quotes, <, >, / or =.",
+              {
+                start: attr.start + attr.name.indexOf("["),
+                end: attr.start + attr.name.length
+              }
+            );
+          }
+        });
       }
 
       if (isForbiddenTag(element) && !isServerRendering()) {

File diff suppressed because it is too large
+ 0 - 0
packages/vue-server-renderer/build.prod.js


+ 1 - 1
packages/vue-server-renderer/package.json

@@ -1,6 +1,6 @@
 {
   "name": "vue-server-renderer",
-  "version": "2.6.0-beta.2",
+  "version": "2.6.0-beta.3",
   "description": "server renderer for Vue 2.0",
   "main": "index.js",
   "types": "types/index.d.ts",

+ 24 - 7
packages/vue-template-compiler/browser.js

@@ -303,6 +303,7 @@
 
   // Regular Expressions for parsing tags and attributes
   var attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
+  var dynamicArgAttribute = /^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
   var ncname = "[a-zA-Z_][\\-\\.0-9_a-zA-Z" + unicodeLetters + "]*";
   var qnameCapture = "((?:" + ncname + "\\:)?" + ncname + ")";
   var startTagOpen = new RegExp(("^<" + qnameCapture));
@@ -480,7 +481,7 @@
         };
         advance(start[0].length);
         var end, attr;
-        while (!(end = html.match(startTagClose)) && (attr = html.match(attribute))) {
+        while (!(end = html.match(startTagClose)) && (attr = html.match(dynamicArgAttribute) || html.match(attribute))) {
           attr.start = index;
           advance(attr[0].length);
           attr.end = index;
@@ -2740,6 +2741,8 @@
   var lineBreakRE = /[\r\n]/;
   var whitespaceRE = /\s+/g;
 
+  var invalidAttributeRE = /[\s"'<>\/=]/;
+
   var decodeHTMLCached = cached(he.decode);
 
   // configurable state
@@ -2896,12 +2899,26 @@
           element.ns = ns;
         }
 
-        if (options.outputSourceRange) {
-          element.start = start$1;
-          element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {
-            cumulated[attr.name] = attr;
-            return cumulated
-          }, {});
+        {
+          if (options.outputSourceRange) {
+            element.start = start$1;
+            element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {
+              cumulated[attr.name] = attr;
+              return cumulated
+            }, {});
+          }
+          attrs.forEach(function (attr) {
+            if (invalidAttributeRE.test(attr.name)) {
+              warn$1(
+                "Invalid dynamic argument expression: attribute names cannot contain " +
+                "spaces, quotes, <, >, / or =.",
+                {
+                  start: attr.start + attr.name.indexOf("["),
+                  end: attr.start + attr.name.length
+                }
+              );
+            }
+          });
         }
 
         if (isForbiddenTag(element) && !isServerRendering()) {

+ 25 - 8
packages/vue-template-compiler/build.js

@@ -260,6 +260,7 @@ function def (obj, key, val, enumerable) {
 
 // Regular Expressions for parsing tags and attributes
 var attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
+var dynamicArgAttribute = /^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;
 var ncname = "[a-zA-Z_][\\-\\.0-9_a-zA-Z" + unicodeLetters + "]*";
 var qnameCapture = "((?:" + ncname + "\\:)?" + ncname + ")";
 var startTagOpen = new RegExp(("^<" + qnameCapture));
@@ -437,7 +438,7 @@ function parseHTML (html, options) {
       };
       advance(start[0].length);
       var end, attr;
-      while (!(end = html.match(startTagClose)) && (attr = html.match(attribute))) {
+      while (!(end = html.match(startTagClose)) && (attr = html.match(dynamicArgAttribute) || html.match(attribute))) {
         attr.start = index;
         advance(attr[0].length);
         attr.end = index;
@@ -2360,6 +2361,8 @@ var slotRE = /^v-slot(:|$)|^#/;
 var lineBreakRE = /[\r\n]/;
 var whitespaceRE = /\s+/g;
 
+var invalidAttributeRE = /[\s"'<>\/=]/;
+
 var decodeHTMLCached = cached(he.decode);
 
 // configurable state
@@ -2516,12 +2519,26 @@ function parse (
         element.ns = ns;
       }
 
-      if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {
-        element.start = start$1;
-        element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {
-          cumulated[attr.name] = attr;
-          return cumulated
-        }, {});
+      if (process.env.NODE_ENV !== 'production') {
+        if (options.outputSourceRange) {
+          element.start = start$1;
+          element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {
+            cumulated[attr.name] = attr;
+            return cumulated
+          }, {});
+        }
+        attrs.forEach(function (attr) {
+          if (invalidAttributeRE.test(attr.name)) {
+            warn$1(
+              "Invalid dynamic argument expression: attribute names cannot contain " +
+              "spaces, quotes, <, >, / or =.",
+              {
+                start: attr.start + attr.name.indexOf("["),
+                end: attr.start + attr.name.length
+              }
+            );
+          }
+        });
       }
 
       if (isForbiddenTag(element) && !isServerRendering()) {
@@ -2912,7 +2929,7 @@ function processSlotContent (el) {
   }
 
   // 2.6 v-slot syntax
-  if (process.env.NEW_SLOT_SYNTAX) {
+  {
     if (el.tag === 'template') {
       // v-slot on <template>
       var slotBinding = getAndRemoveAttrByRegex(el, slotRE);

+ 1 - 1
packages/vue-template-compiler/package.json

@@ -1,6 +1,6 @@
 {
   "name": "vue-template-compiler",
-  "version": "2.6.0-beta.2",
+  "version": "2.6.0-beta.3",
   "description": "template compiler for Vue 2.0",
   "main": "index.js",
   "unpkg": "browser.js",

Some files were not shown because too many files changed in this diff