@@ -22,31 +22,31 @@ std::string constructName(const swift::DeclName& declName) {
2222}
2323} // namespace
2424
25- std::variant<codeql::ConcreteFuncDecl, codeql::ConcreteFuncDeclsTrap>
26- DeclVisitor::translateFuncDecl (const swift::FuncDecl& decl) {
27- auto ret = createNamedEntryOr<ConcreteFuncDeclsTrap>(decl);
28- if (auto entry = get_if<ConcreteFuncDecl>(&ret)) {
25+ std::optional<codeql::ConcreteFuncDecl> DeclVisitor::translateFuncDecl (
26+ const swift::FuncDecl& decl) {
27+ if (auto entry = createNamedEntry (decl)) {
2928 fillAbstractFunctionDecl (decl, *entry);
29+ return entry;
3030 }
31- return ret ;
31+ return std:: nullopt ;
3232}
3333
34- std::variant<codeql::ConstructorDecl, codeql::ConstructorDeclsTrap>
35- DeclVisitor::translateConstructorDecl (const swift::ConstructorDecl& decl) {
36- auto ret = createNamedEntryOr<ConstructorDeclsTrap>(decl);
37- if (auto entry = get_if<ConstructorDecl>(&ret)) {
34+ std::optional<codeql::ConstructorDecl> DeclVisitor::translateConstructorDecl (
35+ const swift::ConstructorDecl& decl) {
36+ if (auto entry = createNamedEntry (decl)) {
3837 fillAbstractFunctionDecl (decl, *entry);
38+ return entry;
3939 }
40- return ret ;
40+ return std:: nullopt ;
4141}
4242
43- std::variant<codeql::DestructorDecl, codeql::DestructorDeclsTrap>
44- DeclVisitor::translateDestructorDecl (const swift::DestructorDecl& decl) {
45- auto ret = createNamedEntryOr<DestructorDeclsTrap>(decl);
46- if (auto entry = get_if<DestructorDecl>(&ret)) {
43+ std::optional<codeql::DestructorDecl> DeclVisitor::translateDestructorDecl (
44+ const swift::DestructorDecl& decl) {
45+ if (auto entry = createNamedEntry (decl)) {
4746 fillAbstractFunctionDecl (decl, *entry);
47+ return entry;
4848 }
49- return ret ;
49+ return std:: nullopt ;
5050}
5151
5252codeql::PrefixOperatorDecl DeclVisitor::translatePrefixOperatorDecl (
@@ -124,40 +124,37 @@ std::optional<codeql::ConcreteVarDecl> DeclVisitor::translateVarDecl(const swift
124124 return entry;
125125}
126126
127- std::variant<codeql::StructDecl, codeql::StructDeclsTrap> DeclVisitor::translateStructDecl (
128- const swift::StructDecl& decl) {
129- auto ret = createNamedEntryOr<StructDeclsTrap>(decl);
130- if (auto entry = get_if<StructDecl>(&ret)) {
127+ std::optional<codeql::StructDecl> DeclVisitor::translateStructDecl (const swift::StructDecl& decl) {
128+ if (auto entry = createNamedEntry (decl)) {
131129 fillNominalTypeDecl (decl, *entry);
130+ return entry;
132131 }
133- return ret ;
132+ return std:: nullopt ;
134133}
135134
136- std::variant<codeql::ClassDecl, codeql::ClassDeclsTrap> DeclVisitor::translateClassDecl (
137- const swift::ClassDecl& decl) {
138- auto ret = createNamedEntryOr<ClassDeclsTrap>(decl);
139- if (auto entry = get_if<ClassDecl>(&ret)) {
135+ std::optional<codeql::ClassDecl> DeclVisitor::translateClassDecl (const swift::ClassDecl& decl) {
136+ if (auto entry = createNamedEntry (decl)) {
140137 fillNominalTypeDecl (decl, *entry);
138+ return entry;
141139 }
142- return ret ;
140+ return std:: nullopt ;
143141}
144142
145- std::variant<codeql::EnumDecl, codeql::EnumDeclsTrap> DeclVisitor::translateEnumDecl (
146- const swift::EnumDecl& decl) {
147- auto ret = createNamedEntryOr<EnumDeclsTrap>(decl);
148- if (auto entry = get_if<EnumDecl>(&ret)) {
143+ std::optional<codeql::EnumDecl> DeclVisitor::translateEnumDecl (const swift::EnumDecl& decl) {
144+ if (auto entry = createNamedEntry (decl)) {
149145 fillNominalTypeDecl (decl, *entry);
146+ return entry;
150147 }
151- return ret ;
148+ return std:: nullopt ;
152149}
153150
154- std::variant <codeql::ProtocolDecl, codeql::ProtocolDeclsTrap > DeclVisitor::translateProtocolDecl (
151+ std::optional <codeql::ProtocolDecl> DeclVisitor::translateProtocolDecl (
155152 const swift::ProtocolDecl& decl) {
156- auto ret = createNamedEntryOr<ProtocolDeclsTrap>(decl);
157- if (auto entry = get_if<ProtocolDecl>(&ret)) {
153+ if (auto entry = createNamedEntry (decl)) {
158154 fillNominalTypeDecl (decl, *entry);
155+ return entry;
159156 }
160- return ret ;
157+ return std:: nullopt ;
161158}
162159
163160codeql::EnumCaseDecl DeclVisitor::translateEnumCaseDecl (const swift::EnumCaseDecl& decl) {
@@ -166,17 +163,18 @@ codeql::EnumCaseDecl DeclVisitor::translateEnumCaseDecl(const swift::EnumCaseDec
166163 return entry;
167164}
168165
169- std::variant<codeql::EnumElementDecl, codeql::EnumElementDeclsTrap>
170- DeclVisitor::translateEnumElementDecl (const swift::EnumElementDecl& decl) {
171- auto ret = createNamedEntryOr<EnumElementDeclsTrap>(decl);
172- std::visit ([&](auto & entry) { entry.name = decl.getNameStr ().str (); }, ret);
173- if (auto entry = get_if<EnumElementDecl>(&ret)) {
174- if (decl.hasParameterList ()) {
175- entry->params = dispatcher_.fetchRepeatedLabels (*decl.getParameterList ());
176- }
177- fillValueDecl (decl, *entry);
166+ std::optional<codeql::EnumElementDecl> DeclVisitor::translateEnumElementDecl (
167+ const swift::EnumElementDecl& decl) {
168+ auto entry = createNamedEntry (decl);
169+ if (!entry) {
170+ return std::nullopt ;
178171 }
179- return ret;
172+ entry->name = decl.getNameStr ().str ();
173+ if (decl.hasParameterList ()) {
174+ entry->params = dispatcher_.fetchRepeatedLabels (*decl.getParameterList ());
175+ }
176+ fillValueDecl (decl, *entry);
177+ return entry;
180178}
181179
182180codeql::GenericTypeParamDecl DeclVisitor::translateGenericTypeParamDecl (
@@ -187,45 +185,46 @@ codeql::GenericTypeParamDecl DeclVisitor::translateGenericTypeParamDecl(
187185 return entry;
188186}
189187
190- std::variant<codeql::AssociatedTypeDecl, codeql::AssociatedTypeDeclsTrap>
191- DeclVisitor::translateAssociatedTypeDecl (const swift::AssociatedTypeDecl& decl) {
192- auto ret = createNamedEntryOr<AssociatedTypeDeclsTrap>(decl);
193- if (auto entry = get_if<AssociatedTypeDecl>(&ret)) {
188+ std::optional<codeql::AssociatedTypeDecl> DeclVisitor::translateAssociatedTypeDecl (
189+ const swift::AssociatedTypeDecl& decl) {
190+ if (auto entry = createNamedEntry (decl)) {
194191 fillTypeDecl (decl, *entry);
192+ return entry;
195193 }
196- return ret ;
194+ return std:: nullopt ;
197195}
198196
199- std::variant <codeql::TypeAliasDecl, codeql::TypeAliasDeclsTrap > DeclVisitor::translateTypeAliasDecl (
197+ std::optional <codeql::TypeAliasDecl> DeclVisitor::translateTypeAliasDecl (
200198 const swift::TypeAliasDecl& decl) {
201- auto ret = createNamedEntryOr<TypeAliasDeclsTrap>(decl);
202- if (auto entry = get_if<TypeAliasDecl>(&ret)) {
199+ if (auto entry = createNamedEntry (decl)) {
203200 fillTypeDecl (decl, *entry);
201+ return entry;
204202 }
205- return ret ;
203+ return std:: nullopt ;
206204}
207205
208- std::variant <codeql::AccessorDecl, codeql::AccessorDeclsTrap > DeclVisitor::translateAccessorDecl (
206+ std::optional <codeql::AccessorDecl> DeclVisitor::translateAccessorDecl (
209207 const swift::AccessorDecl& decl) {
210- auto ret = createNamedEntryOr<AccessorDeclsTrap> (decl);
211- if (auto entry = get_if<AccessorDecl>(&ret) ) {
212- switch (decl. getAccessorKind ()) {
213- case swift::AccessorKind::Get:
214- entry-> is_getter = true ;
215- break ;
216- case swift::AccessorKind::Set:
217- entry-> is_setter = true ;
218- break ;
219- case swift::AccessorKind::WillSet:
220- entry-> is_will_set = true ;
221- break ;
222- case swift::AccessorKind::DidSet:
223- entry-> is_did_set = true ;
224- break ;
225- }
226- fillAbstractFunctionDecl (decl, *entry) ;
208+ auto entry = createNamedEntry (decl);
209+ if (! entry) {
210+ return std:: nullopt ;
211+ }
212+ switch (decl. getAccessorKind ()) {
213+ case swift::AccessorKind::Get:
214+ entry-> is_getter = true ;
215+ break ;
216+ case swift::AccessorKind::Set:
217+ entry-> is_setter = true ;
218+ break ;
219+ case swift::AccessorKind::WillSet:
220+ entry-> is_will_set = true ;
221+ break ;
222+ case swift::AccessorKind::DidSet:
223+ entry-> is_did_set = true ;
224+ break ;
227225 }
228- return ret;
226+ fillAbstractFunctionDecl (decl, *entry);
227+ return entry;
229228}
230229
231230std::optional<codeql::SubscriptDecl> DeclVisitor::translateSubscriptDecl (
0 commit comments