Skip to content

Commit 6a673e7

Browse files
committed
Swift: extract DiscardStmt
1 parent 5cd7421 commit 6a673e7

File tree

19 files changed

+212
-11
lines changed

19 files changed

+212
-11
lines changed

swift/extractor/infra/SwiftTagTraits.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,7 @@ MAP(swift::Stmt, StmtTag)
6161
MAP(swift::FailStmt, FailStmtTag)
6262
MAP(swift::ThrowStmt, ThrowStmtTag)
6363
MAP(swift::PoundAssertStmt, PoundAssertStmtTag)
64-
#if CODEQL_SWIFT_VERSION_GE(5, 9)
65-
MAP(swift::DiscardStmt, void) // TODO (introduced in 5.9)
66-
#endif
64+
MAP(swift::DiscardStmt, DiscardStmtTag)
6765

6866
MAP(swift::Argument, ArgumentTag)
6967
MAP(swift::KeyPathExpr::Component, KeyPathComponentTag)

swift/extractor/translators/StmtTranslator.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,4 +212,10 @@ codeql::PoundAssertStmt StmtTranslator::translatePoundAssertStmt(
212212
return entry;
213213
}
214214

215+
codeql::DiscardStmt StmtTranslator::translateDiscardStmt(const swift::DiscardStmt& stmt) {
216+
auto entry = dispatcher.createEntry(stmt);
217+
entry.sub_expr = dispatcher.fetchLabel(stmt.getSubExpr());
218+
return entry;
219+
}
220+
215221
} // namespace codeql

swift/extractor/translators/StmtTranslator.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ class StmtTranslator : public AstTranslatorBase<StmtTranslator> {
3939
codeql::YieldStmt translateYieldStmt(const swift::YieldStmt& stmt);
4040
codeql::FailStmt translateFailStmt(const swift::FailStmt& stmt);
4141
codeql::PoundAssertStmt translatePoundAssertStmt(const swift::PoundAssertStmt& stmt);
42+
codeql::DiscardStmt translateDiscardStmt(const swift::DiscardStmt& stmt);
4243

4344
private:
4445
void fillLabeledStmt(const swift::LabeledStmt& stmt, codeql::LabeledStmt& entry);

swift/ql/.generated.list

Lines changed: 9 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

swift/ql/.gitattributes

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,14 @@ module Stmts {
237237
}
238238
}
239239

240+
private class DiscardStmtTree extends AstStandardPostOrderTree {
241+
override DiscardStmt ast;
242+
243+
final override ControlFlowElement getChildElement(int i) {
244+
i = 0 and result.asAstNode() = ast.getSubExpr().getFullyUnresolved()
245+
}
246+
}
247+
240248
private class YieldStmtTree extends AstStandardPostOrderTree {
241249
override YieldStmt ast;
242250

swift/ql/lib/codeql/swift/elements.qll

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

swift/ql/lib/codeql/swift/elements/stmt/DiscardStmt.qll

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

swift/ql/lib/codeql/swift/elements/stmt/DiscardStmtConstructor.qll

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

swift/ql/lib/codeql/swift/generated/ParentChild.qll

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)