forked from OSchip/llvm-project
clang-format: [JS] do not clean up duplicated commas.
Summary: In JavaScript, duplicated commas have semantic meaning. x = [a,,b]; The statement above creates an array with three entries, the middle being undefined. Because clang-format should not change semantics, disable this cleanup in JS. Reviewers: djasper Subscribers: klimek Differential Revision: https://reviews.llvm.org/D33641 llvm-svn: 304141
This commit is contained in:
parent
3b189d1643
commit
816a9668bb
|
@ -1910,6 +1910,9 @@ tooling::Replacements reformat(const FormatStyle &Style, StringRef Code,
|
|||
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);
|
||||
|
|
|
@ -36,11 +36,12 @@ protected:
|
|||
|
||||
// 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);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -171,6 +172,14 @@ TEST_F(CleanupTest, ListRedundantComma) {
|
|||
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);}";
|
||||
|
|
Loading…
Reference in New Issue