diff options
| author | Nikita Popov <nikic@php.net> | 2012-07-17 13:24:27 +0200 |
|---|---|---|
| committer | Nikita Popov <nikic@php.net> | 2012-07-17 13:29:56 +0200 |
| commit | 85f077cea13b3cb4927453b8a2f8ce51a9461bbb (patch) | |
| tree | c8d3528b92bf5d136161d05e20c9952ad6b6a582 /Zend/tests/generators/errors | |
| parent | 5a9bddba6699d056383107728392048cd7ccb598 (diff) | |
| download | php-git-85f077cea13b3cb4927453b8a2f8ce51a9461bbb.tar.gz | |
Add support by yielding by-reference
Diffstat (limited to 'Zend/tests/generators/errors')
3 files changed, 49 insertions, 0 deletions
diff --git a/Zend/tests/generators/errors/non_ref_generator_iterated_by_ref_error.phpt b/Zend/tests/generators/errors/non_ref_generator_iterated_by_ref_error.phpt new file mode 100644 index 0000000000..5d1a9e3484 --- /dev/null +++ b/Zend/tests/generators/errors/non_ref_generator_iterated_by_ref_error.phpt @@ -0,0 +1,13 @@ +--TEST-- +Non-ref generators cannot be iterated by-ref +--FILE-- +<?php + +function *gen() { } + +$gen = gen(); +foreach ($gen as &$value) { } + +?> +--EXPECTF-- +Fatal error: You can only iterate a generator by-reference if it declared that it yields by-reference in %s on line %d diff --git a/Zend/tests/generators/errors/yield_const_by_ref_error.phpt b/Zend/tests/generators/errors/yield_const_by_ref_error.phpt new file mode 100644 index 0000000000..37ce1450db --- /dev/null +++ b/Zend/tests/generators/errors/yield_const_by_ref_error.phpt @@ -0,0 +1,16 @@ +--TEST-- +A notice is thrown when yielding a constant value by reference +--FILE-- +<?php + +function *&gen() { + yield "foo"; +} + +$gen = gen(); +var_dump($gen->current()); + +?> +--EXPECTF-- +Notice: Only variable references should be yielded by reference in %s on line %d +string(3) "foo" diff --git a/Zend/tests/generators/errors/yield_non_ref_function_call_by_ref_error.phpt b/Zend/tests/generators/errors/yield_non_ref_function_call_by_ref_error.phpt new file mode 100644 index 0000000000..2487149eef --- /dev/null +++ b/Zend/tests/generators/errors/yield_non_ref_function_call_by_ref_error.phpt @@ -0,0 +1,20 @@ +--TEST-- +Yielding the result of a non-ref function call throw a notice +--FILE-- +<?php + +function foo() { + return "bar"; +} + +function *&gen() { + yield foo(); +} + +$gen = gen(); +var_dump($gen->current()); + +?> +--EXPECTF-- +Notice: Only variable references should be yielded by reference in %s on line %d +string(3) "bar" |
