summaryrefslogtreecommitdiff
path: root/Zend/tests/generators/errors
diff options
context:
space:
mode:
authorNikita Popov <nikic@php.net>2012-07-17 13:24:27 +0200
committerNikita Popov <nikic@php.net>2012-07-17 13:29:56 +0200
commit85f077cea13b3cb4927453b8a2f8ce51a9461bbb (patch)
treec8d3528b92bf5d136161d05e20c9952ad6b6a582 /Zend/tests/generators/errors
parent5a9bddba6699d056383107728392048cd7ccb598 (diff)
downloadphp-git-85f077cea13b3cb4927453b8a2f8ce51a9461bbb.tar.gz
Add support by yielding by-reference
Diffstat (limited to 'Zend/tests/generators/errors')
-rw-r--r--Zend/tests/generators/errors/non_ref_generator_iterated_by_ref_error.phpt13
-rw-r--r--Zend/tests/generators/errors/yield_const_by_ref_error.phpt16
-rw-r--r--Zend/tests/generators/errors/yield_non_ref_function_call_by_ref_error.phpt20
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"