mirror of
https://github.com/github/codeql.git
synced 2025-12-17 01:03:14 +01:00
Swift: extract types for patterns
This commit is contained in:
@@ -3,40 +3,42 @@
|
||||
namespace codeql {
|
||||
|
||||
codeql::NamedPattern PatternTranslator::translateNamedPattern(const swift::NamedPattern& pattern) {
|
||||
auto entry = dispatcher.createEntry(pattern);
|
||||
|
||||
auto entry = createPatternEntry(pattern);
|
||||
entry.name = pattern.getNameStr().str();
|
||||
entry.var_decl = dispatcher.fetchLabel(pattern.getDecl());
|
||||
return entry;
|
||||
}
|
||||
|
||||
codeql::TypedPattern PatternTranslator::translateTypedPattern(const swift::TypedPattern& pattern) {
|
||||
auto entry = dispatcher.createEntry(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 = dispatcher.createEntry(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 = dispatcher.createEntry(pattern);
|
||||
auto entry = createPatternEntry(pattern);
|
||||
return entry;
|
||||
}
|
||||
|
||||
codeql::BindingPattern PatternTranslator::translateBindingPattern(
|
||||
const swift::BindingPattern& pattern) {
|
||||
auto entry = dispatcher.createEntry(pattern);
|
||||
auto entry = createPatternEntry(pattern);
|
||||
entry.sub_pattern = dispatcher.fetchLabel(pattern.getSubPattern());
|
||||
return entry;
|
||||
}
|
||||
|
||||
codeql::EnumElementPattern PatternTranslator::translateEnumElementPattern(
|
||||
const swift::EnumElementPattern& pattern) {
|
||||
auto entry = dispatcher.createEntry(pattern);
|
||||
auto entry = createPatternEntry(pattern);
|
||||
entry.element = dispatcher.fetchLabel(pattern.getElementDecl());
|
||||
entry.sub_pattern = dispatcher.fetchOptionalLabel(pattern.getSubPattern());
|
||||
return entry;
|
||||
@@ -44,13 +46,13 @@ codeql::EnumElementPattern PatternTranslator::translateEnumElementPattern(
|
||||
|
||||
codeql::OptionalSomePattern PatternTranslator::translateOptionalSomePattern(
|
||||
const swift::OptionalSomePattern& pattern) {
|
||||
auto entry = dispatcher.createEntry(pattern);
|
||||
auto entry = createPatternEntry(pattern);
|
||||
entry.sub_pattern = dispatcher.fetchLabel(pattern.getSubPattern());
|
||||
return entry;
|
||||
}
|
||||
|
||||
codeql::IsPattern PatternTranslator::translateIsPattern(const swift::IsPattern& pattern) {
|
||||
auto entry = dispatcher.createEntry(pattern);
|
||||
auto entry = createPatternEntry(pattern);
|
||||
entry.cast_type_repr =
|
||||
dispatcher.fetchOptionalLabel(pattern.getCastTypeRepr(), pattern.getCastType());
|
||||
entry.sub_pattern = dispatcher.fetchOptionalLabel(pattern.getSubPattern());
|
||||
@@ -58,7 +60,7 @@ codeql::IsPattern PatternTranslator::translateIsPattern(const swift::IsPattern&
|
||||
}
|
||||
|
||||
codeql::ExprPattern PatternTranslator::translateExprPattern(const swift::ExprPattern& pattern) {
|
||||
auto entry = dispatcher.createEntry(pattern);
|
||||
auto entry = createPatternEntry(pattern);
|
||||
if (auto match = pattern.getMatchExpr()) {
|
||||
entry.sub_expr = dispatcher.fetchLabel(match);
|
||||
} else {
|
||||
@@ -68,13 +70,13 @@ codeql::ExprPattern PatternTranslator::translateExprPattern(const swift::ExprPat
|
||||
}
|
||||
|
||||
codeql::ParenPattern PatternTranslator::translateParenPattern(const swift::ParenPattern& pattern) {
|
||||
auto entry = dispatcher.createEntry(pattern);
|
||||
auto entry = createPatternEntry(pattern);
|
||||
entry.sub_pattern = dispatcher.fetchLabel(pattern.getSubPattern());
|
||||
return entry;
|
||||
}
|
||||
|
||||
codeql::BoolPattern PatternTranslator::translateBoolPattern(const swift::BoolPattern& pattern) {
|
||||
auto entry = dispatcher.createEntry(pattern);
|
||||
auto entry = createPatternEntry(pattern);
|
||||
entry.value = pattern.getValue();
|
||||
return entry;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user