Skip to content

Lebedeva Ksenia Lab 1 Var 4 #14

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 102 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
84e732d
kulikov lab1 (#1)
AveZorgen Mar 4, 2024
5a86d17
Иванов Никита ФИ3. Лабораторная работа № 1. (#2)
Atikin-NT Mar 10, 2024
d6f98a1
Zakharov Artem. Lab 1. Option 4. (#4)
un1i Mar 14, 2024
dc4b1b7
Sharapov Georgiy. First Lab. (#3)
nol0n Mar 15, 2024
84d74da
Kuznetsov Artyom (Laboratory work №1 option №1) (#5)
Kuznetsov-Artyom Mar 15, 2024
d54cd5d
Soloninko Andrey. Lab №1, var 1 (#7)
Manymoera Mar 15, 2024
847c794
Fix clang-format check (#11)
aobolensk Mar 15, 2024
a2de4ee
Volodin Evgeniy. Lab №1. Option №1. (#9)
evldn Mar 15, 2024
8ac9ea3
Sadikov Damir. Lab №1. Var 3 (#12)
Damlrca Mar 17, 2024
9631799
Fix for Volodin Evgeniy. Lab №1. Option №1. (#14)
evldn Mar 17, 2024
74dd97f
Fix clang-format error code (#23)
aobolensk Mar 17, 2024
e47fbee
Turn back clang-format's output in check log (#25)
m-ly4 Mar 18, 2024
8f9a2ad
Korablev Nikita. Lab №1. Option №4. (#8)
NikitaKorablev Mar 18, 2024
579a90c
Bodrov Daniil. Lab 1. Task 1 (#21)
overinvest Mar 18, 2024
c4295cb
Kulagin Aleksandr / lab1 / var 2 (#24)
mahbhlddnhakkh Mar 18, 2024
a9aa535
Kostin Artem. Lab #1. Var 3. (#15)
aartyomm Mar 18, 2024
e894020
Fixed CMakeFiles for Korablev Nikita's plugin (#30)
NikitaKorablev Mar 18, 2024
618a1e9
Первая лабораторная, вариант 1, Бендюжко Татьяна (#16)
Tatiana567 Mar 18, 2024
a8f384e
Polozov Vladislav Lab1 Var3 (#10)
Mortus19 Mar 18, 2024
b1d0b2d
Durandin Vladimir. Lab №1. Option №2 (#20)
Sturmannn Mar 18, 2024
28c5e02
Petrov Maksim. Lab 1. Var 3. (#19)
soileks Mar 18, 2024
765beff
Ivan_Vasilev_lab_1_var_3 (#22)
AdAndRoll Mar 19, 2024
d1fe1c0
Kulagin Aleksandr / lab1 / var 2 IMPROVEMENT (#33)
mahbhlddnhakkh Mar 19, 2024
ca90c8b
Shishkina Valeriya. Lab #1. Var #1. (#18)
ShLera04 Mar 19, 2024
eb203b6
Kulaev Evgeny. Laboratory work №1. Option №2 (#6)
zcotti Mar 19, 2024
3bc0b3b
Alexseev Danila. 1 lab option №3 (#17)
lxvdnl Mar 19, 2024
352b34e
Nogin Denis. Lab 1. Task 2. (#26)
Gr0miLa Mar 21, 2024
be5582a
Savotina Valeria, Lab №1, var: 2. (#27)
Savotina Mar 21, 2024
c7a2671
Veselov Ilya lab 1 var 1 (#36)
spells39 Mar 21, 2024
548556e
Veselov Mikhail. Lab 1. Var 4. (#32)
Puchiglass Mar 21, 2024
c8455cf
Lysanova Julia, 1 lab, 3 var (#43)
bliiinch Mar 21, 2024
cf70176
Kostanyan Arsen. Lab 1, Var 1. (#29)
arkostaa Mar 23, 2024
fcdc419
Kosarev Egor. Lab1.Var2 (#34)
EgorKosarevv Mar 24, 2024
57bd3d9
Borovkov Sergey Lab1, Var 4 (#45)
slx52 Mar 24, 2024
4557f2e
Pushkarev Ilya. Lab 1. Var 2. (#50)
oleg212 Mar 24, 2024
3ba7aee
Prokofev Kirill Lab1 Var4 (#49)
Kirill23323 Mar 24, 2024
83338b0
Kruglov Alexey. Lab 1. Var 4. (#46)
KrYackI Mar 24, 2024
cd9ba08
Balyasov Ivan. Lab 1 - var 4. (#31)
DiPirs Mar 25, 2024
5faeb92
Safronov mikhail. Lab 1. Var 1. (#41)
yourd8ne Mar 26, 2024
a6141d3
Kazantsev Evgeny. Lab 1, var 3. (#40)
neotouch1 Mar 28, 2024
f5dec44
Kuznetsov Artyom lab2 (option 1) (#54)
Kuznetsov-Artyom Mar 29, 2024
02bf4e0
kulikov lab2 var 3 (#53)
AveZorgen Mar 29, 2024
7ce4ca1
Sharapov Georgiy. Lab 2. (#56)
nol0n Mar 30, 2024
0a52e2c
Vetoshnikova Ekaterina Lab 1 Var 1 (#52)
Veto1234-ii Mar 31, 2024
0dfebda
Suren Simonyan, Lab 1, Var 2 (#35)
SSuren4ik Mar 31, 2024
eed52ff
Soloninko Andrey. Lab 2, opt. 1 (#63)
Manymoera Mar 31, 2024
a4da973
Kruglov Alexey. Lab 2. Var 4 (#68)
KrYackI Apr 1, 2024
31d01a6
Kulagin Aleksandr / lab 2 / var 2 (#59)
mahbhlddnhakkh Apr 1, 2024
c7dc20d
Ivanov Nikita. Lab 2. Var 3. (#61)
Atikin-NT Apr 2, 2024
ad34ab5
Kostanyan Arsen. Lab 2. Var 1 (#69)
arkostaa Apr 2, 2024
56bbfb2
Volodin Evgeniy. Lab №2. Option №1. (#70)
evldn Apr 2, 2024
49080ee
Kostin Artem. Lab #2. Var 3. (#71)
aartyomm Apr 2, 2024
636c020
Hotfix for failed tests (#84)
m-ly4 Apr 3, 2024
19863c5
Бендюжко лабораторная 2 вариант 1 (#80)
Tatiana567 Apr 3, 2024
54c7b12
Polozov Vladislav Lab 2. Var 3. (#78)
Mortus19 Apr 3, 2024
b109db4
Alexseev Danila lab2 var3 (#66)
lxvdnl Apr 3, 2024
3043877
Zakharov Artem. Lab 2. Option 4. (#81)
un1i Apr 3, 2024
e0c8ef5
Sadikov Damir. Lab 2. Var 3 (#73)
Damlrca Apr 3, 2024
f39e0d3
Korablev Nikita. Lab №2. Option №4. (#76)
NikitaKorablev Apr 4, 2024
695977c
Ionova Ekaterina / Lab 2 / Var 1 (#77)
IonovvA Apr 4, 2024
94e3377
Bodrov Daniil. Lab 2. Var 1. Instrument Function Pass (#87)
overinvest Apr 5, 2024
66b2dfb
Veselov Mikhail / Lab 2 / Option 4 (#74)
Puchiglass Apr 5, 2024
38d81c1
Travin Maksim / Lab 1 / var 2 (#72)
TMworking Apr 14, 2024
35dceb1
Prokofev Kirill lab2 var4 (#92)
Kirill23323 Apr 14, 2024
c76fdd6
Petrov Maksim. Lab 2. Var 3 (#95)
soileks Apr 14, 2024
3e470bf
Vyunov Danila. Lab 2. Option 2. (#79)
vyunolbek Apr 16, 2024
315e9f8
Durandin Vladimir. Lab 2. Option 2. (#94)
Sturmannn Apr 17, 2024
d0c2323
Shishkina Valeriya. Lab#2. Var#1 (#96)
ShLera04 Apr 19, 2024
26f878c
Sredneva Anastasiya. Lab 2. Var 3. (#97)
nastosimys Apr 23, 2024
81cffa6
Fix deps for veselov's plugin for lab2 (#112)
m-ly4 Apr 24, 2024
51979bd
Simonyan Suren. Lab 2. Var 2 (#98)
SSuren4ik Apr 24, 2024
eb75858
Sharapov Georgiy. Lab 3. Option 1. (#100)
nol0n Apr 25, 2024
3f58f8f
Kulikov Artem. Lab 3. Var 1 (#99)
AveZorgen Apr 25, 2024
90d7dd9
add patch (#117)
Savotina Apr 25, 2024
cfb90b2
Kuznetsov Artyom lab 3 (option 1) (#103)
Kuznetsov-Artyom Apr 25, 2024
1fc92a6
Ivanov Nikita. Lab 3. Option 1. (#101)
Atikin-NT Apr 26, 2024
737c0b1
Zakharov Artem. Lab 3. Option 2. (#102)
un1i Apr 26, 2024
70b2040
Volodin Evgeniy. Lab №3 Option №1. (#108)
evldn Apr 26, 2024
640a869
Fix help in 1st lab
arkostaa Apr 26, 2024
760fdc1
Pushkarev Ilya \ Lab2 \ Var 2 (#88)
oleg212 Apr 26, 2024
e483027
Veselov Mikhail / Lab 3 / Option 2 (#121)
Puchiglass Apr 26, 2024
a26b6b4
Soloninko Andrey. Lab 3, opt 1 (#118)
Manymoera Apr 26, 2024
976488e
Бендюжко лабораторная 3 вариант 1 (#110)
Tatiana567 Apr 26, 2024
77fbc2c
Shishkina Valeriya. Lab #3. Var #2 (#124)
ShLera04 Apr 26, 2024
7beebbf
Savotina Valeria, Lab №3, var: 2 (#120)
Savotina Apr 26, 2024
ffa132b
Bodrov Daniil. Lab 3. Var 2 (#114)
overinvest Apr 27, 2024
6cc58c3
Nogin Denis. Lab 3. Task 2. (#115)
Gr0miLa Apr 27, 2024
088292b
Kulaev Evgeny. Laboratory work №3 Option №2 (#116)
zcotti Apr 27, 2024
0a861b8
Petrov Maksim. Lab 3. Option 1 (#106)
soileks Apr 28, 2024
cad1311
Kostin Artem. Lab #3. Var 1. (#119)
aartyomm Apr 29, 2024
77348a6
third (#125)
vyunolbek Apr 29, 2024
2fc0f42
Kosarev Egor, lab 3, opt 2
EgorKosarevv Apr 29, 2024
5e96e69
Sadikov Damir. Lab 3. Var 1 (#135)
Damlrca May 1, 2024
57afc2c
Kozyreva Ekaterina. Lab 3. Option 1. (#127)
kth-vyu May 2, 2024
e5ce822
Polozov Vladislav Lab 3 , Option 1 (#128)
Mortus19 May 2, 2024
35eb0ea
lab1
ks2k23 May 8, 2024
dceed36
Bonyuk Peter. Lab 2. Option 3 (#132)
PetrBonyuk May 11, 2024
0c15109
Sredneva Anastasiya. Lab 1. Var 3. (#67)
nastosimys May 11, 2024
e1ea55f
Simonyan Suren. Lab 3. Var 2 (#111)
SSuren4ik May 11, 2024
2bab5f8
Kurdina Julia. Lab 1. Var 3 (#65)
JKurdina May 12, 2024
36afcac
Kurdina Julia. Lab 2. Var 3. (#140)
JKurdina May 12, 2024
c1945d9
Merge branch 'course-spring-2024' into lab1
ks2k23 May 12, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/nn-cmplr-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ jobs:
-DLLVM_ENABLE_ASSERTIONS=ON \
-DLLDB_INCLUDE_TESTS=OFF \
-DCMAKE_C_COMPILER_LAUNCHER=sccache \
-DLLVM_TARGETS_TO_BUILD=X86 \
-DCMAKE_CXX_COMPILER_LAUNCHER=sccache \
${{ inputs.extra_cmake_args }}
ninja -C "$builddir" all
5 changes: 4 additions & 1 deletion .github/workflows/nn-cmplr-tidy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,15 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install clang-format
run: |
sudo apt-get install -y clang-format
- name: Run clang-format
run: |
git-clang-format --diff `git merge-base ${GITHUB_SHA} ${GITHUB_BASE_REF}`
git-clang-format --diff `git merge-base ${GITHUB_SHA} origin/${GITHUB_BASE_REF}` ${GITHUB_SHA} 2>&1 | tee log.txt
exit `grep -c diff log.txt`
clang-tidy:
runs-on: ubuntu-latest
steps:
Expand Down
1 change: 1 addition & 0 deletions clang/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -472,6 +472,7 @@ add_subdirectory(runtime)

option(CLANG_BUILD_EXAMPLES "Build CLANG example programs by default." OFF)
add_subdirectory(examples)
add_subdirectory(labs)

if(APPLE)
# this line is needed as a cleanup to ensure that any CMakeCaches with the old
Expand Down
9 changes: 9 additions & 0 deletions clang/labs/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
FILE(GLOB children RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*)
FOREACH(child ${children})
IF(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${child})
add_subdirectory(${child})
ENDIF()
ENDFOREACH()

set(CLANG_TEST_DEPS ${CLANG_TEST_DEPS} PARENT_SCOPE)
message("CLANG_TEST_DEPS ${CLANG_TEST_DEPS}")
10 changes: 10 additions & 0 deletions clang/labs/lab1/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
if(CLANG_PLUGIN_SUPPORT)
FILE(GLOB children RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*)
FOREACH(child ${children})
IF(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${child})
add_subdirectory(${child})
ENDIF()
ENDFOREACH()

set(CLANG_TEST_DEPS ${CLANG_TEST_DEPS} PARENT_SCOPE)
endif()
14 changes: 14 additions & 0 deletions clang/labs/lab1/alexseev_danila/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
add_llvm_library(depWarningPluginAlexseev MODULE deprecatedWarning.cpp PLUGIN_TOOL clang)

if(WIN32 OR CYGWIN)
set(LLVM_LINK_COMPONENTS
Support
)
clang_target_link_libraries(depWarningPluginAlexseev PRIVATE
clangAST
clangBasic
clangFrontend
)
endif()

set(CLANG_TEST_DEPS "depWarningPluginAlexseev" ${CLANG_TEST_DEPS} PARENT_SCOPE)
66 changes: 66 additions & 0 deletions clang/labs/lab1/alexseev_danila/deprecatedWarning.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
#include "clang/AST/ASTConsumer.h"
#include "clang/AST/RecursiveASTVisitor.h"
#include "clang/Frontend/CompilerInstance.h"
#include "clang/Frontend/FrontendPluginRegistry.h"

using namespace clang;

class DepFuncVisitor : public RecursiveASTVisitor<DepFuncVisitor> {
private:
ASTContext *Context;
std::string ExcludeFunc;

public:
explicit DepFuncVisitor(ASTContext *Context, std::string ExcludeFunc)
: Context(Context), ExcludeFunc(ExcludeFunc) {}

bool VisitFunctionDecl(FunctionDecl *Func) {
if (Func->getNameInfo().getAsString().find("deprecated") !=
std::string::npos &&
Func->getNameInfo().getAsString() != ExcludeFunc) {
DiagnosticsEngine &Diags = Context->getDiagnostics();
size_t CustomDiagID =
Diags.getCustomDiagID(DiagnosticsEngine::Warning,
"Function contains 'deprecated' in its name");
Diags.Report(Func->getLocation(), CustomDiagID)
<< Func->getNameInfo().getAsString();
}
return true;
}
};

class DepFuncConsumer : public ASTConsumer {
std::string ExcludeFunc;

public:
explicit DepFuncConsumer(std::string ExcludeFunc)
: ExcludeFunc(ExcludeFunc) {}

void HandleTranslationUnit(ASTContext &Context) override {
DepFuncVisitor Visitor(&Context, ExcludeFunc);
Visitor.TraverseDecl(Context.getTranslationUnitDecl());
}
};

class DepFuncPlugin : public PluginASTAction {
protected:
std::string ExcludeFunc = "";

std::unique_ptr<ASTConsumer>
CreateASTConsumer(CompilerInstance &Compiler,
llvm::StringRef InFile) override {
return std::make_unique<DepFuncConsumer>(ExcludeFunc);
}
bool ParseArgs(const CompilerInstance &Compiler,
const std::vector<std::string> &Args) override {
for (unsigned i = 0, e = Args.size(); i != e; ++i) {
if (Args[i].substr(0, 9) == "-exclude=") {
ExcludeFunc = Args[i].substr(9);
}
}
return true;
}
};

static FrontendPluginRegistry::Add<DepFuncPlugin> X("deprecated-warning",
"deprecated warning");
14 changes: 14 additions & 0 deletions clang/labs/lab1/balyasov_ivan/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
add_llvm_library(LabRenameIdenPlugin MODULE rename_identifiers.cpp PLUGIN_TOOL clang)

if(WIN32 OR CYGWIN)
set(LLVM_LINK_COMPONENTS
Support
)
clang_target_link_libraries(LabRenameIdenPlugin PRIVATE
clangAST
clangBasic
clangFrontend
)
endif()

set(CLANG_TEST_DEPS "LabRenameIdenPlugin" ${CLANG_TEST_DEPS} PARENT_SCOPE)
194 changes: 194 additions & 0 deletions clang/labs/lab1/balyasov_ivan/rename_identifiers.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,194 @@
#include "clang/AST/ASTConsumer.h"
#include "clang/AST/RecursiveASTVisitor.h"
#include "clang/Frontend/CompilerInstance.h"
#include "clang/Frontend/FrontendPluginRegistry.h"
#include "clang/Rewrite/Core/Rewriter.h"

enum class Types { Var, Func, Class };

class RenameVisitor : public clang::RecursiveASTVisitor<RenameVisitor> {
private:
clang::Rewriter rewriter;
Types type;
std::string oldName;
std::string newName;

public:
explicit RenameVisitor(clang::Rewriter rewriter, Types type,
clang::StringRef oldName, clang::StringRef newName)
: rewriter(rewriter), type(type), oldName(oldName), newName(newName) {}

bool VisitFunctionDecl(clang::FunctionDecl *func) {
if (type == Types::Func && func->getName() == oldName) {
rewriter.ReplaceText(func->getNameInfo().getSourceRange(), newName);
}
return true;
}

bool VisitCallExpr(clang::CallExpr *call) {
if (type == Types::Func) {
clang::FunctionDecl *callee = call->getDirectCallee();
if (callee && callee->getName() == oldName) {
rewriter.ReplaceText(call->getCallee()->getSourceRange(), newName);
}
}
return true;
}

bool VisitVarDecl(clang::VarDecl *var) {
if (type == Types::Var && var->getName() == oldName) {
rewriter.ReplaceText(var->getLocation(), oldName.size(), newName);
}
if (type == Types::Class &&
(var->getType().getAsString() == oldName + " *" ||
var->getType().getAsString() == oldName)) {
rewriter.ReplaceText(var->getTypeSourceInfo()->getTypeLoc().getBeginLoc(),
oldName.size(), newName);
}
return true;
}

bool VisitDeclRefExpr(clang::DeclRefExpr *expr) {
clang::VarDecl *var = clang::dyn_cast<clang::VarDecl>(expr->getDecl());
if (type == Types::Var && var && var->getName() == oldName) {
rewriter.ReplaceText(expr->getSourceRange(), newName);
}
return true;
}

bool VisitCXXRecordDecl(clang::CXXRecordDecl *record) {
if (type == Types::Class && record->getName() == oldName) {
rewriter.ReplaceText(record->getLocation(), newName);
const auto *destructor = record->getDestructor();
if (destructor) {
rewriter.ReplaceText(destructor->getLocation(), oldName.size() + 1,
'~' + newName);
}
}
return true;
}

bool VisitCXXConstructorDecl(clang::CXXConstructorDecl *constructor) {
if (type == Types::Class) {
if (constructor->getNameAsString() == oldName) {
rewriter.ReplaceText(constructor->getLocation(), oldName.size(),
newName);
}
}
return true;
}

bool VisitCXXNewExpr(clang::CXXNewExpr *newExpr) {
if (type == Types::Class) {
if (newExpr->getConstructExpr()->getType().getAsString() == oldName) {
rewriter.ReplaceText(newExpr->getExprLoc(), oldName.size() + 4,
"new " + newName);
}
}
return true;
}

bool save_changes() { return rewriter.overwriteChangedFiles(); }
};

class RenameConsumer : public clang::ASTConsumer {
private:
RenameVisitor Visitor;

public:
explicit RenameConsumer(clang::CompilerInstance &CI, Types type,
clang::StringRef oldName, clang::StringRef newName)
: Visitor(clang::Rewriter(CI.getSourceManager(), CI.getLangOpts()), type,
oldName, newName) {}

void HandleTranslationUnit(clang::ASTContext &context) override {
Visitor.TraverseDecl(context.getTranslationUnitDecl());
Visitor.save_changes();
}
};

class RenamePlugin : public clang::PluginASTAction {
private:
Types type;
std::string oldName;
std::string newName;

protected:
bool ParseArgs(const clang::CompilerInstance &CI,
const std::vector<std::string> &args) override {
std::vector<std::pair<std::string, std::string>> params = {
{"type=", ""}, {"cur-name=", ""}, {"new-name=", ""}};

if (!args.empty()) {
for (int i = 0; i < args.size(); i++) {
if (args[i] == "help") {
PrintHelp(llvm::errs());
return false;
}
}
}

if (args.size() < 3) {
PrintParamsError(CI);
return false;
}

for (const auto &arg : args) {
bool is_found = false;
for (auto &param : params) {
if (arg.find(param.first) == 0 && param.second.empty()) {
param.second = arg.substr(param.first.size());
is_found = true;
break;
}
}
if (!is_found) {
PrintParamsError(CI);
return false;
}
}

std::vector<std::pair<std::string, Types>> id_type = {
{"var", Types::Var}, {"func", Types::Func}, {"class", Types::Class}};
size_t i;
for (i = 0; i < id_type.size(); i++) {
if (params[0].second == id_type[i].first) {
type = id_type[i].second;
break;
}
}
if (i == id_type.size()) {
PrintParamsError(CI);
return false;
}
oldName = params[1].second;
newName = params[2].second;
return true;
}

void PrintHelp(llvm::raw_ostream &ros) {
ros << "Specify three required arguments:\n"
"-plugin-arg-renameIds type=[\"Var\", \"Func\", \"Class\"]\n"
"-plugin-arg-renameIds cur-name=\"Current identifier name\"\n"
"-plugin-arg-renameIds new-name=\"New identifier name\"\n";
}

void PrintParamsError(const clang::CompilerInstance &CI) {
clang::DiagnosticsEngine &D = CI.getDiagnostics();

D.Report(D.getCustomDiagID(
clang::DiagnosticsEngine::Error,
"Invalid arguments\n"
"Specify \"-plugin-arg-renameIds help\" for usage\n"));
}

public:
std::unique_ptr<clang::ASTConsumer>
CreateASTConsumer(clang::CompilerInstance &CI,
clang::StringRef InFile) override {
return std::make_unique<RenameConsumer>(CI, type, oldName, newName);
}
};

static clang::FrontendPluginRegistry::Add<RenamePlugin>
X("renameIds", "Rename Variable, Function or Class");
14 changes: 14 additions & 0 deletions clang/labs/lab1/bend_tatiana/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
add_llvm_library(Myfirstplugin MODULE PrintFunctionNames.cpp PLUGIN_TOOL clang)

if(WIN32 OR CYGWIN)
set(LLVM_LINK_COMPONENTS
Support
)
clang_target_link_libraries(Myfirstplugin PRIVATE
clangAST
clangBasic
clangFrontend
)
endif()

set(CLANG_TEST_DEPS "Myfirstplugin" ${CLANG_TEST_DEPS} PARENT_SCOPE)
Loading