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);