Skip to content

Commit b9d0cb7

Browse files
committed
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 ```
1 parent 67b6b9c commit b9d0cb7

File tree

17 files changed

+182
-7
lines changed

17 files changed

+182
-7
lines changed

swift/extractor/infra/SwiftTagTraits.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ MAP(swift::Decl, DeclTag)
241241
MAP(swift::MissingMemberDecl, MissingMemberDeclTag)
242242
MAP(swift::PatternBindingDecl, PatternBindingDeclTag)
243243
MAP(swift::EnumCaseDecl, EnumCaseDeclTag)
244-
MAP(swift::UsingDecl, void) // TODO: Swift 6.2
244+
MAP(swift::UsingDecl, UsingDeclTag)
245245
MAP(swift::OperatorDecl, OperatorDeclTag)
246246
MAP(swift::InfixOperatorDecl, InfixOperatorDeclTag)
247247
MAP(swift::PrefixOperatorDecl, PrefixOperatorDeclTag)

swift/extractor/translators/DeclTranslator.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,19 @@ codeql::EnumCaseDecl DeclTranslator::translateEnumCaseDecl(const swift::EnumCase
137137
return entry;
138138
}
139139

140+
codeql::UsingDecl DeclTranslator::translateUsingDecl(const swift::UsingDecl& decl) {
141+
auto entry = createEntry(decl);
142+
switch (decl.getSpecifier()) {
143+
case swift::UsingSpecifier::MainActor:
144+
entry.is_main_actor = true;
145+
break;
146+
case swift::UsingSpecifier::Nonisolated:
147+
entry.is_nonisolated = true;
148+
break;
149+
}
150+
return entry;
151+
}
152+
140153
codeql::EnumElementDecl DeclTranslator::translateEnumElementDecl(
141154
const swift::EnumElementDecl& decl) {
142155
auto entry = createEntry(decl);

swift/extractor/translators/DeclTranslator.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class DeclTranslator : public AstTranslatorBase<DeclTranslator> {
3434
codeql::EnumDecl translateEnumDecl(const swift::EnumDecl& decl);
3535
codeql::ProtocolDecl translateProtocolDecl(const swift::ProtocolDecl& decl);
3636
codeql::EnumCaseDecl translateEnumCaseDecl(const swift::EnumCaseDecl& decl);
37+
codeql::UsingDecl translateUsingDecl(const swift::UsingDecl& decl);
3738
codeql::EnumElementDecl translateEnumElementDecl(const swift::EnumElementDecl& decl);
3839
codeql::GenericTypeParamDecl translateGenericTypeParamDecl(
3940
const swift::GenericTypeParamDecl& decl);

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/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/decl/UsingDecl.qll

Lines changed: 9 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/decl/internal/UsingDeclConstructor.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/decl/internal/UsingDeclImpl.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/generated/ParentChild.qll

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