Merge branch 'main' into mad

This commit is contained in:
Geoffrey White
2024-04-02 16:14:53 +01:00
1094 changed files with 83377 additions and 45282 deletions

View File

@@ -1 +1 @@
3.8.14
3.11

View File

@@ -18,7 +18,7 @@ runs:
- name: Run integration tests
shell: bash
run: |
python swift/integration-tests/runner.py --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}"
python swift/ql/integration-tests/runner.py --compilation-cache "${{ steps.query-cache.outputs.cache-dir }}"
env:
SEMMLE_DEBUG_TRACER: 10000
- name: Upload test logs
@@ -27,5 +27,5 @@ runs:
with:
name: swift-integration-tests-logs-${{ runner.os }}
path: |
swift/integration-tests/**/db/log
swift/ql/integration-tests/**/db/log
retention-days: 1

View File

@@ -0,0 +1,17 @@
class Element extends @element {
string toString() { none() }
}
query predicate new_unspecified_elements(Element e, string property, string error) {
unspecified_elements(e, property, error)
or
error = "ThenStmt nodes removed during database downgrade. Please update your CodeQL code." and
property = "" and
then_stmts(e, _)
}
query predicate new_unspecified_element_children(Element e, int index, Element child) {
unspecified_element_children(e, index, child)
or
then_stmts(e, child) and index = 0
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,5 @@
description: Remove `ThenStmt` wrapper nodes.
compatibility: partial
unspecified_elements.rel: run downgrade.ql new_unspecified_elements
unspecified_element_children.rel: run downgrade.ql new_unspecified_element_children
then_stmts.rel: delete

View File

@@ -17,6 +17,10 @@ swift_cc_binary(
"//swift/third_party/swift-llvm-support",
"@absl//absl/strings",
],
linkopts = select({
"@platforms//os:macos": ["-headerpad_max_install_names"],
"//conditions:default": [],
}),
)
sh_binary(

View File

@@ -43,6 +43,7 @@ MAP(swift::Stmt, StmtTag)
MAP(swift::BraceStmt, BraceStmtTag)
MAP(swift::ReturnStmt, ReturnStmtTag)
MAP(swift::YieldStmt, YieldStmtTag)
MAP(swift::ThenStmt, ThenStmtTag)
MAP(swift::DeferStmt, DeferStmtTag)
MAP(swift::LabeledStmt, LabeledStmtTag)
MAP(swift::LabeledConditionalStmt, LabeledConditionalStmtTag)

View File

@@ -269,8 +269,8 @@ void DeclTranslator::fillOperatorDecl(const swift::OperatorDecl& decl,
void DeclTranslator::fillTypeDecl(const swift::TypeDecl& decl, codeql::TypeDecl& entry) {
entry.name = decl.getNameStr().str();
for (auto& typeLoc : decl.getInherited()) {
if (auto type = typeLoc.getType()) {
for (auto& inherited : decl.getInherited().getEntries()) {
if (auto type = inherited.getType()) {
entry.inherited_types.push_back(dispatcher.fetchLabel(type));
}
}
@@ -289,7 +289,7 @@ void DeclTranslator::fillIterableDeclContext(const swift::IterableDeclContext& d
void DeclTranslator::fillVarDecl(const swift::VarDecl& decl, codeql::VarDecl& entry) {
entry.name = decl.getNameStr().str();
entry.type = dispatcher.fetchLabel(decl.getType());
entry.type = dispatcher.fetchLabel(decl.getTypeInContext());
entry.parent_pattern = dispatcher.fetchOptionalLabel(decl.getParentPattern());
entry.parent_initializer = dispatcher.fetchOptionalLabel(decl.getParentInitializer());
if (decl.hasAttachedPropertyWrapper()) {

View File

@@ -218,4 +218,10 @@ codeql::DiscardStmt StmtTranslator::translateDiscardStmt(const swift::DiscardStm
return entry;
}
codeql::ThenStmt StmtTranslator::translateThenStmt(const swift::ThenStmt& stmt) {
auto entry = dispatcher.createEntry(stmt);
entry.result = dispatcher.fetchLabel(stmt.getResult());
return entry;
}
} // namespace codeql

View File

@@ -40,6 +40,7 @@ class StmtTranslator : public AstTranslatorBase<StmtTranslator> {
codeql::FailStmt translateFailStmt(const swift::FailStmt& stmt);
codeql::PoundAssertStmt translatePoundAssertStmt(const swift::PoundAssertStmt& stmt);
codeql::DiscardStmt translateDiscardStmt(const swift::DiscardStmt& stmt);
codeql::ThenStmt translateThenStmt(const swift::ThenStmt& stmt);
private:
void fillLabeledStmt(const swift::LabeledStmt& stmt, codeql::LabeledStmt& entry);

View File

@@ -1,5 +0,0 @@
import swift
predicate relevant(Locatable loc) {
loc.getLocation().getFile().getName().matches("%/swift/integration-tests/%/Sources/%")
}

View File

@@ -1,7 +0,0 @@
name: integration-tests-swift
version: 0.0.0
dependencies:
codeql/swift-all: ${workspace}
tests: .
extractor: swift
warnOnImplicitThis: true

View File

@@ -17,5 +17,5 @@ py_test(
"diagnostics.expected",
":assert-false",
],
deps = ["//swift/integration-tests:integration_tests"],
deps = ["//swift/ql/integration-tests:utils"],
)

View File

@@ -2,7 +2,7 @@ import importlib
import os
import subprocess
# We have to use importlib due to the '-' in the path
diagnostics_test_utils = importlib.import_module("swift.integration-tests.diagnostics_test_utils")
diagnostics_test_utils = importlib.import_module("swift.ql.integration-tests.diagnostics_test_utils")
test_dir = "swift/logging/tests/assertion-diagnostics"

View File

@@ -271,6 +271,8 @@ lib/codeql/swift/elements/stmt/ReturnStmtConstructor.qll 2c66c1b1ece31bcfee06c87
lib/codeql/swift/elements/stmt/Stmt.qll b21643c4dd6a7e22c422df36c66d7389918c71cb05e71b58c2086f998035ca8a 2fd87fce67d61461dfd40f1430b67e2611729eb3205fd508a79c4fabf6cc51b8
lib/codeql/swift/elements/stmt/StmtConditionConstructor.qll 978a7c1dd6cc51194c847a6ed4785200515d90d484d013c367d7b86a177656f2 4a0dd278470676232b29e2ed02fef5b88061d9dd3ca082238e5fc4e978dcd66f
lib/codeql/swift/elements/stmt/SwitchStmtConstructor.qll 8431feb4b68505ac0072be07a6ed07d71559daf5443e5164d0aad38bc8c5cc12 98a9e32dc3774e47070ec3b0f7f4febfe2ec298858955275e22471682da270bc
lib/codeql/swift/elements/stmt/ThenStmt.qll 70c38206142fa0bc5bbcfe3661dbfb4dcc53416160eef3e6f301504cddb4b0ae f7066479d4319db057de7d49d723dbfa9a6bc221738f8ea6cea795f5ef1e341a
lib/codeql/swift/elements/stmt/ThenStmtConstructor.qll 88823800957584b9a5f9601f85f75875d45d262718d736851b0e40d4028c5dc1 98c480d82177e5d223307aa0e2fe82bf859915b050ec66a5d959f7d0e58ee068
lib/codeql/swift/elements/stmt/ThrowStmtConstructor.qll 974ec76e814030df10362a516da9aa0f90dbb1040ef3297a12632b0654d95dfc a02f73cd6f36d96d6093ffb4608be6e5fb15d8412f3c4ff0f4648b82b909f582
lib/codeql/swift/elements/stmt/WhileStmtConstructor.qll a49c46100da57dc6e8b3cfcc665bd2d6cfa1b49efb0f7d66f49ed719b42ff34d d527c8f6d08b91917d209554c76aade2b35b90c09caec6aa21c3ba951e8e8bf7
lib/codeql/swift/elements/stmt/YieldStmtConstructor.qll ac2047e02add0796b5eff4180c777dc4ebd4bc52c2083036b959e3a1caa41bad 78209a97874bc3bb2c4c3b919ff4b9e68010b0d047d2b455881b980f5100767a
@@ -390,7 +392,7 @@ lib/codeql/swift/elements/type/UnresolvedTypeConstructor.qll 7f75d489b4d7ce65cae
lib/codeql/swift/elements/type/VariadicSequenceTypeConstructor.qll fc74a5a2a2effa28ef24509b20ee4373d97cf6e8c71840121bb031c6adedf584 c9b2effc1d01c13c5e6a74a111122fa79a2f6554dda3cb016d68ba397e566ec4
lib/codeql/swift/elements/type/WeakStorageType.qll edd13dd97b53040684409e187c1f975bcada6807c919e1345d8977144dbebb6f 9434c044d264a7f5f503a6422c106c9b8fedf74aaae314174473a29ea6ed17b9
lib/codeql/swift/elements/type/WeakStorageTypeConstructor.qll 5fdce3716aba6318522174a2c455a63480970222ae81c732fb19c6dd3ae2d271 60ea79d6943e129deba0deccb566cf9d73f78398b0f7f0212674d91287d6b2ae
lib/codeql/swift/elements.qll 27da89b0b50ea17b96a47aad31453ff0d43b8277ab660385f785879ce6cc243e 27da89b0b50ea17b96a47aad31453ff0d43b8277ab660385f785879ce6cc243e
lib/codeql/swift/elements.qll bb863ff140bfaa0bf887708f421a16c85816886f4d061bbc5af752a4e4d810d3 bb863ff140bfaa0bf887708f421a16c85816886f4d061bbc5af752a4e4d810d3
lib/codeql/swift/generated/AstNode.qll 68877daa9e14b462247ac6b7b724f5e683288e39953a8ebb02a362b7d1df8e4c 54d3512744738e1ee15645f3af116437053cb5209687f4106361a1943b38b666
lib/codeql/swift/generated/AvailabilityInfo.qll e74e218a1ab00416cb8823610ff93642101aa784aa61cbc2b4deef61471a5bac e2c6c19860dc3e6e211041c95d8e6d52c3505ccff7018b80a849735cc98141af
lib/codeql/swift/generated/AvailabilitySpec.qll a8afc5071887a67b4e0dec27356ab8cbf3e176b5358cb34c785e3015b2cad5a2 c7f88b0d701612c821359c983b3102f31b23edc211c3dcfe97de5adec61af386
@@ -407,12 +409,12 @@ lib/codeql/swift/generated/Locatable.qll 6cb437dd7ff7331429ec6586b0af50b1af15e4f
lib/codeql/swift/generated/Location.qll 3f3bad413be87d05a596fe7b8004f415c2caa98cb759021a6aad20b589b7d700 ed30ed646962b3ffb6b47c97c6434fe47a6b1ea8e3f2e0589577bea5cf96c88e
lib/codeql/swift/generated/MacroRole.qll aaf5631c49de81e046854955341202d6d3516713cd09bc2e7b870e40c261cc9f 6cd17d40cbf1d8fa4ef01dfb8b3462b7cee902e6058fb76417c2035be12481d1
lib/codeql/swift/generated/OtherAvailabilitySpec.qll 06393a08e8da36106c5ec6efb9f1bd56a5c7b3d3f3d0bcefc6fa07fa96860c31 06393a08e8da36106c5ec6efb9f1bd56a5c7b3d3f3d0bcefc6fa07fa96860c31
lib/codeql/swift/generated/ParentChild.qll 523f0fdf11a8007a80b35d7f8b99f736face08513311c8e998ca20ae1e535ebe 2829f5e61adbd863f4ad823ecfd7c1bb5eccaf14bb121b85ad460175b733fe30
lib/codeql/swift/generated/ParentChild.qll eae164aa8a78e883e707fba6c671ff2cd0ddab1084b0871fc5ae27c44cded4c5 3af88b63e21d58090f9702e6e4716a5b8a5a65897b8c92362b6e3c0fba60ddc2
lib/codeql/swift/generated/PlatformVersionAvailabilitySpec.qll 5355be9da8b778d1d8ae60d25d9c3394477da24f94e8a6ab4484c6a16d07cd7c 075438c1762ec0a7775004b39032dcf85aada038a4269e6f428c34b8282786e9
lib/codeql/swift/generated/PureSynthConstructors.qll 40f5c0c573ce12f16322d9efb12306750f672254cbc36a200c298cb08e504229 40f5c0c573ce12f16322d9efb12306750f672254cbc36a200c298cb08e504229
lib/codeql/swift/generated/Raw.qll 252bb96829d1c284ec8036e54f14db83d5a3c9be1c2bdc05bc7add7cf46ca618 4cdc6643270b2fc78805635a738dfd506bdee9dc770bc74ec66558c1efff7697
lib/codeql/swift/generated/Synth.qll b8bf274c60f60df473ed9093b50906822613dee047bda19ad37d07c308f04564 692590b0b18556a23cc1de0c8a60fd17534791dccb876cab85170bbf78392bd1
lib/codeql/swift/generated/SynthConstructors.qll d3b4b5d93be989004d7c05bbc32a5b859eaad768b4a52cfb01a767c90542f9a4 d3b4b5d93be989004d7c05bbc32a5b859eaad768b4a52cfb01a767c90542f9a4
lib/codeql/swift/generated/Raw.qll 10633b948918d315b98b6ff6733d4c368e082c5afd78334c0862291f9d883216 66abde4c9a2283773033d90a4633c1203d6563fc238ddbd48fdf1b910f90021a
lib/codeql/swift/generated/Synth.qll 848284b2ae9854c5be74e5ef50a51090e248e5c9c02289a6bc63455e440122da e2607f46a4830e81718ca1636fa65bc29420a18539443d109fafd7f1af1591ce
lib/codeql/swift/generated/SynthConstructors.qll 7edffc30d3dddc4d73241f4e0d3df4501a99eb38d056f82043ed69e481404342 7edffc30d3dddc4d73241f4e0d3df4501a99eb38d056f82043ed69e481404342
lib/codeql/swift/generated/UnknownFile.qll 5325944cf96a72d5d224597745e15960fb6a9448b96b6644ececd6344dfd9d74 5325944cf96a72d5d224597745e15960fb6a9448b96b6644ececd6344dfd9d74
lib/codeql/swift/generated/UnknownLocation.qll dfdeb8eedb2564eccaac416695784ea04fe9754a3e109e8484c695021af4e554 dfdeb8eedb2564eccaac416695784ea04fe9754a3e109e8484c695021af4e554
lib/codeql/swift/generated/UnspecifiedElement.qll 8ecc275cc131fe5aa61052299e10c49c3718f96416df9eeacabf5aea34d97982 b02dfcf0df3859551b176e065291da943670ab4da6ed84d02a0861ff689001c6
@@ -624,6 +626,7 @@ lib/codeql/swift/generated/stmt/ReturnStmt.qll 82910f3c8360b39a2b5b649d41d206372
lib/codeql/swift/generated/stmt/Stmt.qll 3912b8b28aaf01624ac377bdf8caae2c20741c9ef98cef75156e1b0c3a8b5163 9805adf45af0ad4a0734477a5d80b5bcbb2bece8e83411a76aba96042d0c7f18
lib/codeql/swift/generated/stmt/StmtCondition.qll cf03296a32292d836ff9050ffc6d3d5fc56c90f9473e7f70a67116417590ee76 c5694a39bdcab60beaa04a275ec99616dd868c12c878513f783a0eb52f328ba9
lib/codeql/swift/generated/stmt/SwitchStmt.qll 4e0ee2230d295e7b592e837b3ad94f122540f06107139a279302f67cff5cefe8 5bd92a4997e7308b046d985f04f21b1f4284c6f782b56563c1020021f34755a4
lib/codeql/swift/generated/stmt/ThenStmt.qll b0fb20f9ebfa836675912c385c133acbfc57f48b431a58ede48099cac131491d c78838d9084ff18f813e9cad68a56f8a838ed4ac59f046411442226bb41ad763
lib/codeql/swift/generated/stmt/ThrowStmt.qll 888825d19ced5a03dad6a20af8f8d86e8d8eb8fd8f69eaba9c0d0b58cbefac90 517d4aa93a9ae1874ac64dc1d6a170b4cde8e51c8f842dcba058ff2c61086ffd
lib/codeql/swift/generated/stmt/WhileStmt.qll cca25bd25aaea758dce474354d5e57d92eaa5ca5abb918f8d677feb2be6d3b0d d7ae1bdd69c25d8eb882522053b07048f3a0f1bb5ed8dcbd5b3efbfe0f72631b
lib/codeql/swift/generated/stmt/YieldStmt.qll c4619558f406dcf3ed1a0171b6c4b93c415fb5419745391c4df217d45e76b3f0 ca5c954cacf21233a35b88fe3e6de2eba0017e4e08b3f51b9d2bac6b01d8a219
@@ -898,6 +901,7 @@ test/extractor-tests/generated/expr/RebindSelfInInitializerExpr/MISSING_SOURCE.t
test/extractor-tests/generated/expr/RegexLiteralExpr/MISSING_SOURCE.txt 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7
test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.ql efbfaf798a86c5a7d8053a22f61249208db31edcdaf750f2671057ad2f376806 d3256d2315d5bd5420b40a4be9522752bb57897807ea3853a7a4c61e9a05e478
test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr_getType.ql bfbeb24e57078b1bbaae331a6f3e8d13d0efbdca2228dbbca53b86d5e287efd8 864351b87f7981825e148a479e997936c653a4581e8a893eaed96ddeed891eab
test/extractor-tests/generated/expr/SingleValueStmtExpr/ThenStmt.ql 0bd26223160e846cfa64fad75672eab18b8ce27e24d802bc711f42a540d13ac7 6a5b7760c44ee34c6e33a517a52622cc70dbdee88eb20eaea787be0e1f888996
test/extractor-tests/generated/expr/StringLiteralExpr/MISSING_SOURCE.txt 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7
test/extractor-tests/generated/expr/SubscriptExpr/MISSING_SOURCE.txt 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7
test/extractor-tests/generated/expr/SuperRefExpr/MISSING_SOURCE.txt 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7 66846d526b0bc4328735c3c4dd9c390a9325da5b5dfd42ec07622f9c7108a7d7

4
swift/ql/.gitattributes generated vendored
View File

@@ -273,6 +273,8 @@
/lib/codeql/swift/elements/stmt/Stmt.qll linguist-generated
/lib/codeql/swift/elements/stmt/StmtConditionConstructor.qll linguist-generated
/lib/codeql/swift/elements/stmt/SwitchStmtConstructor.qll linguist-generated
/lib/codeql/swift/elements/stmt/ThenStmt.qll linguist-generated
/lib/codeql/swift/elements/stmt/ThenStmtConstructor.qll linguist-generated
/lib/codeql/swift/elements/stmt/ThrowStmtConstructor.qll linguist-generated
/lib/codeql/swift/elements/stmt/WhileStmtConstructor.qll linguist-generated
/lib/codeql/swift/elements/stmt/YieldStmtConstructor.qll linguist-generated
@@ -626,6 +628,7 @@
/lib/codeql/swift/generated/stmt/Stmt.qll linguist-generated
/lib/codeql/swift/generated/stmt/StmtCondition.qll linguist-generated
/lib/codeql/swift/generated/stmt/SwitchStmt.qll linguist-generated
/lib/codeql/swift/generated/stmt/ThenStmt.qll linguist-generated
/lib/codeql/swift/generated/stmt/ThrowStmt.qll linguist-generated
/lib/codeql/swift/generated/stmt/WhileStmt.qll linguist-generated
/lib/codeql/swift/generated/stmt/YieldStmt.qll linguist-generated
@@ -900,6 +903,7 @@
/test/extractor-tests/generated/expr/RegexLiteralExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr.ql linguist-generated
/test/extractor-tests/generated/expr/SingleValueStmtExpr/SingleValueStmtExpr_getType.ql linguist-generated
/test/extractor-tests/generated/expr/SingleValueStmtExpr/ThenStmt.ql linguist-generated
/test/extractor-tests/generated/expr/StringLiteralExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/expr/SubscriptExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/expr/SuperRefExpr/MISSING_SOURCE.txt linguist-generated

View File

@@ -6,5 +6,5 @@ xcuserdata/
DerivedData/
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
*.actual
db
test-db
*.swiftmodule

View File

@@ -1,5 +1,5 @@
py_library(
name = "integration_tests",
name = "utils",
srcs = [
"create_database_utils.py",
"diagnostics_test_utils.py",

View File

@@ -27,8 +27,8 @@ def runUnsuccessfully(cmd):
def run_codeql_database_create(cmds, lang, keep_trap=True, db=None, runFunction=runSuccessfully):
""" db parameter is here solely for compatibility with the internal test runner """
assert lang == 'swift'
codeql_root = pathlib.Path(__file__).parents[2]
shutil.rmtree("db", ignore_errors=True)
codeql_root = pathlib.Path(__file__).parents[3]
shutil.rmtree("test-db", ignore_errors=True)
cmd = [
"codeql", "database", "create",
"-s", ".", "-l", "swift", f"--search-path={codeql_root}", "--no-cleanup",
@@ -37,5 +37,5 @@ def run_codeql_database_create(cmds, lang, keep_trap=True, db=None, runFunction=
cmd.append("--keep-trap")
for c in cmds:
cmd += ["-c", c]
cmd.append("db")
cmd.append("test-db")
runFunction(cmd)

View File

@@ -50,7 +50,7 @@ def _normalize_json(data):
return "\n".join(entries)
def check_diagnostics(test_dir=".", test_db="db", actual = None):
def check_diagnostics(test_dir=".", test_db="test-db", actual = None):
test_dir = pathlib.Path(test_dir)
test_db = pathlib.Path(test_db)
if actual is None:

Some files were not shown because too many files have changed in this diff Show More