@vue/compat 3.5.14 → 3.5.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/vue.cjs.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compat v3.5.14
2
+ * @vue/compat v3.5.15
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -2197,11 +2197,11 @@ function watch$1(source, cb, options = EMPTY_OBJ) {
2197
2197
  oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,
2198
2198
  boundCleanup
2199
2199
  ];
2200
+ oldValue = newValue;
2200
2201
  call ? call(cb, 3, args) : (
2201
2202
  // @ts-expect-error
2202
2203
  cb(...args)
2203
2204
  );
2204
- oldValue = newValue;
2205
2205
  } finally {
2206
2206
  activeWatcher = currentWatcher;
2207
2207
  }
@@ -3654,15 +3654,16 @@ const TeleportImpl = {
3654
3654
  updateCssVars(n2, true);
3655
3655
  }
3656
3656
  if (isTeleportDeferred(n2.props)) {
3657
+ n2.el.__isMounted = false;
3657
3658
  queuePostRenderEffect(() => {
3658
3659
  mountToTarget();
3659
- n2.el.__isMounted = true;
3660
+ delete n2.el.__isMounted;
3660
3661
  }, parentSuspense);
3661
3662
  } else {
3662
3663
  mountToTarget();
3663
3664
  }
3664
3665
  } else {
3665
- if (isTeleportDeferred(n2.props) && !n1.el.__isMounted) {
3666
+ if (isTeleportDeferred(n2.props) && n1.el.__isMounted === false) {
3666
3667
  queuePostRenderEffect(() => {
3667
3668
  TeleportImpl.process(
3668
3669
  n1,
@@ -3676,7 +3677,6 @@ const TeleportImpl = {
3676
3677
  optimized,
3677
3678
  internals
3678
3679
  );
3679
- delete n1.el.__isMounted;
3680
3680
  }, parentSuspense);
3681
3681
  return;
3682
3682
  }
@@ -4667,6 +4667,8 @@ function createHydrationFunctions(rendererInternals) {
4667
4667
  ) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear;
4668
4668
  const content = el.content.firstChild;
4669
4669
  if (needCallTransitionHooks) {
4670
+ const cls = content.getAttribute("class");
4671
+ if (cls) content.$cls = cls;
4670
4672
  transition.beforeEnter(content);
4671
4673
  }
4672
4674
  replaceNode(content, el, parentComponent);
@@ -4919,7 +4921,12 @@ function propHasMismatch(el, key, clientValue, vnode, instance) {
4919
4921
  let actual;
4920
4922
  let expected;
4921
4923
  if (key === "class") {
4922
- actual = el.getAttribute("class");
4924
+ if (el.$cls) {
4925
+ actual = el.$cls;
4926
+ delete el.$cls;
4927
+ } else {
4928
+ actual = el.getAttribute("class");
4929
+ }
4923
4930
  expected = normalizeClass(clientValue);
4924
4931
  if (!isSetEqual(toClassSet(actual || ""), toClassSet(expected))) {
4925
4932
  mismatchType = 2 /* CLASS */;
@@ -5214,14 +5221,25 @@ function defineAsyncComponent(source) {
5214
5221
  name: "AsyncComponentWrapper",
5215
5222
  __asyncLoader: load,
5216
5223
  __asyncHydrate(el, instance, hydrate) {
5224
+ let patched = false;
5217
5225
  const doHydrate = hydrateStrategy ? () => {
5226
+ const performHydrate = () => {
5227
+ if (patched) {
5228
+ warn$1(
5229
+ `Skipping lazy hydration for component '${getComponentName(resolvedComp)}': it was updated before lazy hydration performed.`
5230
+ );
5231
+ return;
5232
+ }
5233
+ hydrate();
5234
+ };
5218
5235
  const teardown = hydrateStrategy(
5219
- hydrate,
5236
+ performHydrate,
5220
5237
  (cb) => forEachElement(el, cb)
5221
5238
  );
5222
5239
  if (teardown) {
5223
5240
  (instance.bum || (instance.bum = [])).push(teardown);
5224
5241
  }
5242
+ (instance.u || (instance.u = [])).push(() => patched = true);
5225
5243
  } : hydrate;
5226
5244
  if (resolvedComp) {
5227
5245
  doHydrate();
@@ -7233,7 +7251,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
7233
7251
  return vm;
7234
7252
  }
7235
7253
  }
7236
- Vue.version = `2.6.14-compat:${"3.5.14"}`;
7254
+ Vue.version = `2.6.14-compat:${"3.5.15"}`;
7237
7255
  Vue.config = singletonApp.config;
7238
7256
  Vue.use = (plugin, ...options) => {
7239
7257
  if (plugin && isFunction(plugin.install)) {
@@ -7779,9 +7797,15 @@ If you want to remount the same app, move your app creation logic into a factory
7779
7797
  },
7780
7798
  provide(key, value) {
7781
7799
  if (key in context.provides) {
7782
- warn$1(
7783
- `App already provides property with key "${String(key)}". It will be overwritten with the new value.`
7784
- );
7800
+ if (hasOwn(context.provides, key)) {
7801
+ warn$1(
7802
+ `App already provides property with key "${String(key)}". It will be overwritten with the new value.`
7803
+ );
7804
+ } else {
7805
+ warn$1(
7806
+ `App already provides property with key "${String(key)}" inherited from its parent element. It will be overwritten with the new value.`
7807
+ );
7808
+ }
7785
7809
  }
7786
7810
  context.provides[key] = value;
7787
7811
  return app;
@@ -7821,7 +7845,7 @@ function provide(key, value) {
7821
7845
  function inject(key, defaultValue, treatDefaultAsFactory = false) {
7822
7846
  const instance = currentInstance || currentRenderingInstance;
7823
7847
  if (instance || currentApp) {
7824
- const provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0;
7848
+ let provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null || instance.ce ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0;
7825
7849
  if (provides && key in provides) {
7826
7850
  return provides[key];
7827
7851
  } else if (arguments.length > 1) {
@@ -8890,7 +8914,7 @@ function baseCreateRenderer(options, createHydrationFns) {
8890
8914
  (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement
8891
8915
  // which also requires the correct parent container
8892
8916
  !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything.
8893
- oldVNode.shapeFlag & (6 | 64)) ? hostParentNode(oldVNode.el) : (
8917
+ oldVNode.shapeFlag & (6 | 64 | 128)) ? hostParentNode(oldVNode.el) : (
8894
8918
  // In other cases, the parent container is not actually used so we
8895
8919
  // just pass the block element here to avoid a DOM parentNode call.
8896
8920
  fallbackContainer
@@ -12383,7 +12407,7 @@ function isMemoSame(cached, memo) {
12383
12407
  return true;
12384
12408
  }
12385
12409
 
12386
- const version = "3.5.14";
12410
+ const version = "3.5.15";
12387
12411
  const warn = warn$1 ;
12388
12412
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
12389
12413
  const devtools = devtools$1 ;
@@ -13016,7 +13040,7 @@ function compatCoerceAttr(el, key, value, instance = null) {
13016
13040
  el.setAttribute(key, v2CoercedValue);
13017
13041
  return true;
13018
13042
  }
13019
- } else if (value === false && !isSpecialBooleanAttr(key) && compatUtils.isCompatEnabled("ATTR_FALSE_VALUE", instance)) {
13043
+ } else if (value === false && !(el.tagName === "INPUT" && key === "value") && !isSpecialBooleanAttr(key) && compatUtils.isCompatEnabled("ATTR_FALSE_VALUE", instance)) {
13020
13044
  compatUtils.warnDeprecation(
13021
13045
  "ATTR_FALSE_VALUE",
13022
13046
  instance,
@@ -13305,13 +13329,10 @@ class VueElement extends BaseClass {
13305
13329
  this._root = this;
13306
13330
  }
13307
13331
  }
13308
- if (!this._def.__asyncLoader) {
13309
- this._resolveProps(this._def);
13310
- }
13311
13332
  }
13312
13333
  connectedCallback() {
13313
13334
  if (!this.isConnected) return;
13314
- if (!this.shadowRoot) {
13335
+ if (!this.shadowRoot && !this._resolved) {
13315
13336
  this._parseSlots();
13316
13337
  }
13317
13338
  this._connected = true;
@@ -13324,8 +13345,7 @@ class VueElement extends BaseClass {
13324
13345
  }
13325
13346
  if (!this._instance) {
13326
13347
  if (this._resolved) {
13327
- this._setParent();
13328
- this._update();
13348
+ this._mount(this._def);
13329
13349
  } else {
13330
13350
  if (parent && parent._pendingResolve) {
13331
13351
  this._pendingResolve = parent._pendingResolve.then(() => {
@@ -13341,7 +13361,15 @@ class VueElement extends BaseClass {
13341
13361
  _setParent(parent = this._parent) {
13342
13362
  if (parent) {
13343
13363
  this._instance.parent = parent._instance;
13344
- this._instance.provides = parent._instance.provides;
13364
+ this._inheritParentContext(parent);
13365
+ }
13366
+ }
13367
+ _inheritParentContext(parent = this._parent) {
13368
+ if (parent && this._app) {
13369
+ Object.setPrototypeOf(
13370
+ this._app._context.provides,
13371
+ parent._instance.provides
13372
+ );
13345
13373
  }
13346
13374
  }
13347
13375
  disconnectedCallback() {
@@ -13391,9 +13419,7 @@ class VueElement extends BaseClass {
13391
13419
  }
13392
13420
  }
13393
13421
  this._numberProps = numberProps;
13394
- if (isAsync) {
13395
- this._resolveProps(def);
13396
- }
13422
+ this._resolveProps(def);
13397
13423
  if (this.shadowRoot) {
13398
13424
  this._applyStyles(styles);
13399
13425
  } else if (styles) {
@@ -13417,6 +13443,7 @@ class VueElement extends BaseClass {
13417
13443
  def.name = "VueElement";
13418
13444
  }
13419
13445
  this._app = this._createApp(def);
13446
+ this._inheritParentContext();
13420
13447
  if (def.configureApp) {
13421
13448
  def.configureApp(this._app);
13422
13449
  }
@@ -13501,7 +13528,9 @@ class VueElement extends BaseClass {
13501
13528
  }
13502
13529
  }
13503
13530
  _update() {
13504
- render(this._createVNode(), this._root);
13531
+ const vnode = this._createVNode();
13532
+ if (this._app) vnode.appContext = this._app._context;
13533
+ render(vnode, this._root);
13505
13534
  }
13506
13535
  _createVNode() {
13507
13536
  const baseProps = {};
@@ -17860,7 +17889,9 @@ function createCodegenContext(ast, {
17860
17889
  name = content;
17861
17890
  }
17862
17891
  }
17863
- addMapping(node.loc.start, name);
17892
+ if (node.loc.source) {
17893
+ addMapping(node.loc.start, name);
17894
+ }
17864
17895
  }
17865
17896
  if (newlineIndex === -3 /* Unknown */) {
17866
17897
  advancePositionWithMutation(context, code);
@@ -17876,7 +17907,7 @@ function createCodegenContext(ast, {
17876
17907
  context.column = code.length - newlineIndex;
17877
17908
  }
17878
17909
  }
17879
- if (node && node.loc !== locStub) {
17910
+ if (node && node.loc !== locStub && node.loc.source) {
17880
17911
  addMapping(node.loc.end);
17881
17912
  }
17882
17913
  }
@@ -19987,9 +20018,8 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom
19987
20018
  hasDynamicKeys = true;
19988
20019
  if (exp) {
19989
20020
  if (isVBind) {
19990
- pushRefVForMarker();
19991
- pushMergeArg();
19992
20021
  {
20022
+ pushMergeArg();
19993
20023
  {
19994
20024
  const hasOverridableKeys = mergeArgs.some((arg2) => {
19995
20025
  if (arg2.type === 15) {
@@ -20019,6 +20049,8 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom
20019
20049
  continue;
20020
20050
  }
20021
20051
  }
20052
+ pushRefVForMarker();
20053
+ pushMergeArg();
20022
20054
  mergeArgs.push(exp);
20023
20055
  } else {
20024
20056
  pushMergeArg({
@@ -21524,6 +21556,9 @@ const ignoreSideEffectTags = (node, context) => {
21524
21556
  };
21525
21557
 
21526
21558
  function isValidHTMLNesting(parent, child) {
21559
+ if (parent === "template") {
21560
+ return true;
21561
+ }
21527
21562
  if (parent in onlyValidChildren) {
21528
21563
  return onlyValidChildren[parent].has(child);
21529
21564
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compat v3.5.14
2
+ * @vue/compat v3.5.15
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -1976,11 +1976,11 @@ function watch$1(source, cb, options = EMPTY_OBJ) {
1976
1976
  oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,
1977
1977
  boundCleanup
1978
1978
  ];
1979
+ oldValue = newValue;
1979
1980
  call ? call(cb, 3, args) : (
1980
1981
  // @ts-expect-error
1981
1982
  cb(...args)
1982
1983
  );
1983
- oldValue = newValue;
1984
1984
  } finally {
1985
1985
  activeWatcher = currentWatcher;
1986
1986
  }
@@ -2752,15 +2752,16 @@ const TeleportImpl = {
2752
2752
  updateCssVars(n2, true);
2753
2753
  }
2754
2754
  if (isTeleportDeferred(n2.props)) {
2755
+ n2.el.__isMounted = false;
2755
2756
  queuePostRenderEffect(() => {
2756
2757
  mountToTarget();
2757
- n2.el.__isMounted = true;
2758
+ delete n2.el.__isMounted;
2758
2759
  }, parentSuspense);
2759
2760
  } else {
2760
2761
  mountToTarget();
2761
2762
  }
2762
2763
  } else {
2763
- if (isTeleportDeferred(n2.props) && !n1.el.__isMounted) {
2764
+ if (isTeleportDeferred(n2.props) && n1.el.__isMounted === false) {
2764
2765
  queuePostRenderEffect(() => {
2765
2766
  TeleportImpl.process(
2766
2767
  n1,
@@ -2774,7 +2775,6 @@ const TeleportImpl = {
2774
2775
  optimized,
2775
2776
  internals
2776
2777
  );
2777
- delete n1.el.__isMounted;
2778
2778
  }, parentSuspense);
2779
2779
  return;
2780
2780
  }
@@ -3696,6 +3696,8 @@ function createHydrationFunctions(rendererInternals) {
3696
3696
  ) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear;
3697
3697
  const content = el.content.firstChild;
3698
3698
  if (needCallTransitionHooks) {
3699
+ const cls = content.getAttribute("class");
3700
+ if (cls) content.$cls = cls;
3699
3701
  transition.beforeEnter(content);
3700
3702
  }
3701
3703
  replaceNode(content, el, parentComponent);
@@ -4086,13 +4088,17 @@ function defineAsyncComponent(source) {
4086
4088
  __asyncLoader: load,
4087
4089
  __asyncHydrate(el, instance, hydrate) {
4088
4090
  const doHydrate = hydrateStrategy ? () => {
4091
+ const performHydrate = () => {
4092
+ hydrate();
4093
+ };
4089
4094
  const teardown = hydrateStrategy(
4090
- hydrate,
4095
+ performHydrate,
4091
4096
  (cb) => forEachElement(el, cb)
4092
4097
  );
4093
4098
  if (teardown) {
4094
4099
  (instance.bum || (instance.bum = [])).push(teardown);
4095
4100
  }
4101
+ (instance.u || (instance.u = [])).push(() => true);
4096
4102
  } : hydrate;
4097
4103
  if (resolvedComp) {
4098
4104
  doHydrate();
@@ -5816,7 +5822,7 @@ function createCompatVue$1(createApp, createSingletonApp) {
5816
5822
  return vm;
5817
5823
  }
5818
5824
  }
5819
- Vue.version = `2.6.14-compat:${"3.5.14"}`;
5825
+ Vue.version = `2.6.14-compat:${"3.5.15"}`;
5820
5826
  Vue.config = singletonApp.config;
5821
5827
  Vue.use = (plugin, ...options) => {
5822
5828
  if (plugin && isFunction(plugin.install)) {
@@ -6296,7 +6302,7 @@ function provide(key, value) {
6296
6302
  function inject(key, defaultValue, treatDefaultAsFactory = false) {
6297
6303
  const instance = currentInstance || currentRenderingInstance;
6298
6304
  if (instance || currentApp) {
6299
- const provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0;
6305
+ let provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null || instance.ce ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0;
6300
6306
  if (provides && key in provides) {
6301
6307
  return provides[key];
6302
6308
  } else if (arguments.length > 1) {
@@ -7128,7 +7134,7 @@ function baseCreateRenderer(options, createHydrationFns) {
7128
7134
  (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement
7129
7135
  // which also requires the correct parent container
7130
7136
  !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything.
7131
- oldVNode.shapeFlag & (6 | 64)) ? hostParentNode(oldVNode.el) : (
7137
+ oldVNode.shapeFlag & (6 | 64 | 128)) ? hostParentNode(oldVNode.el) : (
7132
7138
  // In other cases, the parent container is not actually used so we
7133
7139
  // just pass the block element here to avoid a DOM parentNode call.
7134
7140
  fallbackContainer
@@ -9971,7 +9977,7 @@ function isMemoSame(cached, memo) {
9971
9977
  return true;
9972
9978
  }
9973
9979
 
9974
- const version = "3.5.14";
9980
+ const version = "3.5.15";
9975
9981
  const warn$1 = NOOP;
9976
9982
  const ErrorTypeStrings = ErrorTypeStrings$1 ;
9977
9983
  const devtools = void 0;
@@ -10589,7 +10595,7 @@ function compatCoerceAttr(el, key, value, instance = null) {
10589
10595
  el.setAttribute(key, v2CoercedValue);
10590
10596
  return true;
10591
10597
  }
10592
- } else if (value === false && !isSpecialBooleanAttr(key) && compatUtils.isCompatEnabled("ATTR_FALSE_VALUE", instance)) {
10598
+ } else if (value === false && !(el.tagName === "INPUT" && key === "value") && !isSpecialBooleanAttr(key) && compatUtils.isCompatEnabled("ATTR_FALSE_VALUE", instance)) {
10593
10599
  compatUtils.warnDeprecation(
10594
10600
  "ATTR_FALSE_VALUE",
10595
10601
  instance,
@@ -10852,13 +10858,10 @@ class VueElement extends BaseClass {
10852
10858
  this._root = this;
10853
10859
  }
10854
10860
  }
10855
- if (!this._def.__asyncLoader) {
10856
- this._resolveProps(this._def);
10857
- }
10858
10861
  }
10859
10862
  connectedCallback() {
10860
10863
  if (!this.isConnected) return;
10861
- if (!this.shadowRoot) {
10864
+ if (!this.shadowRoot && !this._resolved) {
10862
10865
  this._parseSlots();
10863
10866
  }
10864
10867
  this._connected = true;
@@ -10871,8 +10874,7 @@ class VueElement extends BaseClass {
10871
10874
  }
10872
10875
  if (!this._instance) {
10873
10876
  if (this._resolved) {
10874
- this._setParent();
10875
- this._update();
10877
+ this._mount(this._def);
10876
10878
  } else {
10877
10879
  if (parent && parent._pendingResolve) {
10878
10880
  this._pendingResolve = parent._pendingResolve.then(() => {
@@ -10888,7 +10890,15 @@ class VueElement extends BaseClass {
10888
10890
  _setParent(parent = this._parent) {
10889
10891
  if (parent) {
10890
10892
  this._instance.parent = parent._instance;
10891
- this._instance.provides = parent._instance.provides;
10893
+ this._inheritParentContext(parent);
10894
+ }
10895
+ }
10896
+ _inheritParentContext(parent = this._parent) {
10897
+ if (parent && this._app) {
10898
+ Object.setPrototypeOf(
10899
+ this._app._context.provides,
10900
+ parent._instance.provides
10901
+ );
10892
10902
  }
10893
10903
  }
10894
10904
  disconnectedCallback() {
@@ -10938,9 +10948,7 @@ class VueElement extends BaseClass {
10938
10948
  }
10939
10949
  }
10940
10950
  this._numberProps = numberProps;
10941
- if (isAsync) {
10942
- this._resolveProps(def);
10943
- }
10951
+ this._resolveProps(def);
10944
10952
  if (this.shadowRoot) {
10945
10953
  this._applyStyles(styles);
10946
10954
  }
@@ -10957,6 +10965,7 @@ class VueElement extends BaseClass {
10957
10965
  }
10958
10966
  _mount(def) {
10959
10967
  this._app = this._createApp(def);
10968
+ this._inheritParentContext();
10960
10969
  if (def.configureApp) {
10961
10970
  def.configureApp(this._app);
10962
10971
  }
@@ -11039,7 +11048,9 @@ class VueElement extends BaseClass {
11039
11048
  }
11040
11049
  }
11041
11050
  _update() {
11042
- render(this._createVNode(), this._root);
11051
+ const vnode = this._createVNode();
11052
+ if (this._app) vnode.appContext = this._app._context;
11053
+ render(vnode, this._root);
11043
11054
  }
11044
11055
  _createVNode() {
11045
11056
  const baseProps = {};
@@ -15165,7 +15176,9 @@ function createCodegenContext(ast, {
15165
15176
  name = content;
15166
15177
  }
15167
15178
  }
15168
- addMapping(node.loc.start, name);
15179
+ if (node.loc.source) {
15180
+ addMapping(node.loc.start, name);
15181
+ }
15169
15182
  }
15170
15183
  if (newlineIndex === -3 /* Unknown */) {
15171
15184
  advancePositionWithMutation(context, code);
@@ -15181,7 +15194,7 @@ function createCodegenContext(ast, {
15181
15194
  context.column = code.length - newlineIndex;
15182
15195
  }
15183
15196
  }
15184
- if (node && node.loc !== locStub) {
15197
+ if (node && node.loc !== locStub && node.loc.source) {
15185
15198
  addMapping(node.loc.end);
15186
15199
  }
15187
15200
  }
@@ -17256,9 +17269,8 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom
17256
17269
  hasDynamicKeys = true;
17257
17270
  if (exp) {
17258
17271
  if (isVBind) {
17259
- pushRefVForMarker();
17260
- pushMergeArg();
17261
17272
  {
17273
+ pushMergeArg();
17262
17274
  if (isCompatEnabled(
17263
17275
  "COMPILER_V_BIND_OBJECT_ORDER",
17264
17276
  context
@@ -17267,6 +17279,8 @@ function buildProps(node, context, props = node.props, isComponent, isDynamicCom
17267
17279
  continue;
17268
17280
  }
17269
17281
  }
17282
+ pushRefVForMarker();
17283
+ pushMergeArg();
17270
17284
  mergeArgs.push(exp);
17271
17285
  } else {
17272
17286
  pushMergeArg({