Skip to content

Commit cebaca3

Browse files
committed
Swift: 'ParsedSequence' lacks proper types and yields 'Unresolved' AST nodes
1 parent 28863f3 commit cebaca3

File tree

5 files changed

+36
-26
lines changed

5 files changed

+36
-26
lines changed

swift/extractor/translators/StmtTranslator.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ codeql::ForEachStmt StmtTranslator::translateForEachStmt(const swift::ForEachStm
7373
auto entry = dispatcher.createEntry(stmt);
7474
fillLabeledStmt(stmt, entry);
7575
entry.body = dispatcher.fetchLabel(stmt.getBody());
76-
entry.sequence = dispatcher.fetchLabel(stmt.getParsedSequence());
76+
entry.sequence = dispatcher.fetchLabel(stmt.getTypeCheckedSequence());
7777
entry.pattern = dispatcher.fetchLabel(stmt.getPattern());
7878
entry.where = dispatcher.fetchOptionalLabel(stmt.getWhere());
7979
return entry;

swift/ql/test/library-tests/ast/PrintAst.expected

Lines changed: 28 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -703,15 +703,18 @@ cfg.swift:
703703
# 155| Type = Int?
704704
# 138| getElement(0): [ForEachStmt] for ... in ... { ... }
705705
# 138| getPattern(): [AnyPattern] _
706-
# 138| getSequence(): [BinaryExpr] ... ....(_:_:) ...
707-
# 138| getFunction(): [MethodLookupExpr] ....(_:_:)
708-
# 138| getBase(): [TypeExpr] Int.Type
709-
# 138| getTypeRepr(): [TypeRepr] Int
710-
# 138| getMethodRef(): [DeclRefExpr] ...(_:_:)
711-
# 138| getArgument(0): [Argument] : 0
712-
# 138| getExpr(): [IntegerLiteralExpr] 0
713-
# 138| getArgument(1): [Argument] : 10
714-
# 138| getExpr(): [IntegerLiteralExpr] 10
706+
# 138| getSequence(): [CallExpr] call to makeIterator()
707+
# 138| getFunction(): [MethodLookupExpr] .makeIterator()
708+
# 138| getBase(): [BinaryExpr] ... ....(_:_:) ...
709+
# 138| getFunction(): [MethodLookupExpr] ....(_:_:)
710+
# 138| getBase(): [TypeExpr] Int.Type
711+
# 138| getTypeRepr(): [TypeRepr] Int
712+
# 138| getMethodRef(): [DeclRefExpr] ...(_:_:)
713+
# 138| getArgument(0): [Argument] : 0
714+
# 138| getExpr(): [IntegerLiteralExpr] 0
715+
# 138| getArgument(1): [Argument] : 10
716+
# 138| getExpr(): [IntegerLiteralExpr] 10
717+
#-----| getMethodRef(): [DeclRefExpr] makeIterator()
715718
# 138| getBody(): [BraceStmt] { ... }
716719
# 140| getElement(1): [SwitchStmt] switch x { ... }
717720
# 140| getExpr(): [DeclRefExpr] x
@@ -6493,15 +6496,18 @@ statements.swift:
64936496
# 9| Type = Int
64946497
# 2| getElement(0): [ForEachStmt] for ... in ... { ... }
64956498
# 2| getPattern(): [NamedPattern] i
6496-
# 2| getSequence(): [BinaryExpr] ... ....(_:_:) ...
6497-
# 2| getFunction(): [MethodLookupExpr] ....(_:_:)
6498-
# 2| getBase(): [TypeExpr] Int.Type
6499-
# 2| getTypeRepr(): [TypeRepr] Int
6500-
# 2| getMethodRef(): [DeclRefExpr] ...(_:_:)
6501-
# 2| getArgument(0): [Argument] : 1
6502-
# 2| getExpr(): [IntegerLiteralExpr] 1
6503-
# 2| getArgument(1): [Argument] : 5
6504-
# 2| getExpr(): [IntegerLiteralExpr] 5
6499+
# 2| getSequence(): [CallExpr] call to makeIterator()
6500+
# 2| getFunction(): [MethodLookupExpr] .makeIterator()
6501+
# 2| getBase(): [BinaryExpr] ... ....(_:_:) ...
6502+
# 2| getFunction(): [MethodLookupExpr] ....(_:_:)
6503+
# 2| getBase(): [TypeExpr] Int.Type
6504+
# 2| getTypeRepr(): [TypeRepr] Int
6505+
# 2| getMethodRef(): [DeclRefExpr] ...(_:_:)
6506+
# 2| getArgument(0): [Argument] : 1
6507+
# 2| getExpr(): [IntegerLiteralExpr] 1
6508+
# 2| getArgument(1): [Argument] : 5
6509+
# 2| getExpr(): [IntegerLiteralExpr] 5
6510+
#-----| getMethodRef(): [DeclRefExpr] makeIterator()
65056511
# 2| getBody(): [BraceStmt] { ... }
65066512
# 3| getElement(0): [IfStmt] if ... then { ... } else { ... }
65076513
# 3| getCondition(): [StmtCondition] StmtCondition
@@ -6914,7 +6920,10 @@ statements.swift:
69146920
# 71| getBody(): [BraceStmt] { ... }
69156921
# 71| getElement(0): [ForEachStmt] for ... in ... where ... { ... }
69166922
# 71| getPattern(): [NamedPattern] number
6917-
# 71| getSequence(): [DeclRefExpr] numbers
6923+
# 71| getSequence(): [CallExpr] call to makeIterator()
6924+
# 71| getFunction(): [MethodLookupExpr] .makeIterator()
6925+
# 71| getBase(): [DeclRefExpr] numbers
6926+
#-----| getMethodRef(): [DeclRefExpr] makeIterator()
69186927
# 71| getWhere(): [BinaryExpr] ... .==(_:_:) ...
69196928
# 71| getFunction(): [MethodLookupExpr] .==(_:_:)
69206929
# 71| getBase(): [TypeExpr] Int.Type

swift/ql/test/library-tests/controlflow/graph/Cfg.expected

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1422,7 +1422,7 @@ cfg.swift:
14221422
#-----| -> x
14231423

14241424
# 137| x
1425-
#-----| -> ....(_:_:)
1425+
#-----| -> .makeIterator()
14261426

14271427
# 138| for ... in ... { ... }
14281428
#-----| non-empty -> _
@@ -1435,6 +1435,12 @@ cfg.swift:
14351435
#-----| -> 10
14361436

14371437
# 138| ... ....(_:_:) ...
1438+
#-----| -> call to makeIterator()
1439+
1440+
# 138| .makeIterator()
1441+
#-----| -> ....(_:_:)
1442+
1443+
# 138| call to makeIterator()
14381444
#-----| -> for ... in ... { ... }
14391445

14401446
# 138| ....(_:_:)

swift/ql/test/library-tests/dataflow/flowsources/CONSISTENCY/CfgConsistency.expected

Lines changed: 0 additions & 3 deletions
This file was deleted.

swift/ql/test/library-tests/dataflow/taint/libraries/CONSISTENCY/CfgConsistency.expected

Lines changed: 0 additions & 2 deletions
This file was deleted.

0 commit comments

Comments
 (0)