Skip to content

Commit 3213549

Browse files
authored
Merge pull request github#9329 from MathiasVP/fixes-for-9291
Swift: Fixups for github#9291
2 parents ae1f5bb + c7cc8d2 commit 3213549

File tree

2 files changed

+9
-16
lines changed

2 files changed

+9
-16
lines changed

swift/ql/lib/codeql/swift/controlflow/internal/ControlFlowElements.qll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ private predicate hasDirectToImplementationOrOrdinarySemantics(Expr e) {
5757
hasDirectToImplementationSemantics(e) or hasOrdinarySemantics(e)
5858
}
5959

60-
predicate isPropertySetterElement(AccessorDecl accessor, AssignExpr assign) {
60+
private predicate isPropertySetterElement(AccessorDecl accessor, AssignExpr assign) {
6161
exists(Expr lhs | lhs = assign.getDest() |
6262
hasDirectToImplementationOrOrdinarySemantics(lhs) and
6363
accessor.isSetter() and
@@ -72,7 +72,7 @@ predicate isPropertySetterElement(
7272
pse = TPropertySetterElement(accessor, assign)
7373
}
7474

75-
predicate isPropertyObserverElement(AccessorDecl observer, AssignExpr assign) {
75+
private predicate isPropertyObserverElement(AccessorDecl observer, AssignExpr assign) {
7676
exists(Expr lhs | lhs = assign.getDest() |
7777
hasDirectToImplementationOrOrdinarySemantics(lhs) and
7878
observer.isPropertyObserver() and

swift/ql/lib/codeql/swift/controlflow/internal/ControlFlowGraphImpl.qll

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -309,10 +309,7 @@ module Stmts {
309309
class LoopStmt = @for_each_stmt or ConditionalLoop;
310310

311311
abstract class LoopTree extends AstPreOrderTree {
312-
LoopTree() {
313-
ast instanceof WhileStmt or
314-
ast instanceof RepeatWhileStmt
315-
}
312+
LoopTree() { ast instanceof ConditionalLoop }
316313

317314
abstract ControlFlowElement getCondition();
318315

@@ -911,9 +908,9 @@ module Exprs {
911908
child.asAstNode() = ast.getSource().getFullyConverted()
912909
}
913910

914-
predicate hasWillSetObserver() { isPropertyObserverElement(any(WillSetObserver obs), ast) }
911+
predicate hasWillSetObserver() { isPropertyObserverElement(_, any(WillSetObserver obs), ast) }
915912

916-
predicate hasDidSetObserver() { isPropertyObserverElement(any(WillSetObserver obs), ast) }
913+
predicate hasDidSetObserver() { isPropertyObserverElement(_, any(DidSetObserver obs), ast) }
917914

918915
final override predicate last(ControlFlowElement last, Completion c) {
919916
isPropertyObserverElement(last, any(DidSetObserver obs), ast) and
@@ -952,7 +949,7 @@ module Exprs {
952949
class PropertyAssignExpr extends AssignExprTree {
953950
AccessorDecl accessorDecl;
954951

955-
PropertyAssignExpr() { isPropertySetterElement(accessorDecl, ast) }
952+
PropertyAssignExpr() { isPropertySetterElement(_, accessorDecl, ast) }
956953

957954
final override predicate isLast(ControlFlowElement last, Completion c) {
958955
isPropertySetterElement(last, accessorDecl, ast) and
@@ -1227,7 +1224,7 @@ module Exprs {
12271224
private class PropertyDeclRefRValueTree extends DeclRefExprRValueTree {
12281225
AccessorDecl accessor;
12291226

1230-
PropertyDeclRefRValueTree() { isPropertyGetterElement(accessor, ast) }
1227+
PropertyDeclRefRValueTree() { isPropertyGetterElement(_, accessor, ast) }
12311228

12321229
final override predicate first(ControlFlowElement first) {
12331230
isPropertyGetterElement(first, accessor, ast)
@@ -1326,7 +1323,7 @@ module Exprs {
13261323
private class PropertyMemberRefRValue extends MemberRefRValueTree {
13271324
AccessorDecl accessor;
13281325

1329-
PropertyMemberRefRValue() { isPropertyGetterElement(accessor, ast) }
1326+
PropertyMemberRefRValue() { isPropertyGetterElement(_, accessor, ast) }
13301327

13311328
final override predicate last(ControlFlowElement last, Completion c) {
13321329
isPropertyGetterElement(last, accessor, ast) and
@@ -1516,11 +1513,7 @@ module Exprs {
15161513
class ConversionOrIdentity = @identity_expr or @explicit_cast_expr or @implicit_conversion_expr;
15171514

15181515
abstract class ConversionOrIdentityTree extends AstStandardPostOrderTree {
1519-
ConversionOrIdentityTree() {
1520-
ast instanceof IdentityExpr or
1521-
ast instanceof ExplicitCastExpr or
1522-
ast instanceof ImplicitConversionExpr
1523-
}
1516+
ConversionOrIdentityTree() { ast instanceof ConversionOrIdentity }
15241517

15251518
abstract predicate convertsFrom(Expr e);
15261519

0 commit comments

Comments
 (0)