Files
Nikita Popov 3261ea2f3b Merge branch 'PHP-5.6'
Conflicts:
	tests/arrays/arrays.php
	tests/arrays/arrays.php.expectf
	tests/basic_concepts/memory_model_and_array_types.php
	tests/basic_concepts/memory_model_and_array_types.php.expect
	tests/basic_concepts/memory_model_and_handle_types.php
	tests/basic_concepts/memory_model_and_resources.php.expect
	tests/basic_concepts/storage_duration.php
	tests/classes/__gets_return_type.php.expect
	tests/classes/__php_incomplete_class.php
	tests/classes/__php_incomplete_class.php.expect
	tests/classes/classes.php.expect
	tests/classes/cloning.php.expectf
	tests/classes/constructors.php.expect
	tests/classes/dynamic_methods.php.expectf
	tests/classes/dynamic_properties.php
	tests/classes/dynamic_properties.php.expect
	tests/classes/dynamic_properties2.php.expectf
	tests/classes/dynamic_properties3.php
	tests/classes/dynamic_properties3.php.expectf
	tests/classes/invoke.php.expect
	tests/classes/invoking.php.expect
	tests/classes/overloading.php
	tests/classes/overloading.php.expect
	tests/classes/overloading_2.php.expectf
	tests/classes/overloading_methods.php.expectf
	tests/classes/overloading_properties.php
	tests/classes/overloading_properties.php.expect
	tests/classes/overloading_properties2.php.expectf
	tests/classes/point2_test1.php.expect
	tests/classes/property_initializer.php
	tests/classes/property_initializer.php.expect
	tests/classes/serializable.php
	tests/classes/serializable.php.expect
	tests/classes/setting_state.php
	tests/classes/sleep_and_wakeup.php
	tests/classes/vehicle_test1.php.expect
	tests/constants/classes.php
	tests/constants/classes.php.expect
	tests/constants/constants.php
	tests/constants/constants.php.expectf
	tests/exception_handling/exception_class_experiment_1.php
	tests/exception_handling/hierarchy_of_exception_classes.php.expect
	tests/exception_handling/jump_from_catch_or_finally_clause.php
	tests/exception_handling/jump_from_catch_or_finally_clause.php.expect
	tests/exception_handling/odds_and_ends.php.expect
	tests/expressions/additive_operators/addition_subtraction_concatenation.php.expect
	tests/expressions/additive_operators/array_concatenation.php
	tests/expressions/additive_operators/array_concatenation.php.expectf
	tests/expressions/assignment_operators/assignment.php.expect
	tests/expressions/binary_logical_operators/binary_logical_operators.php.expect
	tests/expressions/bitwise_and,_or,_xor_operators/bitwise_and_or_xor.php.expect
	tests/expressions/bitwise_shift_operators/bitwise_shift.php
	tests/expressions/bitwise_shift_operators/bitwise_shift.php.expect
	tests/expressions/equality_operators/comparisons.php.expectf
	tests/expressions/error_control_operator/error_control.php.expectf
	tests/expressions/general/associativity.php.expect
	tests/expressions/general/order_of_evaluation.php.expect
	tests/expressions/general/precedence.php.expect
	tests/expressions/general/sequence_points.php.expect
	tests/expressions/instanceof_operator/instanceof.php
	tests/expressions/instanceof_operator/instanceof.php.expect
	tests/expressions/multiplicative_operators/multiplication_division_modulus.php.expectf
	tests/expressions/postfix_operators/exponentiation.php.expect
	tests/expressions/postfix_operators/member_selection_operator.php
	tests/expressions/postfix_operators/post-increment_and_decrement_integer_edge_cases.php.expect
	tests/expressions/postfix_operators/scope_resolution_operator.php.expect
	tests/expressions/postfix_operators/subscripting.php
	tests/expressions/primary_expressions/intrinsics_echo.php.expect
	tests/expressions/primary_expressions/intrinsics_eval.php.expect
	tests/expressions/primary_expressions/intrinsics_exit.php.expect
	tests/expressions/primary_expressions/intrinsics_print.php.expect
	tests/expressions/primary_expressions/primary.php.expect
	tests/expressions/relational_operators/comparisons1.php.expectf
	tests/expressions/relational_operators/comparisons2.php.expectf
	tests/expressions/relational_operators/comparisons3.php.expectf
	tests/expressions/relational_operators/comparisons4.php.expectf
	tests/expressions/relational_operators/comparisons5.php.expectf
	tests/expressions/source_file_inclusion/include.php
	tests/expressions/source_file_inclusion/require.php
	tests/expressions/unary_operators/cast.php
	tests/expressions/unary_operators/cast.php.expectf
	tests/expressions/unary_operators/pre-increment_and_decrement_integer_edge_cases.php.expect
	tests/expressions/unary_operators/unary_arithmetic_operators.php.expect
	tests/functions/anonymous_functions.php
	tests/functions/basics.php
	tests/functions/byrefs.php.expectf
	tests/functions/byrefs_in_array_elements.php.expect
	tests/functions/conditionally_defined_function.php
	tests/functions/conditionally_defined_function.php.expect
	tests/functions/order_of_evaluation.php
	tests/functions/order_of_evaluation.php.expectf
	tests/functions/passing_arguments.php
	tests/functions/recursion.php.expect
	tests/functions/type_hints.php.expect
	tests/functions/variable_functions.php.expect
	tests/interfaces/interfaces.php.expect
	tests/interfaces/vector.php.expect
	tests/lexical_structure/comments.php.expect
	tests/lexical_structure/keywords.php.expect
	tests/lexical_structure/tokens/array_literals.php
	tests/lexical_structure/tokens/array_literals.php.expect
	tests/lexical_structure/tokens/integer_literals_edge_cases.php.expect
	tests/lexical_structure/tokens/point.php
	tests/lexical_structure/tokens/point2.php
	tests/namespaces/name_lookup.php.expect
	tests/namespaces/namespaces1.php
	tests/namespaces/namespaces1.php.expect
	tests/namespaces/namespaces2.php.expect
	tests/namespaces/using_namespaces_2.php
	tests/namespaces/using_namespaces_3.php.expect
	tests/phpt/expressions/source_file_inclusion/limits.inc
	tests/phpt/expressions/source_file_inclusion/mycolors.inc
	tests/scope/scope.php.expect
	tests/statements/expression_statement.php.expect
	tests/statements/iteration/do.php.expect
	tests/statements/iteration/for.php.expect
	tests/statements/jump/break.php.expect
	tests/statements/jump/continue.php.expect
	tests/statements/jump/goto.php.expect
	tests/statements/selection/if.php.expectf
	tests/statements/selection/switch.php
	tests/statements/selection/switch.php.expect
	tests/traits/traits.php
	tests/types/resource/resources.php.expect
	tests/variables/unsetting_variables.php.expectf
	tests/variables/variable_kinds.php
	tests/variables/variable_kinds.php.expect
	tests/variables/variable_variables.php
	tests/variables/variable_variables.php.expectf
2015-01-07 22:49:46 +01:00

228 lines
3.2 KiB
PHP

--TEST--
PHP Spec test generated from ./statements/selection/switch.php
--FILE--
<?php
/*
+-------------------------------------------------------------+
| Copyright (c) 2014 Facebook, Inc. (http://www.facebook.com) |
+-------------------------------------------------------------+
*/
error_reporting(-1);
$v = 10;
/*
// unlike C/C++, can't omit all labels and braces
switch ($v)
echo "Here I am.\n";
switch ($v):
echo "Here I am.\n";
endswitch;
switch ($v)
default: echo $v;
*/
///*
// Can I have an empty body?
switch ($v) // yes
{
}
switch ($v): // yes
endswitch;
//*/
///*
// presumably, body can be one or more empty statements
switch ($v)
{
; // 1 is okay, but no more!
//;
//;
}
//*/
/*
switch ($v): // No, can't have {} with alternate form
{
}
endswitch;
*/
///*
switch ($v)
{
default: echo "default case: \$v is $v\n";
}
switch ($v)
{
default:
echo "default case: \$v is $v\n";
break; // break ends "group" of default statements
case 20:
echo "case 20\n";
break; // break ends "group" of case 20 statements
case 10:
echo "case 10\n"; // no break, so control drops into next label's "group"
case 30:
echo "case 30\n"; // no break, but then none is really needed either
}
switch ($v):
default:
echo "default case\n";
break;
case 20:
echo "case 20\n";
break;
case 10:
echo "case 10\n";
case 30:
echo "case 30\n";
endswitch;
//*/
///*
// Check duplicate case values: allowed; choses lexically first one
$v = 30;
switch ($v)
{
case 30:
echo "case 30-2\n";
break;
default:
echo "default case: \$v is $v\n";
break;
case 30:
echo "case 30-1\n";
break;
}
// chooses first match with equal value, 30 matches 30.0 before 30
$v = 30;
switch ($v)
{
case 30.0: // <===== this case matches with 30
echo "case 30.0\n";
break;
default:
echo "default case: \$v is $v\n";
break;
case 30: // <===== rather than this case matching with 30
echo "case 30\n";
break;
}
//*/
///*
// ; is allowed in place of : at end of case/default label; can mix-n-match
$v = 10;
switch ($v)
{
case 10; // <================ ;
echo "case 10\n";
break;
case 20: // <================ :
echo "case 20\n";
break;
default; // <================ ;
echo "default case: \$v is $v\n";
break;
}
$v = 10;
switch ($v):
case 10; // <================ ;
echo "case 10\n";
break;
case 20: // <================ :
echo "case 20\n";
break;
default; // <================ ;
echo "default case: \$v is $v\n";
break;
endswitch;
//*/
///*
// use strings for label values
$v = "white";
switch ($v)
{
case "White":
echo "case White\n";
break;
case "Red":
echo "case Red\n";
break;
default:
echo "default case: \$v is $v\n";
break;
}
// use Booleans for label values
$v = TRUE;
switch ($v)
{
case FALSE:
echo "case FALSE\n";
break;
case TRUE:
echo "case TRUE\n";
break;
default:
echo "default case: \$v is $v\n";
break;
}
//*/
// use Booleans for label values
///*
$v = 22;
$a = 1;
$b = 12;
switch ($v)
{
case 10 + $b:
echo "case 10 + $b\n";
break;
case $v < $a:
echo "case $v < $a\n";
break;
default:
echo "default case: \$v is $v\n";
break;
}
//*/
--EXPECT--
default case: $v is 10
case 10
case 30
case 10
case 30
case 30-2
case 30.0
case 10
case 10
default case: $v is white
case TRUE
case 10 + 12