Skip to content

Commit e68826b

Browse files
authored
Merge pull request #14261 from github/alexdenisov/upgrade-to-swift-5.9
Swift: upgrade to 5.9
2 parents 512c6a5 + d8e75e6 commit e68826b

40 files changed

+10807
-105
lines changed

swift/downgrades/fcc7b497930add320fabeed9b228b264bc847ae6/old.dbscheme

Lines changed: 2642 additions & 0 deletions
Large diffs are not rendered by default.

swift/downgrades/fcc7b497930add320fabeed9b228b264bc847ae6/swift.dbscheme

Lines changed: 2636 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// Converts SingleValueStmtExprs into UnspecifiedElements
2+
class Element extends @element {
3+
string toString() { none() }
4+
}
5+
6+
from Element e, string property, string error
7+
where
8+
single_value_stmt_exprs(e, _) and
9+
property = "" and
10+
error = "Removed SingleValueStmtExpr during the database downgrade"
11+
or
12+
unspecified_elements(e, property, error)
13+
select e, property, error
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
description: Removing SingleValueStmtExpr
2+
compatibility: partial
3+
4+
unspecified_elements.rel: run unspecified_elements.ql
5+
single_value_stmt_exprs.rel: delete

swift/extractor/infra/SwiftTagTraits.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ MAP(swift::Expr, ExprTag)
205205
MAP(swift::CopyExpr, void) // TODO (introduced in 5.9)
206206
MAP(swift::ConsumeExpr, void) // TODO (introduced in 5.9)
207207
MAP(swift::MaterializePackExpr, void) // TODO (introduced in 5.9)
208-
MAP(swift::SingleValueStmtExpr, void) // TODO (introduced in 5.9)
208+
MAP(swift::SingleValueStmtExpr, SingleValueStmtExprTag)
209209
#endif
210210

211211
MAP(swift::Decl, DeclTag)

swift/extractor/translators/ExprTranslator.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -636,4 +636,11 @@ codeql::RegexLiteralExpr ExprTranslator::translateRegexLiteralExpr(
636636
return entry;
637637
}
638638

639+
codeql::SingleValueStmtExpr ExprTranslator::translateSingleValueStmtExpr(
640+
const swift::SingleValueStmtExpr& expr) {
641+
auto entry = createExprEntry(expr);
642+
entry.stmt = dispatcher.fetchLabel(expr.getStmt());
643+
return entry;
644+
}
645+
639646
} // namespace codeql

swift/extractor/translators/ExprTranslator.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ class ExprTranslator : public AstTranslatorBase<ExprTranslator> {
119119
codeql::AppliedPropertyWrapperExpr translateAppliedPropertyWrapperExpr(
120120
const swift::AppliedPropertyWrapperExpr& expr);
121121
codeql::RegexLiteralExpr translateRegexLiteralExpr(const swift::RegexLiteralExpr& expr);
122+
codeql::SingleValueStmtExpr translateSingleValueStmtExpr(const swift::SingleValueStmtExpr& expr);
122123

123124
private:
124125
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.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
category: majorAnalysis
3+
---
4+
* Added Swift 5.9.1 support
5+
* New AST node is extracted: `SingleValueStmtExpr`

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1417,6 +1417,15 @@ module Exprs {
14171417
}
14181418
}
14191419

1420+
/** Control-flow for a `SingleValueStmtExpr`. See the QLDoc for `SingleValueStmtExpr` for the semantics of a `SingleValueStmtExpr`. */
1421+
private class SingleValueStmtExprTree extends AstStandardPostOrderTree {
1422+
override SingleValueStmtExpr ast;
1423+
1424+
final override ControlFlowElement getChildElement(int i) {
1425+
i = 0 and result.asAstNode() = ast.getStmt()
1426+
}
1427+
}
1428+
14201429
private class OpaqueValueExprTree extends AstLeafTree {
14211430
override OpaqueValueExpr ast;
14221431
}

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/SingleValueStmtExpr.qll

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/elements/expr/SingleValueStmtExprConstructor.qll

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/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.

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

Lines changed: 13 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/Synth.qll

Lines changed: 28 additions & 2 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/SynthConstructors.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/generated/expr/SingleValueStmtExpr.qll

Lines changed: 24 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)