Skip to content

Commit

Permalink
Removes arrow in multi-line short closures
Browse files Browse the repository at this point in the history
  • Loading branch information
nunomaduro committed Oct 20, 2020
1 parent 6f3943c commit b82fe0c
Show file tree
Hide file tree
Showing 9 changed files with 32 additions and 32 deletions.
18 changes: 9 additions & 9 deletions Zend/tests/arrow_functions/001.phpt
Expand Up @@ -4,26 +4,26 @@ Basic arrow function functionality check
<?php

// No return value
$foo = fn() => {};
$foo = fn() {};
var_dump($foo());

// Return value
$foo = fn() => 1;
var_dump($foo());

$foo = fn() => { return 2; };
$foo = fn() { return 2; };
var_dump($foo());

$foo = fn($x) => $x;
var_dump($foo(3));

$foo = fn($x) => { return $x; };
$foo = fn($x) { return $x; };
var_dump($foo(4));

$foo = fn($x, $y) => $x + $y;
var_dump($foo(4, 1));

$foo = fn($x, $y) => { return $x + $y; };
$foo = fn($x, $y) { return $x + $y; };
var_dump($foo(5, 1));

// Closing over $var
Expand All @@ -32,14 +32,14 @@ $foo = fn() => $var;
var_dump($foo());

$var = 8;
$foo = fn() => { return $var; };
$foo = fn() { return $var; };
var_dump($foo());

// Not closing over $var, it's a parameter
$foo = fn($var) => $var;
var_dump($foo(9));

$foo = fn($var) => { return $var; };
$foo = fn($var) { return $var; };
var_dump($foo(10));

// Close over $var by-value, not by-reference
Expand All @@ -50,7 +50,7 @@ var_dump($foo());
var_dump($var);

$var = 13;
$foo = fn() => { return ++$var; };
$foo = fn() { return ++$var; };
var_dump($var);
var_dump($foo());
var_dump($var);
Expand All @@ -63,10 +63,10 @@ $var = 15;
var_dump((fn() => function() use($var) { return $var; })()());

$var = 16;
var_dump((fn() => { return fn() => { return $var; }; })()());
var_dump((fn() { return fn() { return $var; }; })()());

// Nested arrow functions with null return value
var_dump((fn() => { return fn() => {}; })()());
var_dump((fn() { return fn() {}; })()());

?>
--EXPECT--
Expand Down
2 changes: 1 addition & 1 deletion Zend/tests/arrow_functions/002.phpt
Expand Up @@ -8,7 +8,7 @@ $b = 1;
var_dump((fn() => $b + $c)());

$d = 2;
var_dump((fn() => { return $d + $e; } )());
var_dump((fn() { return $d + $e; } )());

?>
--EXPECTF--
Expand Down
4 changes: 2 additions & 2 deletions Zend/tests/arrow_functions/003.phpt
Expand Up @@ -10,15 +10,15 @@ var_dump($fn());

$b = 2;
$var = "b";
$fn = fn() => { return $$var; };
$fn = fn() { return $$var; };
var_dump($fn());

${5} = 3;
$fn = fn() => ${5};
var_dump($fn());

${6} = 4;
$fn = fn() => { return ${6}; };
$fn = fn() { return ${6}; };
var_dump($fn());

?>
Expand Down
2 changes: 1 addition & 1 deletion Zend/tests/arrow_functions/004.phpt
Expand Up @@ -9,7 +9,7 @@ $fn = fn() => $GLOBALS['a'];
var_dump($fn());

$a = 456;
$fn = fn() => { return $GLOBALS['a']; };
$fn = fn() { return $GLOBALS['a']; };
var_dump($fn());

?>
Expand Down
14 changes: 7 additions & 7 deletions Zend/tests/arrow_functions/005.phpt
Expand Up @@ -10,46 +10,46 @@ class Test {
$r = new ReflectionFunction($fn);
var_dump($r->getClosureThis());

$fn = fn() => {};
$fn = fn() {};
$r = new ReflectionFunction($fn);
var_dump($r->getClosureThis());

$fn = fn() => $this;
var_dump($fn());

$fn = fn() => { return $this; };
$fn = fn() { return $this; };
var_dump($fn());

$fn = fn() => Test::method2();
$fn();

$fn = fn() => { return Test::method2(); };
$fn = fn() { return Test::method2(); };
$fn();

$fn = fn() => call_user_func('Test::method2');
$fn();

$fn = fn() => { return call_user_func('Test::method2'); };
$fn = fn() { return call_user_func('Test::method2'); };
$fn();

$thisName = "this";
$fn = fn() => $$thisName;
var_dump($fn());

$fn = fn() => { return $$thisName; };
$fn = fn() { return $$thisName; };
var_dump($fn());

$fn = fn() => self::class;
var_dump($fn());

$fn = fn() => { return self::class; };
$fn = fn() { return self::class; };
var_dump($fn());

// static can be used to unbind $this
$fn = static fn() => isset($this);
var_dump($fn());

$fn = static fn() => { return isset($this); };
$fn = static fn() { return isset($this); };
var_dump($fn());
}

Expand Down
6 changes: 3 additions & 3 deletions Zend/tests/arrow_functions/006.phpt
Expand Up @@ -10,7 +10,7 @@ $ref =& $id($var);
$ref++;
var_dump($var);

$id = fn&(&$x) => { return $x; };
$id = fn&(&$x) { return $x; };
$ref =& $id($var);
$ref++;
var_dump($var);
Expand All @@ -26,7 +26,7 @@ try {
}

$var = 11;
$int_fn = fn(int $x): int => { return $x; };
$int_fn = fn(int $x): int { return $x; };
var_dump($int_fn($var));
try {
$int_fn("foo");
Expand All @@ -42,7 +42,7 @@ try {
echo $e->getMessage(), "\n";
}

$varargs = fn(?int... $args): array => { return $args; };
$varargs = fn(?int... $args): array { return $args; };
var_dump($varargs(40, null, 50));
try {
$varargs(60, "foo");
Expand Down
4 changes: 2 additions & 2 deletions Zend/tests/arrow_functions/007.phpt
Expand Up @@ -8,10 +8,10 @@ assert.exception=0

// TODO We're missing parentheses for the direct call
assert((fn() => false)());
assert((fn() => { return false; })());
assert((fn() { return false; })());

assert((fn&(int... $args): ?bool => $args[0])(false));
assert((fn&(int... $args): ?bool => { return $args[0]; })(false));
assert((fn&(int... $args): ?bool { return $args[0]; })(false));

?>
--EXPECTF--
Expand Down
6 changes: 3 additions & 3 deletions Zend/tests/arrow_functions/008.phpt
Expand Up @@ -10,7 +10,7 @@ foreach ($fn() as $val) {
var_dump($val);
}

$fn = fn() => { return yield 2; };
$fn = fn() { return yield 2; };
foreach ($fn() as $val) {
var_dump($val);
}
Expand All @@ -20,7 +20,7 @@ foreach ($fn() as $val) {
var_dump($val);
}

$fn = fn() => { yield from [5, 6]; };
$fn = fn() { yield from [5, 6]; };
foreach ($fn() as $val) {
var_dump($val);
}
Expand All @@ -30,7 +30,7 @@ foreach ($fn()() as $val) {
var_dump($val);
}

$fn = fn() => fn() => { yield 8; };
$fn = fn() => fn() { yield 8; };
foreach ($fn()() as $val) {
var_dump($val);
}
Expand Down
8 changes: 4 additions & 4 deletions Zend/zend_language_parser.y
Expand Up @@ -1153,11 +1153,11 @@ inline_function:
((zend_ast_decl *) $$)->lex_pos = $10;
CG(extra_fn_flags) = $9; }
| fn returns_ref backup_doc_comment '(' parameter_list ')' return_type
T_DOUBLE_ARROW backup_fn_flags '{' inner_statement_list '}' backup_fn_flags
{ $$ = zend_ast_create_decl(ZEND_AST_ARROW_FUNC, $2 | $13, $1, $3,
backup_fn_flags '{' inner_statement_list '}' backup_fn_flags
{ $$ = zend_ast_create_decl(ZEND_AST_ARROW_FUNC, $2 | $12, $1, $3,
zend_string_init("{closure}", sizeof("{closure}") - 1, 0), $5, NULL,
$11, $7, NULL);
CG(extra_fn_flags) = $9; }
$10, $7, NULL);
CG(extra_fn_flags) = $8; }
;

fn:
Expand Down

0 comments on commit b82fe0c

Please sign in to comment.