tooling::Replacements cleanup(const FormatStyle &Style, StringRef Code,
ArrayRef<tooling::Range> Ranges,
StringRef FileName) {
+ // cleanups only apply to C++ (they mostly concern ctor commas etc.)
+ if (Style.Language != FormatStyle::LK_Cpp)
+ return tooling::Replacements();
std::unique_ptr<Environment> Env =
Environment::CreateVirtualEnvironment(Code, FileName, Ranges);
Cleaner Clean(*Env, Style);
// Returns code after cleanup around \p Offsets.
std::string cleanupAroundOffsets(llvm::ArrayRef<unsigned> Offsets,
- llvm::StringRef Code) {
+ llvm::StringRef Code,
+ const FormatStyle &Style = getLLVMStyle()) {
std::vector<tooling::Range> Ranges;
for (auto Offset : Offsets)
Ranges.push_back(tooling::Range(Offset, 0));
- return cleanup(Code, Ranges);
+ return cleanup(Code, Ranges, Style);
}
};
EXPECT_EQ(Expected, cleanupAroundOffsets({17, 22}, Code));
}
+TEST_F(CleanupTest, NoCleanupsForJavaScript) {
+ std::string Code = "function f() { var x = [a, b, , c]; }";
+ std::string Expected = "function f() { var x = [a, b, , c]; }";
+ const FormatStyle &Style = getGoogleStyle(FormatStyle::LK_JavaScript);
+
+ EXPECT_EQ(Expected, cleanupAroundOffsets({30}, Code, Style));
+}
+
TEST_F(CleanupTest, TrailingCommaInParens) {
std::string Code = "int main() { f(,1,,2,3,f(1,2,),4,,);}";
std::string Expected = "int main() { f(1,2,3,f(1,2),4);}";