Files
codeql/swift/extractor/translators/PatternTranslator.cpp
Paolo Tranquilli 33b6ce7365 Swift: update formatting to clang-format 17.0.6
Also, added a format check in `swift.yml`.
2024-01-25 13:58:14 +01:00

83 lines
3.0 KiB
C++

#include "swift/extractor/translators/PatternTranslator.h"
namespace codeql {
codeql::NamedPattern PatternTranslator::translateNamedPattern(const swift::NamedPattern& pattern) {
auto entry = createPatternEntry(pattern);
entry.var_decl = dispatcher.fetchLabel(pattern.getDecl());
return entry;
}
codeql::TypedPattern PatternTranslator::translateTypedPattern(const swift::TypedPattern& pattern) {
auto entry = createPatternEntry(pattern);
entry.sub_pattern = dispatcher.fetchLabel(pattern.getSubPattern());
entry.type_repr = dispatcher.fetchOptionalLabel(pattern.getTypeRepr(), pattern.getType());
return entry;
}
codeql::TuplePattern PatternTranslator::translateTuplePattern(const swift::TuplePattern& pattern) {
auto entry = createPatternEntry(pattern);
for (const auto& p : pattern.getElements()) {
entry.elements.push_back(dispatcher.fetchLabel(p.getPattern()));
}
return entry;
}
codeql::AnyPattern PatternTranslator::translateAnyPattern(const swift::AnyPattern& pattern) {
auto entry = createPatternEntry(pattern);
return entry;
}
codeql::BindingPattern PatternTranslator::translateBindingPattern(
const swift::BindingPattern& pattern) {
auto entry = createPatternEntry(pattern);
entry.sub_pattern = dispatcher.fetchLabel(pattern.getSubPattern());
return entry;
}
codeql::EnumElementPattern PatternTranslator::translateEnumElementPattern(
const swift::EnumElementPattern& pattern) {
auto entry = createPatternEntry(pattern);
entry.element = dispatcher.fetchLabel(pattern.getElementDecl());
entry.sub_pattern = dispatcher.fetchOptionalLabel(pattern.getSubPattern());
return entry;
}
codeql::OptionalSomePattern PatternTranslator::translateOptionalSomePattern(
const swift::OptionalSomePattern& pattern) {
auto entry = createPatternEntry(pattern);
entry.sub_pattern = dispatcher.fetchLabel(pattern.getSubPattern());
return entry;
}
codeql::IsPattern PatternTranslator::translateIsPattern(const swift::IsPattern& pattern) {
auto entry = createPatternEntry(pattern);
entry.cast_type_repr =
dispatcher.fetchOptionalLabel(pattern.getCastTypeRepr(), pattern.getCastType());
entry.sub_pattern = dispatcher.fetchOptionalLabel(pattern.getSubPattern());
return entry;
}
codeql::ExprPattern PatternTranslator::translateExprPattern(const swift::ExprPattern& pattern) {
auto entry = createPatternEntry(pattern);
if (auto match = pattern.getMatchExpr()) {
entry.sub_expr = dispatcher.fetchLabel(match);
} else {
entry.sub_expr = dispatcher.fetchLabel(pattern.getSubExpr());
}
return entry;
}
codeql::ParenPattern PatternTranslator::translateParenPattern(const swift::ParenPattern& pattern) {
auto entry = createPatternEntry(pattern);
entry.sub_pattern = dispatcher.fetchLabel(pattern.getSubPattern());
return entry;
}
codeql::BoolPattern PatternTranslator::translateBoolPattern(const swift::BoolPattern& pattern) {
auto entry = createPatternEntry(pattern);
entry.value = pattern.getValue();
return entry;
}
} // namespace codeql