Python: Fix module level flow for iterable unpacking

(and for * patterns in match)

Since `PhaseDependentFlow` uses the following predicate, that relies on
.getScope() to be present for there to be any importTimeFlow (flow at
toplevel scope), it's important that data-flow nodes implement `.getScope`.

```
private predicate isTopLevel(Node node) { node.getScope() instanceof Module }
```

By implementing getScope, we can now rely on default implementation of
`getEnclosingCallable` in DataFlow::Node:

```
  /** Gets the enclosing callable of this node. */
  DataFlowCallable getEnclosingCallable() { result = getCallableScope(this.getScope()) }
```
This commit is contained in:
Rasmus Wriedt Larsen
2024-02-28 16:39:08 +01:00
parent e4699e092d
commit cdf4dd16f0
2 changed files with 4 additions and 4 deletions

View File

@@ -3,5 +3,5 @@
t = (SOURCE, NONSOURCE)
a, b = t
SINK(a) #$ MISSING: flow="SOURCE, l:-2 -> a"
SINK(a) #$ flow="SOURCE, l:-2 -> a"
SINK_F(b)