File tree Expand file tree Collapse file tree 4 files changed +70
-62
lines changed
lib/codeql/swift/controlflow
test/library-tests/controlflow/graph Expand file tree Collapse file tree 4 files changed +70
-62
lines changed Original file line number Diff line number Diff line change @@ -6,6 +6,8 @@ private import internal.ControlFlowGraphImpl
6
6
private import internal.ControlFlowElements
7
7
private import CfgNodes
8
8
private import SuccessorTypes
9
+ private import codeql.swift.generated.Db
10
+ private import codeql.swift.generated.IpaTypes
9
11
10
12
/**
11
13
* A basic block, that is, a maximal straight-line sequence of control flow nodes
@@ -195,9 +197,12 @@ class ExitBasicBlock extends BasicBlock {
195
197
}
196
198
197
199
private module JoinBlockPredecessors {
198
- private predicate id ( AstNode x , AstNode y ) { x = y }
200
+ private predicate id ( Db :: AstNode x , Db :: AstNode y ) { x = y }
199
201
200
- private predicate idOf ( AstNode x , int y ) = equivalenceRelation( id / 2 ) ( x , y )
202
+ private predicate idOfDbAstNode ( Db:: AstNode x , int y ) = equivalenceRelation( id / 2 ) ( x , y )
203
+
204
+ // TODO does not work if we use "ipa on" entities...
205
+ private predicate idOf ( AstNode x , int y ) { idOfDbAstNode ( Ipa:: convertAstNodeToDb ( x ) , y ) }
201
206
202
207
private AstNode projctToAst ( ControlFlowElement n ) {
203
208
result = n .asAstNode ( )
Original file line number Diff line number Diff line change 33
33
34
34
private import swift
35
35
private import codeql.swift.controlflow.ControlFlowGraph
36
+ private import codeql.swift.generated.IpaTypes
36
37
private import Completion
37
38
private import Scope
38
39
import ControlFlowGraphImplShared
@@ -369,9 +370,9 @@ module Stmts {
369
370
* Control-flow for loops.
370
371
*/
371
372
module Loops {
372
- class ConditionalLoop = @while_stmt or @repeat_while_stmt ;
373
+ class ConditionalLoop = Ipa :: TWhileStmt or Ipa :: TRepeatWhileStmt ;
373
374
374
- class LoopStmt = @for_each_stmt or ConditionalLoop ;
375
+ class LoopStmt = Ipa :: TForEachStmt or ConditionalLoop ;
375
376
376
377
abstract class LoopTree extends AstPreOrderTree {
377
378
LoopTree ( ) { ast instanceof ConditionalLoop }
@@ -1668,7 +1669,8 @@ module Exprs {
1668
1669
}
1669
1670
1670
1671
module Conversions {
1671
- class ConversionOrIdentity = @identity_expr or @explicit_cast_expr or @implicit_conversion_expr;
1672
+ class ConversionOrIdentity =
1673
+ Ipa:: TIdentityExpr or Ipa:: TExplicitCastExpr or Ipa:: TImplicitConversionExpr ;
1672
1674
1673
1675
abstract class ConversionOrIdentityTree extends AstStandardPostOrderTree {
1674
1676
ConversionOrIdentityTree ( ) { ast instanceof ConversionOrIdentity }
Original file line number Diff line number Diff line change 1
1
private import swift
2
2
private import codeql.swift.generated.GetImmediateParent
3
+ private import codeql.swift.generated.IpaTypes
3
4
4
5
module CallableBase {
5
- class TypeRange = @abstract_function_decl or @key_path_expr or @closure_expr ;
6
+ class TypeRange = Ipa :: TAbstractFunctionDecl or Ipa :: TKeyPathExpr or Ipa :: TClosureExpr ;
6
7
7
8
class Range extends Scope:: Range , TypeRange { }
8
9
}
You can’t perform that action at this time.
0 commit comments