-
Notifications
You must be signed in to change notification settings - Fork 1.7k
/
Copy pathStmtTranslator.h
51 lines (43 loc) · 2.63 KB
/
StmtTranslator.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#pragma once
#include "swift/extractor/translators/TranslatorBase.h"
#include "swift/extractor/trap/generated/stmt/TrapClasses.h"
namespace codeql {
class StmtTranslator : public AstTranslatorBase<StmtTranslator> {
public:
static constexpr std::string_view name = "stmt";
using AstTranslatorBase<StmtTranslator>::AstTranslatorBase;
using AstTranslatorBase<StmtTranslator>::translateAndEmit;
void translateAndEmit(const swift::StmtCondition& cond);
void translateAndEmit(const swift::StmtConditionElement& element);
void translateAndEmit(const swift::CaseLabelItem& labelItem);
void translateAndEmit(const swift::PoundAvailableInfo& availability);
void translateAndEmit(const swift::AvailabilitySpec& spec);
void translateAndEmit(const swift::PlatformVersionConstraintAvailabilitySpec& spec);
void translateAndEmit(const swift::OtherPlatformAvailabilitySpec& spec);
codeql::BraceStmt translateBraceStmt(const swift::BraceStmt& stmt);
codeql::ReturnStmt translateReturnStmt(const swift::ReturnStmt& stmt);
codeql::ForEachStmt translateForEachStmt(const swift::ForEachStmt& stmt);
codeql::IfStmt translateIfStmt(const swift::IfStmt& stmt);
codeql::BreakStmt translateBreakStmt(const swift::BreakStmt& stmt);
codeql::ContinueStmt translateContinueStmt(const swift::ContinueStmt& stmt);
codeql::WhileStmt translateWhileStmt(const swift::WhileStmt& stmt);
codeql::RepeatWhileStmt translateRepeatWhileStmt(const swift::RepeatWhileStmt& stmt);
codeql::DoCatchStmt translateDoCatchStmt(const swift::DoCatchStmt& stmt);
codeql::CaseStmt translateCaseStmt(const swift::CaseStmt& stmt);
codeql::GuardStmt translateGuardStmt(const swift::GuardStmt& stmt);
codeql::ThrowStmt translateThrowStmt(const swift::ThrowStmt& stmt);
codeql::DeferStmt translateDeferStmt(const swift::DeferStmt& stmt);
codeql::DoStmt translateDoStmt(const swift::DoStmt& stmt);
codeql::SwitchStmt translateSwitchStmt(const swift::SwitchStmt& stmt);
codeql::FallthroughStmt translateFallthroughStmt(const swift::FallthroughStmt& stmt);
codeql::YieldStmt translateYieldStmt(const swift::YieldStmt& stmt);
codeql::FailStmt translateFailStmt(const swift::FailStmt& stmt);
codeql::PoundAssertStmt translatePoundAssertStmt(const swift::PoundAssertStmt& stmt);
codeql::DiscardStmt translateDiscardStmt(const swift::DiscardStmt& stmt);
codeql::ThenStmt translateThenStmt(const swift::ThenStmt& stmt);
private:
void fillLabeledStmt(const swift::LabeledStmt& stmt, codeql::LabeledStmt& entry);
void fillLabeledConditionalStmt(const swift::LabeledConditionalStmt& stmt,
codeql::LabeledConditionalStmt& entry);
};
} // namespace codeql