]> granicus.if.org Git - php/commitdiff
Test some additional cases for constexpr evaluation
authorNikita Popov <nikic@php.net>
Mon, 22 Sep 2014 22:31:38 +0000 (00:31 +0200)
committerNikita Popov <nikic@php.net>
Mon, 22 Sep 2014 22:31:38 +0000 (00:31 +0200)
Zend/tests/constant_expressions_dynamic.phpt
Zend/tests/constant_expressions_invalid_offset_type_error.phpt [new file with mode: 0644]

index 21c9216cc1927a9cee08279f43996f51661f68cb..d4e06ee258bcf38373e4f860e500ff6aa1ab6784 100644 (file)
@@ -2,10 +2,76 @@
 Dynamic Constant Expressions
 --FILE--
 <?php
-const FOO = 1;
-const BAR = FOO | 2;
 
-echo BAR;
+const C_0 = 0;
+const C_1 = 1;
+const C_foo = "foo";
+const C_arr = [0 => 0, "foo" => "foo"];
+
+const T_1 = C_1 | 2;
+const T_2 = C_1 . "foo";
+const T_3 = C_1 > 1;
+const T_4 = C_1 >= 1;
+const T_5 = -C_1;
+const T_6 = +C_1;
+const T_7 = +C_foo;
+const T_8 = !C_1;
+const T_9 = C_0 || 0;
+const T_10 = C_1 || 0;
+const T_11 = C_0 && 1;
+const T_12 = C_1 && 1;
+const T_13 = C_0 ? "foo" : "bar";
+const T_14 = C_1 ? "foo" : "bar";
+const T_15 = C_0 ?: "bar";
+const T_16 = C_1 ?: "bar";
+const T_17 = C_arr[0];
+const T_18 = C_arr["foo"];
+const T_19 = [
+    C_0,
+    "foo" => "foo",
+    42 => 42,
+    3.14 => 3.14,
+    null => null,
+    false => false,
+    true => true,
+];
+
+var_dump(
+    T_1, T_2, T_3, T_4, T_5, T_6, T_7, T_8, T_9, T_10,
+    T_11, T_12, T_13, T_14, T_15, T_16, T_17, T_18, T_19
+);
+
 ?>
---EXPECTF--
-3
+--EXPECT--
+int(3)
+string(4) "1foo"
+bool(false)
+bool(true)
+int(-1)
+int(1)
+int(0)
+bool(false)
+bool(false)
+bool(true)
+bool(false)
+bool(true)
+string(3) "bar"
+string(3) "foo"
+string(3) "bar"
+int(1)
+int(0)
+string(3) "foo"
+array(6) {
+  [0]=>
+  bool(false)
+  ["foo"]=>
+  string(3) "foo"
+  [42]=>
+  int(42)
+  [3]=>
+  float(3.14)
+  [""]=>
+  NULL
+  [1]=>
+  bool(true)
+}
diff --git a/Zend/tests/constant_expressions_invalid_offset_type_error.phpt b/Zend/tests/constant_expressions_invalid_offset_type_error.phpt
new file mode 100644 (file)
index 0000000..440eabc
--- /dev/null
@@ -0,0 +1,11 @@
+--TEST--
+Can't use arrays as key for constant array
+--FILE--
+<?php
+
+const C1 = 1; // force dynamic evaluation
+const C2 = [C1, [] => 1];
+
+?>
+--EXPECTF--
+Fatal error: Illegal offset type in %s on line %d