Skip to content

Commit f96c52e

Browse files
committed
Python: make compile again
also improve comment
1 parent c395d2d commit f96c52e

File tree

3 files changed

+15
-16
lines changed

3 files changed

+15
-16
lines changed

python/ql/lib/semmle/python/dataflow/new/internal/DataFlowDispatch.qll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1531,7 +1531,7 @@ abstract class ParameterNodeImpl extends Node {
15311531
class LambdaSelfReferenceNode extends ParameterNodeImpl, TLambdaSelfReferenceNode {
15321532
private Function callable;
15331533

1534-
LambdaSelfReferenceNode() {
1534+
LambdaSelfReferenceNode() {
15351535
this = TLambdaSelfReferenceNode(callable) and
15361536
// TODO: Remove this restriction when adding proper support for captured variables in the body of the function we generate for comprehensions
15371537
exists(TFunction(callable))
@@ -1624,10 +1624,10 @@ private class SummaryPostUpdateNode extends FlowSummaryNode, PostUpdateNodeImpl
16241624
override Node getPreUpdateNode() { result = pre }
16251625
}
16261626

1627-
private class CapturePostUpdateNode extends PostUpdateNodeImpl, CaptureNode {
1628-
private CaptureNode pre;
1627+
private class SynthCapturePostUpdateNode extends PostUpdateNodeImpl, SynthCaptureNode {
1628+
private SynthCaptureNode pre;
16291629

1630-
CapturePostUpdateNode() {
1630+
SynthCapturePostUpdateNode() {
16311631
VariableCapture::Flow::capturePostUpdateNode(this.getSynthesizedCaptureNode(),
16321632
pre.getSynthesizedCaptureNode())
16331633
}

python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPrivate.qll

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -392,12 +392,13 @@ module VariableCapture {
392392
ExprCfgNode() { isExpressionNode(this) }
393393
}
394394

395-
private predicate closureFlowStep(ExprCfgNode fromNode, ExprCfgNode toNode) {
396-
// simpleAstFlowStep(e1, e2)
397-
// or
395+
private predicate closureFlowStep(ExprCfgNode nodeFrom, ExprCfgNode nodeTo) {
396+
// TODO: Other languages have an extra case here looking like
397+
// simpleAstFlowStep(nodeFrom, nodeTo)
398+
// we should investigate the potential benefit of adding that.
398399
exists(SsaVariable def |
399-
def.getAUse() = e2 and
400-
def.getAnUltimateDefinition().getDefinition().(DefinitionNode).getValue() = e1
400+
def.getAUse() = nodeTo and
401+
def.getAnUltimateDefinition().getDefinition().(DefinitionNode).getValue() = nodeFrom
401402
)
402403
}
403404

@@ -492,7 +493,7 @@ module VariableCapture {
492493
module Flow = Shared::Flow<Location, CaptureInput>;
493494

494495
private Flow::ClosureNode asClosureNode(Node n) {
495-
result = n.(CaptureNode).getSynthesizedCaptureNode()
496+
result = n.(SynthCaptureNode).getSynthesizedCaptureNode()
496497
or
497498
result.(Flow::ExprNode).getExpr() = n.(CfgNode).getNode()
498499
or
@@ -665,7 +666,7 @@ predicate simpleLocalFlowStep(Node nodeFrom, Node nodeTo) {
665666
or
666667
summaryFlowSteps(nodeFrom, nodeTo)
667668
or
668-
variableCaptureFlowStep(nodeFrom, nodeTo)
669+
variableCaptureLocalFlowStep(nodeFrom, nodeTo)
669670
}
670671

671672
/**

python/ql/lib/semmle/python/dataflow/new/internal/DataFlowPublic.qll

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -481,17 +481,15 @@ class StarPatternElementNode extends Node, TStarPatternElementNode {
481481
* A synthesized data flow node representing a closure object that tracks
482482
* captured variables.
483483
*/
484-
class CaptureNode extends Node, TCaptureNode {
484+
class SynthCaptureNode extends Node, TSynthCaptureNode {
485485
private VariableCapture::Flow::SynthesizedCaptureNode cn;
486486

487-
CaptureNode() { this = TCaptureNode(cn) }
487+
SynthCaptureNode() { this = TSynthCaptureNode(cn) }
488488

489489
/** Gets the `SynthesizedCaptureNode` that this node represents. */
490490
VariableCapture::Flow::SynthesizedCaptureNode getSynthesizedCaptureNode() { result = cn }
491491

492-
override Scope getScope() {
493-
result = cn.getEnclosingCallable()
494-
}
492+
override Scope getScope() { result = cn.getEnclosingCallable() }
495493

496494
override Location getLocation() { result = cn.getLocation() }
497495

0 commit comments

Comments
 (0)