[clang-tools-extra] r276259 - [clang-rename] check whether -new-name is valid identifier in C++17

Kirill Bobyrev via cfe-commits cfe-commits at lists.llvm.org
Thu Jul 21 03:21:31 PDT 2016


Author: omtcyfz
Date: Thu Jul 21 05:21:31 2016
New Revision: 276259

URL: http://llvm.org/viewvc/llvm-project?rev=276259&view=rev
Log:
[clang-rename] check whether -new-name is valid identifier in C++17 

Added:
    clang-tools-extra/trunk/test/clang-rename/InvalidNewName.cpp
Modified:
    clang-tools-extra/trunk/clang-rename/tool/ClangRename.cpp
    clang-tools-extra/trunk/test/clang-rename/NoNewName.cpp

Modified: clang-tools-extra/trunk/clang-rename/tool/ClangRename.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-rename/tool/ClangRename.cpp?rev=276259&r1=276258&r2=276259&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-rename/tool/ClangRename.cpp (original)
+++ clang-tools-extra/trunk/clang-rename/tool/ClangRename.cpp Thu Jul 21 05:21:31 2016
@@ -99,7 +99,18 @@ int main(int argc, const char **argv) {
   // Check the arguments for correctness.
 
   if (NewName.empty()) {
-    errs() << "clang-rename: no new name provided.\n\n";
+    errs() << "ERROR: no new name provided.\n\n";
+    exit(1);
+  }
+
+  // Check if NewName is a valid identifier in C++17.
+  LangOptions Options;
+  Options.CPlusPlus = true;
+  Options.CPlusPlus1z = true;
+  IdentifierTable Table(Options);
+  auto NewNameTokKind = Table.get(NewName).getTokenID();
+  if (!tok::isAnyIdentifier(NewNameTokKind)) {
+    errs() << "ERROR: new name is not a valid identifier in  C++17.\n\n";
     exit(1);
   }
 

Added: clang-tools-extra/trunk/test/clang-rename/InvalidNewName.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-rename/InvalidNewName.cpp?rev=276259&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-rename/InvalidNewName.cpp (added)
+++ clang-tools-extra/trunk/test/clang-rename/InvalidNewName.cpp Thu Jul 21 05:21:31 2016
@@ -0,0 +1,2 @@
+// RUN: not clang-rename -new-name=class -offset=133 %s 2>&1 | FileCheck %s
+// CHECK: ERROR: new name is not a valid identifier in  C++17.

Modified: clang-tools-extra/trunk/test/clang-rename/NoNewName.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-rename/NoNewName.cpp?rev=276259&r1=276258&r2=276259&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-rename/NoNewName.cpp (original)
+++ clang-tools-extra/trunk/test/clang-rename/NoNewName.cpp Thu Jul 21 05:21:31 2016
@@ -1,4 +1,4 @@
 // Check for an error while -new-name argument has not been passed to
 // clang-rename.
 // RUN: not clang-rename -offset=133 %s 2>&1 | FileCheck %s
-// CHECK: clang-rename: no new name provided.
+// CHECK: ERROR: no new name provided.




More information about the cfe-commits mailing list