Swift: Add basic support for experimental using decls

Note that we cannot write tests for these at the moment. Passing
```
-enable-experimental-feature DefaultIsolationPerFile
```
to the extractor results in:
```
error: experimental feature 'DefaultIsolationPerFile' cannot be enabled in production compile
```
This commit is contained in:
Jeroen Ketema
2025-10-30 16:00:12 +01:00
parent 67b6b9cd15
commit b9d0cb7746
17 changed files with 182 additions and 7 deletions

View File

@@ -241,7 +241,7 @@ MAP(swift::Decl, DeclTag)
MAP(swift::MissingMemberDecl, MissingMemberDeclTag)
MAP(swift::PatternBindingDecl, PatternBindingDeclTag)
MAP(swift::EnumCaseDecl, EnumCaseDeclTag)
MAP(swift::UsingDecl, void) // TODO: Swift 6.2
MAP(swift::UsingDecl, UsingDeclTag)
MAP(swift::OperatorDecl, OperatorDeclTag)
MAP(swift::InfixOperatorDecl, InfixOperatorDeclTag)
MAP(swift::PrefixOperatorDecl, PrefixOperatorDeclTag)

View File

@@ -137,6 +137,19 @@ codeql::EnumCaseDecl DeclTranslator::translateEnumCaseDecl(const swift::EnumCase
return entry;
}
codeql::UsingDecl DeclTranslator::translateUsingDecl(const swift::UsingDecl& decl) {
auto entry = createEntry(decl);
switch (decl.getSpecifier()) {
case swift::UsingSpecifier::MainActor:
entry.is_main_actor = true;
break;
case swift::UsingSpecifier::Nonisolated:
entry.is_nonisolated = true;
break;
}
return entry;
}
codeql::EnumElementDecl DeclTranslator::translateEnumElementDecl(
const swift::EnumElementDecl& decl) {
auto entry = createEntry(decl);

View File

@@ -34,6 +34,7 @@ class DeclTranslator : public AstTranslatorBase<DeclTranslator> {
codeql::EnumDecl translateEnumDecl(const swift::EnumDecl& decl);
codeql::ProtocolDecl translateProtocolDecl(const swift::ProtocolDecl& decl);
codeql::EnumCaseDecl translateEnumCaseDecl(const swift::EnumCaseDecl& decl);
codeql::UsingDecl translateUsingDecl(const swift::UsingDecl& decl);
codeql::EnumElementDecl translateEnumElementDecl(const swift::EnumElementDecl& decl);
codeql::GenericTypeParamDecl translateGenericTypeParamDecl(
const swift::GenericTypeParamDecl& decl);

View File

@@ -56,6 +56,7 @@ lib/codeql/swift/elements/decl/SubscriptDecl.qll b55ac28cda7402efea4e57b6fe6c6b5
lib/codeql/swift/elements/decl/TopLevelCodeDecl.qll e5786a58e02c0d737ad382571ca6591bf18e0615b3d06b30a057209a80550e50 7b2cc05de78788cd862c8961e481a80b325b91e4fb64f22049564a21f0a5f95e
lib/codeql/swift/elements/decl/TypeAliasDecl.qll 73e7ecca7d4faf078640a872f4857f465e80ce4d0c99017f3943419c8b65acf4 bfd14ad6a8411acb936036c4efc2ab4e1e165459eb270c02017b9f0de9a71fab
lib/codeql/swift/elements/decl/TypeDecl.qll feb11a9eb276eff1eac5e72b5be4097fd4492c6dc81710d86c3eb55e37240795 2d1e4419aa05997e3149775a68e80065f5955fcaa141402c1892b7cb23ca58a2
lib/codeql/swift/elements/decl/UsingDecl.qll 40fa34a7e7204ec53132cefa69857c9c4bfc286b8bd05e693a3ceead881e0e4a 44c62d2e4cc8b42481a999083b520e07c6d5e652677ac5b4c55887957be50e4e
lib/codeql/swift/elements/decl/ValueDecl.qll f71d9aa147eb78894b5b1c292b13334b9661a0b4347a25803a118cdccfa29cf7 de304b3dc9c5b6e7d7a0d5989fd40e25827aefdd5062ab2634c0f8c79121cfd3
lib/codeql/swift/elements/decl/VarDecl.qll 5eb74f663d935328da028e892e8224a25e09c0edafa34b87471f57e4d7e51bdc 3f8e03ee0748ea67aa7a962a12c97fd20d37a1987cabadc0c1d5080900d149d5
lib/codeql/swift/elements/decl/internal/AbstractStorageDeclImpl.qll 56e7b7332f4a55a8860c03d0d756bfb31f66048c8082834a15bf613eca9d6e12 f6a9c384f9355bbc34e8c8654fd19f62ea2592c96b8bf79dcd2915406ff54f23
@@ -108,6 +109,8 @@ lib/codeql/swift/elements/decl/internal/StructDeclImpl.qll 9fc7b419040e509723320
lib/codeql/swift/elements/decl/internal/SubscriptDeclConstructor.qll 67882596f384f4710dd81aa284b53c7b3e9cd3c30f120e98252bfbd2f5dd34e1 f336269cdfbd3ef115ea29fe39c2d04deeb95ae8f927af27a4dc7acc4a14699a
lib/codeql/swift/elements/decl/internal/TopLevelCodeDeclConstructor.qll 3924b6e5bee007fd62ae4b2352e38ae20292dbdab65fd1724ca9cd698bfc88f4 28ac8627c75cd787e6dca1a8bfed4c36edbfd13cdad19a08905a49d56b815ad7
lib/codeql/swift/elements/decl/internal/TypeAliasDeclConstructor.qll 1dc3d7ef11adf5fb9b4be1c824b8a49393137071584ed44224a2f47b3a0b8a4a 2e1e8222b851376b0d7843a93fb6affeac7f8ee52867623b1e2fa99c1ac37dbb
lib/codeql/swift/elements/decl/internal/UsingDeclConstructor.qll 52fdc32c208571c3a0c588768cc65f04e708b8d7533b4d2d206734616f7d1475 aeece428c56101536ec8abd25364d208f1a020727d1294e9c97b13b7ab90f923
lib/codeql/swift/elements/decl/internal/UsingDeclImpl.qll 49e5068c50f424d314d0c2df6723c17cb51bfab5a419b0d45d88f411f326e232 5389436fe692eb0ecf96e80555a589596e6c7b553d37f2990addd8a11e4efce0
lib/codeql/swift/elements/expr/AbiSafeConversionExpr.qll 62c6b231898c42a7756cae20ed9b3818958872cb581cca6f1db0b28e4cff9b93 b90f7496229e76a40ac66e8a3d0ac2f14c65d729ebeea796cb34f395f2858b32
lib/codeql/swift/elements/expr/ActorIsolationErasureExpr.qll bbbc615255877e7fd95199710449fa696d68d81a4cfb985240d0cfbf124d9d37 526e7b4f2b5af5f2c8172b5d2c76c1f7198025e02c9e1068f92fa6c78cddeb81
lib/codeql/swift/elements/expr/AnyHashableErasureExpr.qll 3388c1ad2c9d984fb0a0368ef9090f03cc5bbd63088024308a056cabfb9c93c9 49e3450180b8a4626911fc83bd64d17e486fad6b50f33b55b9322faef1ced39f
@@ -715,7 +718,7 @@ lib/codeql/swift/elements/type/internal/UnresolvedTypeImpl.qll ee1499dd568753898
lib/codeql/swift/elements/type/internal/VariadicSequenceTypeConstructor.qll fc74a5a2a2effa28ef24509b20ee4373d97cf6e8c71840121bb031c6adedf584 c9b2effc1d01c13c5e6a74a111122fa79a2f6554dda3cb016d68ba397e566ec4
lib/codeql/swift/elements/type/internal/WeakStorageTypeConstructor.qll 5fdce3716aba6318522174a2c455a63480970222ae81c732fb19c6dd3ae2d271 60ea79d6943e129deba0deccb566cf9d73f78398b0f7f0212674d91287d6b2ae
lib/codeql/swift/elements/type/internal/WeakStorageTypeImpl.qll 74f79b458f3204ec2519bd654de21bc4fb6b76816bd8ca01990fe897563a1383 34e1810f74cecda5b580ed050438ae1d914b97a36b8f4e2de1c25254c0cac633
lib/codeql/swift/elements.qll 235d28a76c1799946a30bfe800bada394b61294692d2de14977f8eb08e404a3b 235d28a76c1799946a30bfe800bada394b61294692d2de14977f8eb08e404a3b
lib/codeql/swift/elements.qll 9af7c15501106ca3cc40447dbf7cda3fb0e45d7b77e25679e42a1d2d651aed55 9af7c15501106ca3cc40447dbf7cda3fb0e45d7b77e25679e42a1d2d651aed55
lib/codeql/swift/generated/AstNode.qll 6fb80e9b230a1e3ae8193af40744f253d5cc81dc4239156924e5ab606c491efc e5c28418e9a38bde08f323a3986a199620189fc4a8a4dc8f670610a5d3d65b99
lib/codeql/swift/generated/AvailabilityInfo.qll e3a5274c43e72ff124b6988fd8be0c83a41b89337e11104150dd0ca7f51d8a11 889563791ca8d9758dbbccf64a0731c4bdbf721cad32bc6cd723f1072b6aa1de
lib/codeql/swift/generated/AvailabilitySpec.qll 1bd2a0ee085f802c99090e681ab3339fc5013024d79deef39f376de12ab76d37 658f2eb51860726cfa6808b3e3501d624e0734750d1420f7a25c89782f1f6c7e
@@ -731,11 +734,11 @@ lib/codeql/swift/generated/KeyPathComponent.qll e11dcf952045b5e6062e24c23515cff9
lib/codeql/swift/generated/Locatable.qll 1d37fa20de71c0b9986bfd7a7c0cb82ab7bf3fda2d2008700f955ad82ce109a7 e97d4d4fb8a4800e0008cc00f60c8ed9b1ebd5f1140fd85e68b034616178d721
lib/codeql/swift/generated/Location.qll 5e20316c3e480ddfe632b7e88e016c19f10a67df1f6ae9c8f128755a6907d6f5 5a0af2d070bcb2ed53d6d0282bf9c60dc64c2dce89c21fdd485e9c7893c1c8fa
lib/codeql/swift/generated/MacroRole.qll facf907e75490d69cd401c491215e4719324d751f40ea46c86ccf24cf3663c1f 969d8d4b44e3f1a9c193a152a4d83a303e56d2dbb871fc920c47a33f699cf018
lib/codeql/swift/generated/ParentChild.qll d136a88003d899184c4d9c9d88d4ab8fe0f66d5499dc36408e94e801a7a69977 e22fd02176b000e7797d535c9609e309d55f878cffdc0aead44b33ab9c0aa3da
lib/codeql/swift/generated/ParentChild.qll 2d73f037f2a8d0f1d056ba7eb9d254275d46e5111617f262d8c618c3abb14050 e50636c770a5152be79e1cbc4528633233c2449c9c99c1a359e0e880bf93169f
lib/codeql/swift/generated/PureSynthConstructors.qll bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4
lib/codeql/swift/generated/Raw.qll cd9af8d346b1c9b1ed7dbcce0689501ebb5c3664c05ada9ef74d0384d8fb7631 614d653e9a61b574ac5a4c7aaa6d686679532248d281dfd6f16b4dc0c2d04de5
lib/codeql/swift/generated/Synth.qll adf8b1d9b1548ff3108e9f781e984475199d13b9f76001f04e76f3f47172c963 73dec964f00acde797be627aeb7af8f60589fb2c43f94faedd71861b9d07e704
lib/codeql/swift/generated/SynthConstructors.qll 05012c9dd9aa8c8ce9e12ad2e5791864de310efdd05150cfba2c925d6df672cd 05012c9dd9aa8c8ce9e12ad2e5791864de310efdd05150cfba2c925d6df672cd
lib/codeql/swift/generated/Raw.qll 70e9ee68fe351433246ad62deab892587647630947220645c025460bdbd7ca6e 6948032896309b0885fda6f92269ac300f274d671a43d80bebb17e283c510efd
lib/codeql/swift/generated/Synth.qll d66a45f1572d722463cf3490ad1f3aefdf3197090c4d20f362fa2e71975095c2 36d89d310bb49a4d958e085203e16079bf77e1f32428808f995a00261b34820f
lib/codeql/swift/generated/SynthConstructors.qll 77fa549bc12afecb4d9fb4999b5c025aee27d4ec4e40b70afb0f5a22f7846a47 77fa549bc12afecb4d9fb4999b5c025aee27d4ec4e40b70afb0f5a22f7846a47
lib/codeql/swift/generated/UnknownFile.qll 247ddf2ebb49ce5ed4bf7bf91a969ddff37de6c78d43d8affccaf7eb586e06f2 452b29f0465ef45e978ef8b647b75e5a2a1e53f2a568fc003bc8f52f73b3fa4d
lib/codeql/swift/generated/UnknownLocation.qll d871000b4f53ffca4f67ea23ca5626e5dcce125d62a4d4b9969e08cc974af6fc b05971d7774e60790362fb810fb7086314f40a2de747b8cb1bc823ec6494a4dd
lib/codeql/swift/generated/UnspecifiedElement.qll d9ad4ba1ffff90cc465e8ba0dea8c4e8ba67dce5529b53b63ab6dc8e13c85e67 025218e1fee8ee382b63ad38009dfec73dc604d2ba80b9ad956c7c96eeed7022
@@ -780,6 +783,7 @@ lib/codeql/swift/generated/decl/SubscriptDecl.qll 18d84b4ef27ecb732ac4350b8b01cb
lib/codeql/swift/generated/decl/TopLevelCodeDecl.qll b327da6de5b1e40f5eea5893f4fcb01803cfdd78bd757ec93daadedb7169bf8d 2d316fff198707fae5a43e6b24d2a547ee9502fd278468846495d1b2f4ea62b1
lib/codeql/swift/generated/decl/TypeAliasDecl.qll 041c098c276bc7369049e9a11540e99b061d50977338cceca47488f82b21694e 06deed614cbe77031fdbf3f9591780e80b9f545adec8b7831a2b5329ee49bc5f
lib/codeql/swift/generated/decl/TypeDecl.qll 92f74709cce7e9f0f713598d3b20b730475c312957c518b8096206f8744419a2 305bda46c8bef48b7e30392698e724093ab2984ffed74cae3361f818cbf8c77a
lib/codeql/swift/generated/decl/UsingDecl.qll 3bb697961f5699ec9ed1b87511714eac4ee69f5d82e1fd8c6598f121e23a2f7b 4e72b98a84f796d3e0e556ae6b84bf7b7f08adc225dcdc00fd120461e287b472
lib/codeql/swift/generated/decl/ValueDecl.qll d3b9c241fd6cb1ce8274435c0242775c28c08f6a47caae01ad1ecd38897b2cd5 bc81291b1394b47972d7b75b6a767ed847f881932a7d9345d28d161a55b66bd1
lib/codeql/swift/generated/decl/VarDecl.qll 8978a73fa2d7a9f952b68a2638788eda857e62502311a33fa6de1dad49a6cb1c b8b6c8cf6773056c3a90494754b0a257dcae494c03d933f138ece7f531fb9158
lib/codeql/swift/generated/expr/AbiSafeConversionExpr.qll 9d8f0f895a5e1abb89bed9671a9b398e48eca4664eb10b4b41263eb2a29bb2cf 4f65b8e62876664a357433f886baccaf40e4bf7e9ca7eebeb9f5d999354578f9
@@ -1067,6 +1071,7 @@ test/extractor-tests/generated/decl/StructDecl/MISSING_SOURCE.txt 35fb32ea539315
test/extractor-tests/generated/decl/SubscriptDecl/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d
test/extractor-tests/generated/decl/TopLevelCodeDecl/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d
test/extractor-tests/generated/decl/TypeAliasDecl/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d
test/extractor-tests/generated/decl/UsingDecl/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d
test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/AppliedPropertyWrapperExpr.ql 612ed1b62baed51cb74ea682512de8042c71cc14c99f966f8de33c65c8be7cdf 390197357690dd42d23ee5f0670f1183139cfbdd63f67c7430dd62c51e5d9426
test/extractor-tests/generated/expr/Argument/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d
test/extractor-tests/generated/expr/ArrayExpr/MISSING_SOURCE.txt 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d 35fb32ea5393152eb7a875b20b4e3e4b8c7a997a8959c32417140d57a16a052d

5
swift/ql/.gitattributes generated vendored
View File

@@ -58,6 +58,7 @@
/lib/codeql/swift/elements/decl/TopLevelCodeDecl.qll linguist-generated
/lib/codeql/swift/elements/decl/TypeAliasDecl.qll linguist-generated
/lib/codeql/swift/elements/decl/TypeDecl.qll linguist-generated
/lib/codeql/swift/elements/decl/UsingDecl.qll linguist-generated
/lib/codeql/swift/elements/decl/ValueDecl.qll linguist-generated
/lib/codeql/swift/elements/decl/VarDecl.qll linguist-generated
/lib/codeql/swift/elements/decl/internal/AbstractStorageDeclImpl.qll linguist-generated
@@ -110,6 +111,8 @@
/lib/codeql/swift/elements/decl/internal/SubscriptDeclConstructor.qll linguist-generated
/lib/codeql/swift/elements/decl/internal/TopLevelCodeDeclConstructor.qll linguist-generated
/lib/codeql/swift/elements/decl/internal/TypeAliasDeclConstructor.qll linguist-generated
/lib/codeql/swift/elements/decl/internal/UsingDeclConstructor.qll linguist-generated
/lib/codeql/swift/elements/decl/internal/UsingDeclImpl.qll linguist-generated
/lib/codeql/swift/elements/expr/AbiSafeConversionExpr.qll linguist-generated
/lib/codeql/swift/elements/expr/ActorIsolationErasureExpr.qll linguist-generated
/lib/codeql/swift/elements/expr/AnyHashableErasureExpr.qll linguist-generated
@@ -782,6 +785,7 @@
/lib/codeql/swift/generated/decl/TopLevelCodeDecl.qll linguist-generated
/lib/codeql/swift/generated/decl/TypeAliasDecl.qll linguist-generated
/lib/codeql/swift/generated/decl/TypeDecl.qll linguist-generated
/lib/codeql/swift/generated/decl/UsingDecl.qll linguist-generated
/lib/codeql/swift/generated/decl/ValueDecl.qll linguist-generated
/lib/codeql/swift/generated/decl/VarDecl.qll linguist-generated
/lib/codeql/swift/generated/expr/AbiSafeConversionExpr.qll linguist-generated
@@ -1069,6 +1073,7 @@
/test/extractor-tests/generated/decl/SubscriptDecl/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/decl/TopLevelCodeDecl/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/decl/TypeAliasDecl/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/decl/UsingDecl/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/expr/AppliedPropertyWrapperExpr/AppliedPropertyWrapperExpr.ql linguist-generated
/test/extractor-tests/generated/expr/Argument/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/expr/ArrayExpr/MISSING_SOURCE.txt linguist-generated

View File

@@ -61,6 +61,7 @@ import codeql.swift.elements.decl.SubscriptDecl
import codeql.swift.elements.decl.TopLevelCodeDecl
import codeql.swift.elements.decl.TypeAliasDecl
import codeql.swift.elements.decl.TypeDecl
import codeql.swift.elements.decl.UsingDecl
import codeql.swift.elements.decl.ValueDecl
import codeql.swift.elements.decl.VarDecl
import codeql.swift.elements.expr.AbiSafeConversionExpr

View File

@@ -0,0 +1,9 @@
// generated by codegen/codegen.py, do not edit
/**
* This module provides the public class `UsingDecl`.
*/
private import internal.UsingDeclImpl
import codeql.swift.elements.decl.Decl
final class UsingDecl = Impl::UsingDecl;

View File

@@ -0,0 +1,14 @@
// generated by codegen/codegen.py, remove this comment if you wish to edit this file
/**
* This module defines the hook used internally to tweak the characteristic predicate of
* `UsingDecl` synthesized instances.
* INTERNAL: Do not use.
*/
private import codeql.swift.generated.Raw
/**
* The characteristic predicate of `UsingDecl` synthesized instances.
* INTERNAL: Do not use.
*/
predicate constructUsingDecl(Raw::UsingDecl id) { any() }

View File

@@ -0,0 +1,16 @@
// generated by codegen/codegen.py, remove this comment if you wish to edit this file
/**
* This module provides a hand-modifiable wrapper around the generated class `UsingDecl`.
*
* INTERNAL: Do not use.
*/
private import codeql.swift.generated.decl.UsingDecl
/**
* INTERNAL: This module contains the customizable definition of `UsingDecl` and should not
* be referenced directly.
*/
module Impl {
class UsingDecl extends Generated::UsingDecl { }
}

View File

@@ -261,6 +261,19 @@ private module Impl {
)
}
private Element getImmediateChildOfUsingDecl(UsingDecl e, int index, string partialPredicateCall) {
exists(int n, int nMember |
n = 0 and
nMember = n + 1 + max(int i | i = -1 or exists(e.getMember(i)) | i) and
(
none()
or
result = e.getMember(index - n) and
partialPredicateCall = "Member(" + (index - n).toString() + ")"
)
)
}
private Element getImmediateChildOfEnumElementDecl(
EnumElementDecl e, int index, string partialPredicateCall
) {
@@ -3222,6 +3235,8 @@ private module Impl {
or
result = getImmediateChildOfTopLevelCodeDecl(e, index, partialAccessor)
or
result = getImmediateChildOfUsingDecl(e, index, partialAccessor)
or
result = getImmediateChildOfEnumElementDecl(e, index, partialAccessor)
or
result = getImmediateChildOfInfixOperatorDecl(e, index, partialAccessor)

View File

@@ -520,6 +520,23 @@ module Raw {
BraceStmt getBody() { top_level_code_decls(this, result) }
}
/**
* INTERNAL: Do not use.
*/
class UsingDecl extends @using_decl, Decl {
override string toString() { result = "UsingDecl" }
/**
* Holds if this using declaration is main actor.
*/
predicate isMainActor() { using_decl_is_main_actor(this) }
/**
* Holds if this using declaration is nonisolated.
*/
predicate isNonisolated() { using_decl_is_nonisolated(this) }
}
/**
* INTERNAL: Do not use.
*/

View File

@@ -182,6 +182,10 @@ module Synth {
* INTERNAL: Do not use.
*/
TTypeAliasDecl(Raw::TypeAliasDecl id) { constructTypeAliasDecl(id) } or
/**
* INTERNAL: Do not use.
*/
TUsingDecl(Raw::UsingDecl id) { constructUsingDecl(id) } or
/**
* INTERNAL: Do not use.
*/
@@ -1171,7 +1175,7 @@ module Synth {
class TDecl =
TCapturedDecl or TEnumCaseDecl or TExtensionDecl or TIfConfigDecl or TImportDecl or
TMissingMemberDecl or TOperatorDecl or TPatternBindingDecl or TPoundDiagnosticDecl or
TPrecedenceGroupDecl or TTopLevelCodeDecl or TValueDecl;
TPrecedenceGroupDecl or TTopLevelCodeDecl or TUsingDecl or TValueDecl;
/**
* INTERNAL: Do not use.
@@ -1715,6 +1719,12 @@ module Synth {
*/
TTypeAliasDecl convertTypeAliasDeclFromRaw(Raw::Element e) { result = TTypeAliasDecl(e) }
/**
* INTERNAL: Do not use.
* Converts a raw element to a synthesized `TUsingDecl`, if possible.
*/
TUsingDecl convertUsingDeclFromRaw(Raw::Element e) { result = TUsingDecl(e) }
/**
* INTERNAL: Do not use.
* Converts a raw element to a synthesized `TAbiSafeConversionExpr`, if possible.
@@ -3380,6 +3390,8 @@ module Synth {
or
result = convertTopLevelCodeDeclFromRaw(e)
or
result = convertUsingDeclFromRaw(e)
or
result = convertValueDeclFromRaw(e)
}
@@ -4447,6 +4459,12 @@ module Synth {
*/
Raw::Element convertTypeAliasDeclToRaw(TTypeAliasDecl e) { e = TTypeAliasDecl(result) }
/**
* INTERNAL: Do not use.
* Converts a synthesized `TUsingDecl` to a raw DB element, if possible.
*/
Raw::Element convertUsingDeclToRaw(TUsingDecl e) { e = TUsingDecl(result) }
/**
* INTERNAL: Do not use.
* Converts a synthesized `TAbiSafeConversionExpr` to a raw DB element, if possible.
@@ -6110,6 +6128,8 @@ module Synth {
or
result = convertTopLevelCodeDeclToRaw(e)
or
result = convertUsingDeclToRaw(e)
or
result = convertValueDeclToRaw(e)
}

View File

@@ -43,6 +43,7 @@ import codeql.swift.elements.decl.internal.StructDeclConstructor
import codeql.swift.elements.decl.internal.SubscriptDeclConstructor
import codeql.swift.elements.decl.internal.TopLevelCodeDeclConstructor
import codeql.swift.elements.decl.internal.TypeAliasDeclConstructor
import codeql.swift.elements.decl.internal.UsingDeclConstructor
import codeql.swift.elements.expr.internal.AbiSafeConversionExprConstructor
import codeql.swift.elements.expr.internal.ActorIsolationErasureExprConstructor
import codeql.swift.elements.expr.internal.AnyHashableErasureExprConstructor

View File

@@ -0,0 +1,35 @@
// generated by codegen/codegen.py, do not edit
/**
* This module provides the generated definition of `UsingDecl`.
* INTERNAL: Do not import directly.
*/
private import codeql.swift.generated.Synth
private import codeql.swift.generated.Raw
import codeql.swift.elements.decl.internal.DeclImpl::Impl as DeclImpl
/**
* INTERNAL: This module contains the fully generated definition of `UsingDecl` and should not
* be referenced directly.
*/
module Generated {
/**
* INTERNAL: Do not reference the `Generated::UsingDecl` class directly.
* Use the subclass `UsingDecl`, where the following predicates are available.
*/
class UsingDecl extends Synth::TUsingDecl, DeclImpl::Decl {
override string getAPrimaryQlClass() { result = "UsingDecl" }
/**
* Holds if this using declaration is main actor.
*/
predicate isMainActor() { Synth::convertUsingDeclToRaw(this).(Raw::UsingDecl).isMainActor() }
/**
* Holds if this using declaration is nonisolated.
*/
predicate isNonisolated() {
Synth::convertUsingDeclToRaw(this).(Raw::UsingDecl).isNonisolated()
}
}
}

View File

@@ -273,6 +273,7 @@ unspecified_element_children(
| @pound_diagnostic_decl
| @precedence_group_decl
| @top_level_code_decl
| @using_decl
| @value_decl
;
@@ -425,6 +426,20 @@ top_level_code_decls( //dir=decl
int body: @brace_stmt_or_none ref
);
using_decls( //dir=decl
unique int id: @using_decl
);
#keyset[id]
using_decl_is_main_actor( //dir=decl
int id: @using_decl ref
);
#keyset[id]
using_decl_is_nonisolated( //dir=decl
int id: @using_decl ref
);
@value_decl =
@abstract_storage_decl
| @enum_element_decl

View File

@@ -0,0 +1,4 @@
// generated by codegen/codegen.py, do not edit
After a source file is added in this directory and codegen/codegen.py is run again, test queries
will appear and this file will be deleted

View File

@@ -117,6 +117,10 @@ class GenericContext(Element):
class EnumCaseDecl(Decl):
elements: list["EnumElementDecl"]
class UsingDecl(Decl):
is_main_actor: predicate
is_nonisolated: predicate
class ExtensionDecl(GenericContext, Decl):
extended_type_decl: "NominalTypeDecl"
protocols: list["ProtocolDecl"]