Make sure we raise a warning in repo mode

Repo mode can skip undefined variable warnings,
if they're known to be uninit at compile time, and eliminate
expressions whose only side effect might be to raise a
diagnostic.
Esse commit está contido em:
Mark Williams
2013-04-22 07:43:07 -07:00
commit de Sara Golemon
commit a2e46efe38
8 arquivos alterados com 47 adições e 45 exclusões
+3 -3
Ver Arquivo
@@ -10,9 +10,9 @@ function error_handler() {
set_error_handler('error_handler');
function unary_function($x) {
// Cause an undefined variable warning, and throw from the user
// error handler.
$x = $z;
// Raise a warning and throw from
// the user error handler.
return UNDEFINED === $x;
}
function binary_function($x, $y) {}
+1 -1
Ver Arquivo
@@ -8,6 +8,6 @@ type Foo = MyClass;
function test(): void {
// error: making a new type name doesn't make it available outside
// of type expressions (parameter lists, etc).
$x = Foo::ASD;
return Foo::ASD;
}
test();
+3 -1
Ver Arquivo
@@ -1,11 +1,13 @@
<?php
function foo() {
$a = $b;
if (isset($GLOBALS['b'])) $b = 0;
return $b;
}
foo();
function baz($x) {}
function bar() {
if (isset($GLOBALS['a'])) $a = 0;
baz($a);
}
bar();
+2 -2
Ver Arquivo
@@ -1,2 +1,2 @@
HipHop Notice: Undefined variable: b in %s on line 3
HipHop Notice: Undefined variable: a in %s on line 9
HipHop Notice: Undefined variable: b in %s on line 4
HipHop Notice: Undefined variable: a in %s on line 11
+13 -12
Ver Arquivo
@@ -1,18 +1,19 @@
<?php
function foo() {
echo "set: " . isset($a) . "\n";
echo "nul: " . is_null($a) . "\n";
echo "str: " . is_string($a) . "\n";
echo "obj: " . is_object($a) . "\n";
echo "arr: " . is_array($a) . "\n";
echo "int: " . is_int($a) . "\n";
echo "integer: " . is_integer($a) . "\n";
echo "long: " . is_long($a) . "\n";
echo "real: " . is_real($a) . "\n";
echo "double: " . is_double($a) . "\n";
echo "float: " . is_float($a) . "\n";
echo "bool: " . is_bool($a) . "\n";
if (isset($GLOBALS['a'])) $a = 1;
echo "set: ", isset($a) . "\n";
echo "nul: ", is_null($a) . "\n";
echo "str: ", is_string($a) . "\n";
echo "obj: ", is_object($a) . "\n";
echo "arr: ", is_array($a) . "\n";
echo "int: ", is_int($a) . "\n";
echo "integer: ", is_integer($a) . "\n";
echo "long: ", is_long($a) . "\n";
echo "real: ", is_real($a) . "\n";
echo "double: ", is_double($a) . "\n";
echo "float: ", is_float($a) . "\n";
echo "bool: ", is_bool($a) . "\n";
}
foo();
+22 -22
Ver Arquivo
@@ -1,23 +1,23 @@
set:
HipHop Notice: Undefined variable: a in %s on line 5
nul: 1
HipHop Notice: Undefined variable: a in %s on line 6
str:
HipHop Notice: Undefined variable: a in %s on line 7
obj:
HipHop Notice: Undefined variable: a in %s on line 8
arr:
HipHop Notice: Undefined variable: a in %s on line 9
int:
HipHop Notice: Undefined variable: a in %s on line 10
integer:
HipHop Notice: Undefined variable: a in %s on line 11
long:
HipHop Notice: Undefined variable: a in %s on line 12
real:
HipHop Notice: Undefined variable: a in %s on line 13
double:
HipHop Notice: Undefined variable: a in %s on line 14
float:
HipHop Notice: Undefined variable: a in %s on line 15
bool:
nul: HipHop Notice: Undefined variable: a in %s on line 6
1
str: HipHop Notice: Undefined variable: a in %s on line 7
obj: HipHop Notice: Undefined variable: a in %s on line 8
arr: HipHop Notice: Undefined variable: a in %s on line 9
int: HipHop Notice: Undefined variable: a in %s on line 10
integer: HipHop Notice: Undefined variable: a in %s on line 11
long: HipHop Notice: Undefined variable: a in %s on line 12
real: HipHop Notice: Undefined variable: a in %s on line 13
double: HipHop Notice: Undefined variable: a in %s on line 14
float: HipHop Notice: Undefined variable: a in %s on line 15
bool: HipHop Notice: Undefined variable: a in %s on line 16
+2 -2
Ver Arquivo
@@ -3,9 +3,9 @@
function foo() {
$x = 'c';
$$x = "haha";
echo "value: " . $$x . "\n";
echo "value: ", $$x . "\n";
unset($$x);
echo "value: " . $$x . "\n";
echo "value: ", $$x . "\n";
}
foo();
+1 -2
Ver Arquivo
@@ -1,3 +1,2 @@
value: haha
HipHop Notice: Undefined variable: c in %s on line 8
value:
value: HipHop Notice: Undefined variable: c in %s on line 8