Skip to content

Commit c8af675

Browse files
committed
Python: Address review comments
Limits `inferredNonLoadExpressionContext`, and extends the new parser tests to also contain the legacy test cases.
1 parent a91c586 commit c8af675

2 files changed

Lines changed: 44 additions & 1 deletion

File tree

‎python/ql/lib/semmle/python/Exprs.qll‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ private predicate hasNonLoadExpressionContextSeed(Expr e, TContext context) {
6161
}
6262

6363
private predicate inferredNonLoadExpressionContext(Expr e, TContext context) {
64+
hasExpressionContext(e) and
6465
exists(Expr root |
6566
hasNonLoadExpressionContextSeed(root, context) and
6667
propagatesExpressionContext*(root, e)
Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,56 @@
1+
import package
2+
import package.module as imported_module
3+
from package import member
4+
from package import other as imported_member
5+
6+
17
type Alias[T, *Ts, **P] = tuple[T, *Ts]
28

39

10+
annotated: object = value
11+
plain = annotated
12+
first = second = plain
13+
(tuple_target, [list_target, *rest]) = values
14+
(walrus_target := plain)
15+
16+
for (loop_item, *loop_rest) in iterable:
17+
pass
18+
19+
items = [item for item in iterable]
20+
21+
with manager as (resource, *resources):
22+
pass
23+
24+
try:
25+
pass
26+
except Exception as error:
27+
pass
28+
429
match subject:
530
case [head, *tail] as whole:
631
pass
732
case {"key": captured, **rest_mapping}:
833
pass
934

10-
1135
try:
1236
pass
1337
except* RuntimeError as group_error:
1438
pass
39+
40+
del plain
41+
del object_value.attribute
42+
del sequence[index]
43+
del tuple_target, list_target
44+
45+
46+
def function(positional, default=value, *args, keyword_only, **kwargs):
47+
positional += 1
48+
object_value.attribute = positional
49+
sequence[index] = positional
50+
return positional, default, args, keyword_only, kwargs
51+
52+
53+
lambda_function = (
54+
lambda positional, default=value, *args, keyword_only, **kwargs:
55+
(positional, default, args, keyword_only, kwargs)
56+
)

0 commit comments

Comments
 (0)