Basic flow analysis on if statements
[hiphop-php.git] / hphp / test / slow / using / basic.php
blob0e098e1bb9fb6ad78329690985febcb285d18afb
1 <?hh
3 function thrower() {
4 throw new Exception('hi');
7 function main() {
8 echo "Starting main\n";
9 using (new Logger()) {
10 echo "In first using\n";
13 echo "Empty using\n";
14 using (new Logger()) {
17 using ($l = new Logger()) {
18 echo "In second using\n";
19 var_dump($l);
21 var_dump(isset($l));
23 $l = new Logger();
24 using ($l) {
25 echo "In third using\n";
27 var_dump(isset($l));
29 $l = new Logger();
30 using ($l) {
31 echo "Replacing using variable\n";
32 $l = new Logger();
35 echo "Entering using with null variable\n";
36 $l = null;
37 using ($l) {
38 $l = new Logger();
41 using (new Logger(), new Logger(), new Logger()) {
42 echo "Triple using!\n";
43 echo "Triple using second line\n";
46 using (new Logger()) {
47 echo "Nested using\n";
48 using (new Logger()) {
49 echo "Inner using\n";
53 try {
54 echo "Trying throwing Logger\n";
55 using (new Logger(), new Logger(true), new Logger()) {
56 echo "Shouldn't get here\n";
58 } catch (Exception $e) {
59 printf("Caught exception %s\n", $e->getMessage());
62 try {
63 echo "Throwing inside using\n";
64 using (new Logger()) {
65 echo "About to throw";
66 thrower();
68 } catch (Exception $e) {
69 printf("Caught exception %s\n", $e->getMessage());
72 echo "Leaving main\n\n";
75 async function mainAsync() {
76 echo "\nStarting mainAsync\n";
77 await using (new Logger()) {
78 echo "Sync create, async dispose\n";
81 await using (await Logger::makeAsync()) {
82 echo "Async both\n";
85 using (await Logger::makeAsync()) {
86 echo "Async create, sync dispose\n";
89 using ($x = await Logger::makeAsync()) {
90 echo "Async create, sync dispose, variable\n";
91 var_dump($x);
93 var_dump(isset($x));
95 using (new Logger(), await Logger::makeAsync()) {
96 echo "Mixed create, sync dispose\n";
99 try {
100 using (await Logger::makeAsync(), await Logger::makeAsync(true)) {
101 echo "Shouldn't get here\n";
103 } catch (Exception $e) {
104 printf("Caught exception %s\n", $e->getMessage());
107 echo "Leaving mainAsync\n\n";
111 <<__EntryPoint>>
112 function main_basic() {
113 require 'logger.inc';
115 main();
116 HH\Asio\join(mainAsync());
118 echo "In pseudomain\n";
119 using (new Logger()) {
120 echo "Inside using\n";
122 echo "Outside using\n";