Skip to content

Commit 5cd7421

Browse files
committed
Swift: extract MaterizliePackExpr
1 parent cca05e0 commit 5cd7421

25 files changed

+232
-14
lines changed

swift/extractor/infra/SwiftTagTraits.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ MAP(swift::Expr, ExprTag)
199199
MAP(swift::MacroExpansionExpr, void) // unexpanded macro in an expr context, skipping
200200
MAP(swift::CopyExpr, CopyExprTag)
201201
MAP(swift::ConsumeExpr, ConsumeExprTag)
202-
MAP(swift::MaterializePackExpr, void) // TODO (introduced in 5.9)
202+
MAP(swift::MaterializePackExpr, MaterializePackExprTag)
203203
MAP(swift::SingleValueStmtExpr, SingleValueStmtExprTag)
204204

205205
MAP(swift::Decl, DeclTag)

swift/extractor/translators/ExprTranslator.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -669,4 +669,11 @@ codeql::ConsumeExpr ExprTranslator::translateConsumeExpr(const swift::ConsumeExp
669669
return entry;
670670
}
671671

672+
codeql::MaterializePackExpr ExprTranslator::translateMaterializePackExpr(
673+
const swift::MaterializePackExpr& expr) {
674+
auto entry = createExprEntry(expr);
675+
entry.sub_expr = dispatcher.fetchLabel(expr.getFromExpr());
676+
return entry;
677+
}
678+
672679
} // namespace codeql

swift/extractor/translators/ExprTranslator.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ class ExprTranslator : public AstTranslatorBase<ExprTranslator> {
124124
codeql::PackElementExpr translatePackElementExpr(const swift::PackElementExpr& expr);
125125
codeql::CopyExpr translateCopyExpr(const swift::CopyExpr& expr);
126126
codeql::ConsumeExpr translateConsumeExpr(const swift::ConsumeExpr& expr);
127+
codeql::MaterializePackExpr translateMaterializePackExpr(const swift::MaterializePackExpr& expr);
127128

128129
private:
129130
void fillClosureExpr(const swift::AbstractClosureExpr& expr, codeql::ClosureExpr& entry);

swift/ql/.generated.list

Lines changed: 10 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: 5 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
@@ -1444,6 +1444,14 @@ module Exprs {
14441444
}
14451445
}
14461446

1447+
private class MaterializePackExprTree extends AstStandardPostOrderTree {
1448+
override MaterializePackExpr ast;
1449+
1450+
final override ControlFlowElement getChildElement(int i) {
1451+
i = 0 and result.asAstNode() = ast.getSubExpr().getFullyUnresolved()
1452+
}
1453+
}
1454+
14471455
/** Control-flow for Move Semantics. See the QLDoc for `CopyExpr` for details. */
14481456
private class CopyExprTree extends AstStandardPostOrderTree {
14491457
override CopyExpr ast;

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/expr/MaterializePackExpr.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/elements/expr/MaterializePackExprConstructor.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)