Skip to content

Commit cc9daff

Browse files
committed
Swift: encapsulate swift::ASTVisitor functionality
1 parent 7c9fffc commit cc9daff

11 files changed

+263
-262
lines changed

swift/extractor/translators/DeclTranslator.cpp

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ codeql::PostfixOperatorDecl DeclTranslator::translatePostfixOperatorDecl(
6666
codeql::InfixOperatorDecl DeclTranslator::translateInfixOperatorDecl(
6767
const swift::InfixOperatorDecl& decl) {
6868
auto entry = createEntry(decl);
69-
entry.precedence_group = dispatcher_.fetchOptionalLabel(decl.getPrecedenceGroup());
69+
entry.precedence_group = dispatcher.fetchOptionalLabel(decl.getPrecedenceGroup());
7070
fillOperatorDecl(decl, entry);
7171
return entry;
7272
}
@@ -91,7 +91,7 @@ codeql::TopLevelCodeDecl DeclTranslator::translateTopLevelCodeDecl(
9191
const swift::TopLevelCodeDecl& decl) {
9292
auto entry = createEntry(decl);
9393
assert(decl.getBody() && "Expect top level code to have body");
94-
entry.body = dispatcher_.fetchLabel(decl.getBody());
94+
entry.body = dispatcher.fetchLabel(decl.getBody());
9595
return entry;
9696
}
9797

@@ -101,8 +101,8 @@ codeql::PatternBindingDecl DeclTranslator::translatePatternBindingDecl(
101101
for (unsigned i = 0; i < decl.getNumPatternEntries(); ++i) {
102102
auto pattern = decl.getPattern(i);
103103
assert(pattern && "Expect pattern binding decl to have all patterns");
104-
entry.patterns.push_back(dispatcher_.fetchLabel(pattern));
105-
entry.inits.push_back(dispatcher_.fetchOptionalLabel(decl.getInit(i)));
104+
entry.patterns.push_back(dispatcher.fetchLabel(pattern));
105+
entry.inits.push_back(dispatcher.fetchOptionalLabel(decl.getInit(i)));
106106
}
107107
return entry;
108108
}
@@ -161,7 +161,7 @@ std::optional<codeql::ProtocolDecl> DeclTranslator::translateProtocolDecl(
161161

162162
codeql::EnumCaseDecl DeclTranslator::translateEnumCaseDecl(const swift::EnumCaseDecl& decl) {
163163
auto entry = createEntry(decl);
164-
entry.elements = dispatcher_.fetchRepeatedLabels(decl.getElements());
164+
entry.elements = dispatcher.fetchRepeatedLabels(decl.getElements());
165165
return entry;
166166
}
167167

@@ -173,7 +173,7 @@ std::optional<codeql::EnumElementDecl> DeclTranslator::translateEnumElementDecl(
173173
}
174174
entry->name = decl.getNameStr().str();
175175
if (decl.hasParameterList()) {
176-
entry->params = dispatcher_.fetchRepeatedLabels(*decl.getParameterList());
176+
entry->params = dispatcher.fetchRepeatedLabels(*decl.getParameterList());
177177
}
178178
fillValueDecl(decl, *entry);
179179
return entry;
@@ -235,17 +235,17 @@ std::optional<codeql::SubscriptDecl> DeclTranslator::translateSubscriptDecl(
235235
if (!entry) {
236236
return std::nullopt;
237237
}
238-
entry->element_type = dispatcher_.fetchLabel(decl.getElementInterfaceType());
238+
entry->element_type = dispatcher.fetchLabel(decl.getElementInterfaceType());
239239
if (auto indices = decl.getIndices()) {
240-
entry->params = dispatcher_.fetchRepeatedLabels(*indices);
240+
entry->params = dispatcher.fetchRepeatedLabels(*indices);
241241
}
242242
fillAbstractStorageDecl(decl, *entry);
243243
return entry;
244244
}
245245

246246
codeql::ExtensionDecl DeclTranslator::translateExtensionDecl(const swift::ExtensionDecl& decl) {
247247
auto entry = createEntry(decl);
248-
entry.extended_type_decl = dispatcher_.fetchLabel(decl.getExtendedNominal());
248+
entry.extended_type_decl = dispatcher.fetchLabel(decl.getExtendedNominal());
249249
fillGenericContext(decl, entry);
250250
fillIterableDeclContext(decl, entry);
251251
return entry;
@@ -254,8 +254,8 @@ codeql::ExtensionDecl DeclTranslator::translateExtensionDecl(const swift::Extens
254254
codeql::ImportDecl DeclTranslator::translateImportDecl(const swift::ImportDecl& decl) {
255255
auto entry = createEntry(decl);
256256
entry.is_exported = decl.isExported();
257-
entry.imported_module = dispatcher_.fetchOptionalLabel(decl.getModule());
258-
entry.declarations = dispatcher_.fetchRepeatedLabels(decl.getDecls());
257+
entry.imported_module = dispatcher.fetchOptionalLabel(decl.getModule());
258+
entry.declarations = dispatcher.fetchRepeatedLabels(decl.getDecls());
259259
return entry;
260260
}
261261

@@ -271,12 +271,12 @@ std::optional<codeql::ModuleDecl> DeclTranslator::translateModuleDecl(
271271
llvm::SmallVector<swift::ImportedModule> imports;
272272
decl.getImportedModules(imports, K::Default);
273273
for (const auto& import : imports) {
274-
entry->imported_modules.push_back(dispatcher_.fetchLabel(import.importedModule));
274+
entry->imported_modules.push_back(dispatcher.fetchLabel(import.importedModule));
275275
}
276276
imports.clear();
277277
decl.getImportedModules(imports, K::Exported);
278278
for (const auto& import : imports) {
279-
entry->exported_modules.push_back(dispatcher_.fetchLabel(import.importedModule));
279+
entry->exported_modules.push_back(dispatcher.fetchLabel(import.importedModule));
280280
}
281281
fillTypeDecl(decl, *entry);
282282
return entry;
@@ -316,10 +316,10 @@ void DeclTranslator::fillAbstractFunctionDecl(const swift::AbstractFunctionDecl&
316316
codeql::AbstractFunctionDecl& entry) {
317317
assert(decl.hasParameterList() && "Expect functions to have a parameter list");
318318
entry.name = !decl.hasName() ? "(unnamed function decl)" : constructName(decl.getName());
319-
entry.body = dispatcher_.fetchOptionalLabel(decl.getBody());
320-
entry.params = dispatcher_.fetchRepeatedLabels(*decl.getParameters());
319+
entry.body = dispatcher.fetchOptionalLabel(decl.getBody());
320+
entry.params = dispatcher.fetchRepeatedLabels(*decl.getParameters());
321321
auto self = const_cast<swift::ParamDecl* const>(decl.getImplicitSelfDecl());
322-
entry.self_param = dispatcher_.fetchOptionalLabel(self);
322+
entry.self_param = dispatcher.fetchOptionalLabel(self);
323323
fillValueDecl(decl, entry);
324324
fillGenericContext(decl, entry);
325325
}
@@ -333,32 +333,32 @@ void DeclTranslator::fillTypeDecl(const swift::TypeDecl& decl, codeql::TypeDecl&
333333
entry.name = decl.getNameStr().str();
334334
for (auto& typeLoc : decl.getInherited()) {
335335
if (auto type = typeLoc.getType()) {
336-
entry.base_types.push_back(dispatcher_.fetchLabel(type));
336+
entry.base_types.push_back(dispatcher.fetchLabel(type));
337337
}
338338
}
339339
fillValueDecl(decl, entry);
340340
}
341341

342342
void DeclTranslator::fillIterableDeclContext(const swift::IterableDeclContext& decl,
343343
codeql::IterableDeclContext& entry) {
344-
entry.members = dispatcher_.fetchRepeatedLabels(decl.getAllMembers());
344+
entry.members = dispatcher.fetchRepeatedLabels(decl.getAllMembers());
345345
}
346346

347347
void DeclTranslator::fillVarDecl(const swift::VarDecl& decl, codeql::VarDecl& entry) {
348348
entry.name = decl.getNameStr().str();
349-
entry.type = dispatcher_.fetchLabel(decl.getType());
350-
entry.parent_pattern = dispatcher_.fetchOptionalLabel(decl.getParentPattern());
351-
entry.parent_initializer = dispatcher_.fetchOptionalLabel(decl.getParentInitializer());
349+
entry.type = dispatcher.fetchLabel(decl.getType());
350+
entry.parent_pattern = dispatcher.fetchOptionalLabel(decl.getParentPattern());
351+
entry.parent_initializer = dispatcher.fetchOptionalLabel(decl.getParentInitializer());
352352
if (decl.hasAttachedPropertyWrapper()) {
353353
entry.attached_property_wrapper_type =
354-
dispatcher_.fetchOptionalLabel(decl.getPropertyWrapperBackingPropertyType());
354+
dispatcher.fetchOptionalLabel(decl.getPropertyWrapperBackingPropertyType());
355355
}
356356
fillAbstractStorageDecl(decl, entry);
357357
}
358358

359359
void DeclTranslator::fillNominalTypeDecl(const swift::NominalTypeDecl& decl,
360360
codeql::NominalTypeDecl& entry) {
361-
entry.type = dispatcher_.fetchLabel(decl.getDeclaredType());
361+
entry.type = dispatcher.fetchLabel(decl.getDeclaredType());
362362
fillGenericContext(decl, entry);
363363
fillIterableDeclContext(decl, entry);
364364
fillTypeDecl(decl, entry);
@@ -367,25 +367,25 @@ void DeclTranslator::fillNominalTypeDecl(const swift::NominalTypeDecl& decl,
367367
void DeclTranslator::fillGenericContext(const swift::GenericContext& decl,
368368
codeql::GenericContext& entry) {
369369
if (auto params = decl.getGenericParams()) {
370-
entry.generic_type_params = dispatcher_.fetchRepeatedLabels(*params);
370+
entry.generic_type_params = dispatcher.fetchRepeatedLabels(*params);
371371
}
372372
}
373373

374374
void DeclTranslator::fillValueDecl(const swift::ValueDecl& decl, codeql::ValueDecl& entry) {
375375
assert(decl.getInterfaceType() && "Expect ValueDecl to have InterfaceType");
376-
entry.interface_type = dispatcher_.fetchLabel(decl.getInterfaceType());
376+
entry.interface_type = dispatcher.fetchLabel(decl.getInterfaceType());
377377
}
378378

379379
void DeclTranslator::fillAbstractStorageDecl(const swift::AbstractStorageDecl& decl,
380380
codeql::AbstractStorageDecl& entry) {
381-
entry.accessor_decls = dispatcher_.fetchRepeatedLabels(decl.getAllAccessors());
381+
entry.accessor_decls = dispatcher.fetchRepeatedLabels(decl.getAllAccessors());
382382
fillValueDecl(decl, entry);
383383
}
384384

385385
codeql::IfConfigDecl DeclTranslator::translateIfConfigDecl(const swift::IfConfigDecl& decl) {
386386
auto entry = createEntry(decl);
387387
if (auto activeClause = decl.getActiveClause()) {
388-
entry.active_elements = dispatcher_.fetchRepeatedLabels(activeClause->Elements);
388+
entry.active_elements = dispatcher.fetchRepeatedLabels(activeClause->Elements);
389389
}
390390
return entry;
391391
}

swift/extractor/translators/DeclTranslator.h

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ namespace codeql {
1414
class DeclTranslator : public AstTranslatorBase<DeclTranslator> {
1515
public:
1616
using AstTranslatorBase<DeclTranslator>::AstTranslatorBase;
17-
using AstTranslatorBase<DeclTranslator>::visit;
1817

1918
std::optional<codeql::ConcreteFuncDecl> translateFuncDecl(const swift::FuncDecl& decl);
2019
std::optional<codeql::ConstructorDecl> translateConstructorDecl(
@@ -64,9 +63,9 @@ class DeclTranslator : public AstTranslatorBase<DeclTranslator> {
6463

6564
template <typename D>
6665
std::optional<TrapClassOf<D>> createNamedEntry(const D& decl) {
67-
auto id = dispatcher_.assignNewLabel(decl, mangledName(decl));
66+
auto id = dispatcher.assignNewLabel(decl, mangledName(decl));
6867
std::optional<TrapClassOf<D>> entry;
69-
if (dispatcher_.shouldEmitDeclBody(decl)) {
68+
if (dispatcher.shouldEmitDeclBody(decl)) {
7069
entry.emplace(id);
7170
fillDecl(decl, *entry);
7271
}
@@ -75,13 +74,13 @@ class DeclTranslator : public AstTranslatorBase<DeclTranslator> {
7574

7675
template <typename D>
7776
TrapClassOf<D> createEntry(const D& decl) {
78-
TrapClassOf<D> entry{dispatcher_.template assignNewLabel(decl)};
77+
TrapClassOf<D> entry{dispatcher.template assignNewLabel(decl)};
7978
fillDecl(decl, entry);
8079
return entry;
8180
}
8281

8382
void fillDecl(const swift::Decl& decl, codeql::Decl& entry) {
84-
entry.module = dispatcher_.fetchLabel(decl.getModuleContext());
83+
entry.module = dispatcher.fetchLabel(decl.getModuleContext());
8584
}
8685

8786
swift::Mangle::ASTMangler mangler;

0 commit comments

Comments
 (0)