Rename skipEscapeCharacter() to skipEscapeForDoubleQuote().
http://reviews.llvm.org/D6376
Files:
lib/Tooling/JSONCompilationDatabase.cpp
unittests/Tooling/CompilationDatabaseTest.cpp
Index: lib/Tooling/JSONCompilationDatabase.cpp
===================================================================
--- lib/Tooling/JSONCompilationDatabase.cpp
+++ lib/Tooling/JSONCompilationDatabase.cpp
@@ -62,7 +62,7 @@
bool parseDoubleQuotedStringInto(std::string &String) {
if (!next()) return false;
while (*Position != '"') {
- if (!skipEscapeCharacter()) return false;
+ if (!skipEscapeForDoubleQuote()) return false;
String.push_back(*Position);
if (!next()) return false;
}
@@ -80,16 +80,18 @@
bool parseFreeStringInto(std::string &String) {
do {
- if (!skipEscapeCharacter()) return false;
+ if (!skipEscapeForDoubleQuote()) return false;
String.push_back(*Position);
if (!next()) return false;
} while (*Position != ' ' && *Position != '"' && *Position != '\'');
return true;
}
- bool skipEscapeCharacter() {
+ bool skipEscapeForDoubleQuote() {
if (*Position == '\\') {
- return next();
+ if (next() && *Position == '"')
+ return true;
+ --Position;
}
return true;
}
Index: unittests/Tooling/CompilationDatabaseTest.cpp
===================================================================
--- unittests/Tooling/CompilationDatabaseTest.cpp
+++ unittests/Tooling/CompilationDatabaseTest.cpp
@@ -90,10 +90,10 @@
StringRef Directory1("//net/dir1");
StringRef FileName1("file1");
- StringRef Command1("command1");
+ StringRef Command1(R"(command1 -DFOO=\"1\\2\\\" \" -DBAR=\\)");
StringRef Directory2("//net/dir2");
StringRef FileName2("file1");
- StringRef Command2("command1");
+ StringRef Command2(R"(command2 \"with spaces\")");
std::vector<CompileCommand> Commands = getAllCompileCommands(
("[{\"directory\":\"" + Directory1 + "\"," +
@@ -103,13 +103,16 @@
"\"command\":\"" + Command2 + "\","
"\"file\":\"" + FileName2 + "\"}]").str(),
ErrorMessage);
- EXPECT_EQ(2U, Commands.size()) << ErrorMessage;
+ EXPECT_EQ(2u, Commands.size()) << ErrorMessage;
EXPECT_EQ(Directory1, Commands[0].Directory) << ErrorMessage;
- ASSERT_EQ(1u, Commands[0].CommandLine.size());
- EXPECT_EQ(Command1, Commands[0].CommandLine[0]) << ErrorMessage;
+ ASSERT_EQ(3u, Commands[0].CommandLine.size());
+ EXPECT_EQ("command1", Commands[0].CommandLine[0]) << ErrorMessage;
+ EXPECT_EQ(R"(-DFOO=1\2" )", Commands[0].CommandLine[1]) << ErrorMessage;
+ EXPECT_EQ(R"(-DBAR=\)", Commands[0].CommandLine[2]) << ErrorMessage;
EXPECT_EQ(Directory2, Commands[1].Directory) << ErrorMessage;
- ASSERT_EQ(1u, Commands[1].CommandLine.size());
- EXPECT_EQ(Command2, Commands[1].CommandLine[0]) << ErrorMessage;
+ ASSERT_EQ(2u, Commands[1].CommandLine.size());
+ EXPECT_EQ("command2", Commands[1].CommandLine[0]) << ErrorMessage;
+ EXPECT_EQ("with spaces", Commands[1].CommandLine[1]) << ErrorMessage;
}
static CompileCommand findCompileArgsInJsonDatabase(StringRef FileName,
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits