Skip to content

Commit 415eb03

Browse files
author
Evgeny Kalashnikov
committed
Code generate: add variadic type test
1 parent 3896ae0 commit 415eb03

File tree

4 files changed

+100
-6
lines changed

4 files changed

+100
-6
lines changed

lib/internal/Magento/Framework/Interception/Test/Unit/Code/Generator/_files/Interceptor.txt

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,39 @@ class Interceptor extends \Magento\Framework\Interception\Code\Generator\Sample
5454
/**
5555
* {@inheritdoc}
5656
*/
57-
public function variadic(... $values)
57+
public function firstVariadicParameter(... $variadicValue)
5858
{
59-
$pluginInfo = $this->pluginList->getNext($this->subjectType, 'variadic');
59+
$pluginInfo = $this->pluginList->getNext($this->subjectType, 'firstVariadicParameter');
6060
if (!$pluginInfo) {
61-
return parent::variadic(... $values);
61+
return parent::firstVariadicParameter(... $variadicValue);
6262
} else {
63-
return $this->___callPlugins('variadic', func_get_args(), $pluginInfo);
63+
return $this->___callPlugins('firstVariadicParameter', func_get_args(), $pluginInfo);
64+
}
65+
}
66+
67+
/**
68+
* {@inheritdoc}
69+
*/
70+
public function secondVariadicParameter($value, ... $variadicValue)
71+
{
72+
$pluginInfo = $this->pluginList->getNext($this->subjectType, 'secondVariadicParameter');
73+
if (!$pluginInfo) {
74+
return parent::secondVariadicParameter($value, ... $variadicValue);
75+
} else {
76+
return $this->___callPlugins('secondVariadicParameter', func_get_args(), $pluginInfo);
77+
}
78+
}
79+
80+
/**
81+
* {@inheritdoc}
82+
*/
83+
public function byRefVariadic(&... $variadicValue)
84+
{
85+
$pluginInfo = $this->pluginList->getNext($this->subjectType, 'byRefVariadic');
86+
if (!$pluginInfo) {
87+
return parent::byRefVariadic(... $variadicValue);
88+
} else {
89+
return $this->___callPlugins('byRefVariadic', func_get_args(), $pluginInfo);
6490
}
6591
}
6692
}

lib/internal/Magento/Framework/Interception/Test/Unit/Code/Generator/_files/Sample.php

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
class Sample
99
{
1010
private $attribute;
11+
private $variadicAttribute;
1112

1213
public function getValue()
1314
{
@@ -23,8 +24,19 @@ public function & getReference()
2324
{
2425
}
2526

26-
public function variadic(... $values)
27+
public function firstVariadicParameter(...$variadicValue)
2728
{
28-
$this->attribute = array_shift($values);
29+
$this->variadicAttribute = $variadicValue;
30+
}
31+
32+
public function secondVariadicParameter($value, ...$variadicValue)
33+
{
34+
$this->attribute = $value;
35+
$this->variadicAttribute = $variadicValue;
36+
}
37+
38+
public function byRefVariadic(& ...$variadicValue)
39+
{
40+
$this->variadicAttribute = $variadicValue;
2941
}
3042
}

lib/internal/Magento/Framework/Interception/Test/Unit/Code/Generator/_files/TInterceptor.txt

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,43 @@ class Interceptor extends \Magento\Framework\Interception\Code\Generator\TSample
3737
return $this->___callPlugins('setValue', func_get_args(), $pluginInfo);
3838
}
3939
}
40+
41+
/**
42+
* {@inheritdoc}
43+
*/
44+
public function typeHintedFirstVariadicParameter(string ... $variadicValue)
45+
{
46+
$pluginInfo = $this->pluginList->getNext($this->subjectType, 'typeHintedFirstVariadicParameter');
47+
if (!$pluginInfo) {
48+
return parent::typeHintedFirstVariadicParameter(... $variadicValue);
49+
} else {
50+
return $this->___callPlugins('typeHintedFirstVariadicParameter', func_get_args(), $pluginInfo);
51+
}
52+
}
53+
54+
/**
55+
* {@inheritdoc}
56+
*/
57+
public function typeHintedSecondVariadicParameter(string $value, string ... $variadicValue)
58+
{
59+
$pluginInfo = $this->pluginList->getNext($this->subjectType, 'typeHintedSecondVariadicParameter');
60+
if (!$pluginInfo) {
61+
return parent::typeHintedSecondVariadicParameter($value, ... $variadicValue);
62+
} else {
63+
return $this->___callPlugins('typeHintedSecondVariadicParameter', func_get_args(), $pluginInfo);
64+
}
65+
}
66+
67+
/**
68+
* {@inheritdoc}
69+
*/
70+
public function byRefTypeHintedVariadic(string &... $variadicValue)
71+
{
72+
$pluginInfo = $this->pluginList->getNext($this->subjectType, 'byRefTypeHintedVariadic');
73+
if (!$pluginInfo) {
74+
return parent::byRefTypeHintedVariadic(... $variadicValue);
75+
} else {
76+
return $this->___callPlugins('byRefTypeHintedVariadic', func_get_args(), $pluginInfo);
77+
}
78+
}
4079
}

lib/internal/Magento/Framework/Interception/Test/Unit/Code/Generator/_files/TSample.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
class TSample
99
{
1010
private $value;
11+
private $variadicValue;
1112

1213
public function getValue() : string
1314
{
@@ -18,4 +19,20 @@ public function setValue(string $value)
1819
{
1920
$this->value = $value;
2021
}
22+
23+
public function typeHintedFirstVariadicParameter(string ...$variadicValue)
24+
{
25+
$this->variadicValue = $variadicValue;
26+
}
27+
28+
public function typeHintedSecondVariadicParameter(string $value, string ...$variadicValue)
29+
{
30+
$this->value = $value;
31+
$this->variadicValue = $variadicValue;
32+
}
33+
34+
public function byRefTypeHintedVariadic(string & ...$variadicValue)
35+
{
36+
$this->variadicValue = $variadicValue;
37+
}
2138
}

0 commit comments

Comments
 (0)