Skip to content

Commit ca25b0f

Browse files
committed
always unflag before leaving a analyzer
1 parent b1a1c65 commit ca25b0f

16 files changed

+47
-0
lines changed

src/Psalm/Internal/Analyzer/Statements/Block/ForeachAnalyzer.php

+2
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,8 @@ public static function analyze(
223223
$was_inside_general_use = $context->inside_general_use;
224224
$context->inside_general_use = true;
225225
if (ExpressionAnalyzer::analyze($statements_analyzer, $stmt->expr, $context) === false) {
226+
$context->inside_general_use = $was_inside_general_use;
227+
226228
return false;
227229
}
228230
$context->inside_general_use = $was_inside_general_use;

src/Psalm/Internal/Analyzer/Statements/Expression/ArrayAnalyzer.php

+2
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,8 @@ private static function analyzeArrayItem(
311311
$was_inside_general_use = $context->inside_general_use;
312312
$context->inside_general_use = true;
313313
if (ExpressionAnalyzer::analyze($statements_analyzer, $item->key, $context) === false) {
314+
$context->inside_general_use = $was_inside_general_use;
315+
314316
return;
315317
}
316318
$context->inside_general_use = $was_inside_general_use;

src/Psalm/Internal/Analyzer/Statements/Expression/Assignment/ArrayAssignmentAnalyzer.php

+2
Original file line numberDiff line numberDiff line change
@@ -712,6 +712,8 @@ private static function analyzeNestedArrayAssignment(
712712
$child_stmt->dim,
713713
$context
714714
) === false) {
715+
$context->inside_general_use = $was_inside_general_use;
716+
715717
return;
716718
}
717719

src/Psalm/Internal/Analyzer/Statements/Expression/Assignment/StaticPropertyAssignmentAnalyzer.php

+2
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ public static function analyze(
8282
$context->inside_general_use = true;
8383

8484
if (ExpressionAnalyzer::analyze($statements_analyzer, $prop_name, $context) === false) {
85+
$context->inside_general_use = $was_inside_general_use;
86+
8587
return false;
8688
}
8789

src/Psalm/Internal/Analyzer/Statements/Expression/AssignmentAnalyzer.php

+8
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,8 @@ public static function analyze(
236236
}
237237

238238
if (ExpressionAnalyzer::analyze($statements_analyzer, $assign_value, $context) === false) {
239+
$context->inside_general_use = $was_inside_general_use;
240+
239241
if ($var_id) {
240242
if ($array_var_id) {
241243
$context->removeDescendents($array_var_id, null, $assign_value_type);
@@ -1501,10 +1503,14 @@ private static function analyzePropertyAssignment(
15011503
// this can happen when the user actually means to type $this-><autocompleted>, but there's
15021504
// a variable on the next line
15031505
if (ExpressionAnalyzer::analyze($statements_analyzer, $assign_var->var, $context) === false) {
1506+
$context->inside_general_use = $was_inside_general_use;
1507+
15041508
return;
15051509
}
15061510

15071511
if (ExpressionAnalyzer::analyze($statements_analyzer, $assign_var->name, $context) === false) {
1512+
$context->inside_general_use = $was_inside_general_use;
1513+
15081514
return;
15091515
}
15101516

@@ -1693,6 +1699,8 @@ private static function analyzeAssignmentToVariable(
16931699
$context->inside_general_use = true;
16941700

16951701
if (ExpressionAnalyzer::analyze($statements_analyzer, $assign_var->name, $context) === false) {
1702+
$context->inside_general_use = $was_inside_general_use;
1703+
16961704
return;
16971705
}
16981706

src/Psalm/Internal/Analyzer/Statements/Expression/Call/ArgumentsAnalyzer.php

+6
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,8 @@ public static function analyze(
211211
$context->inside_call = true;
212212

213213
if (ExpressionAnalyzer::analyze($statements_analyzer, $arg->value, $context) === false) {
214+
$context->inside_call = $was_inside_call;
215+
214216
return false;
215217
}
216218

@@ -1116,6 +1118,8 @@ private static function evaluateArbitraryParam(
11161118
$context->inside_call = true;
11171119

11181120
if (ExpressionAnalyzer::analyze($statements_analyzer, $arg->value, $context) === false) {
1121+
$context->inside_call = $was_inside_call;
1122+
11191123
return false;
11201124
}
11211125

@@ -1225,6 +1229,8 @@ private static function handleByRefFunctionArg(
12251229
$arg->value,
12261230
$context
12271231
) === false) {
1232+
$context->inside_assignment = $was_inside_assignment;
1233+
12281234
return false;
12291235
}
12301236

src/Psalm/Internal/Analyzer/Statements/Expression/Call/ArrayFunctionArgumentsAnalyzer.php

+2
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,8 @@ function ($arg) {
163163
$args[$i]->value,
164164
$context
165165
) === false) {
166+
$context->inside_assignment = $was_inside_assignment;
167+
166168
return false;
167169
}
168170

src/Psalm/Internal/Analyzer/Statements/Expression/Call/MethodCallAnalyzer.php

+4
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ public static function analyze(
6161
if ($existing_stmt_var_type) {
6262
$statements_analyzer->node_data->setType($stmt->var, $existing_stmt_var_type);
6363
} elseif (ExpressionAnalyzer::analyze($statements_analyzer, $stmt->var, $context) === false) {
64+
$context->inside_call = $was_inside_call;
65+
6466
return false;
6567
}
6668

@@ -70,6 +72,8 @@ public static function analyze(
7072
$context->inside_call = true;
7173

7274
if (ExpressionAnalyzer::analyze($statements_analyzer, $stmt->name, $context) === false) {
75+
$context->inside_call = $was_inside_call;
76+
7377
return false;
7478
}
7579
}

src/Psalm/Internal/Analyzer/Statements/Expression/CastAnalyzer.php

+4
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,8 @@ public static function analyze(
186186
$was_inside_general_use = $context->inside_general_use;
187187
$context->inside_general_use = true;
188188
if (ExpressionAnalyzer::analyze($statements_analyzer, $stmt->expr, $context) === false) {
189+
$context->inside_general_use = $was_inside_general_use;
190+
189191
return false;
190192
}
191193
$context->inside_general_use = $was_inside_general_use;
@@ -208,6 +210,8 @@ public static function analyze(
208210
$was_inside_general_use = $context->inside_general_use;
209211
$context->inside_general_use = true;
210212
if (ExpressionAnalyzer::analyze($statements_analyzer, $stmt->expr, $context) === false) {
213+
$context->inside_general_use = $was_inside_general_use;
214+
211215
return false;
212216
}
213217
$context->inside_general_use = $was_inside_general_use;

src/Psalm/Internal/Analyzer/Statements/Expression/Fetch/ArrayFetchAnalyzer.php

+3
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,9 @@ public static function analyze(
119119
$context->inside_unset = false;
120120

121121
if (ExpressionAnalyzer::analyze($statements_analyzer, $stmt->dim, $context) === false) {
122+
$context->inside_unset = $was_inside_unset;
123+
$context->inside_general_use = $was_inside_general_use;
124+
122125
return false;
123126
}
124127

src/Psalm/Internal/Analyzer/Statements/Expression/Fetch/ClassConstFetchAnalyzer.php

+2
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,8 @@ public static function analyze(
380380
$context->inside_general_use = true;
381381

382382
if (ExpressionAnalyzer::analyze($statements_analyzer, $stmt->class, $context) === false) {
383+
$context->inside_general_use = $was_inside_general_use;
384+
383385
return false;
384386
}
385387

src/Psalm/Internal/Analyzer/Statements/Expression/Fetch/InstancePropertyFetchAnalyzer.php

+2
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ public static function analyze(
5151
}
5252

5353
if (ExpressionAnalyzer::analyze($statements_analyzer, $stmt->var, $context) === false) {
54+
$context->inside_general_use = $was_inside_general_use;
55+
5456
return false;
5557
}
5658

src/Psalm/Internal/Analyzer/Statements/Expression/IncludeAnalyzer.php

+2
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ public static function analyze(
6767
$context->inside_call = true;
6868

6969
if (ExpressionAnalyzer::analyze($statements_analyzer, $stmt->expr, $context) === false) {
70+
$context->inside_call = $was_inside_call;
71+
7072
return false;
7173
}
7274

src/Psalm/Internal/Analyzer/Statements/Expression/InstanceofAnalyzer.php

+2
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ public static function analyze(
2525
$context->inside_general_use = true;
2626

2727
if (ExpressionAnalyzer::analyze($statements_analyzer, $stmt->expr, $context) === false) {
28+
$context->inside_general_use = $was_inside_general_use;
29+
2830
return false;
2931
}
3032

src/Psalm/Internal/Analyzer/Statements/Expression/YieldFromAnalyzer.php

+2
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ public static function analyze(
4747
$always_non_empty_array
4848
) === false
4949
) {
50+
$context->inside_call = $was_inside_call;
51+
5052
return false;
5153
}
5254

src/Psalm/Internal/Analyzer/Statements/ExpressionAnalyzer.php

+2
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,8 @@ private static function handleExpression(
453453
$was_inside_call = $context->inside_call;
454454
$context->inside_call = true;
455455
if (PrintAnalyzer::analyze($statements_analyzer, $stmt, $context) === false) {
456+
$context->inside_call = $was_inside_call;
457+
456458
return false;
457459
}
458460
$context->inside_call = $was_inside_call;

0 commit comments

Comments
 (0)