[PATCH] Introducing initial UseAuto transform

Sean Silva silvas at purdue.edu
Sun Feb 17 09:48:53 PST 2013



================
Comment at: test/cpp11-migrate/UseAuto/gen_basic_std_iterator_tests.py:28-49
@@ +27,24 @@
+
+for c in containers:
+  print """
+  {{
+    std::{0}<int> C;
+    std::{0}<int>::iterator I = C.begin();
+    // CHECK: auto I = C.begin();
+  }}
+  {{
+    std::{0}<int> C;
+    std::{0}<int>::reverse_iterator I = C.rbegin();
+    // CHECK: auto I = C.rbegin();
+  }}
+  {{
+    const std::{0}<int> C;
+    std::{0}<int>::const_iterator I = C.begin();
+    // CHECK: auto I = C.begin();
+  }}
+  {{
+    const std::{0}<int> C;
+    std::{0}<int>::const_reverse_iterator I = C.rbegin();
+    // CHECK: auto I = C.rbegin();
+  }}""".format(c)
+
----------------
It is probably prettier to use `string.Template` since that uses `$foo` for the substitutions, which grooves better with the curly braces in the string. <http://docs.python.org/2/library/string.html#template-strings>.

Also, `string.Template` is compatible back to Python 2.4 which I think is (sadly) our baseline version for use in the test suite. The new style formatting was introduced in 2.6. If you want to stay with str.format, you should also do a `__future__` import of `print_function` so that this code will work with both Python2 and Python3 (`print_function` is available in 2.6+ as well).

It might also be interesting to commit this with the `str.format` calls and see if any of the buildbots blow up (to test the waters of what Python version they are *actually* running).

================
Comment at: test/cpp11-migrate/UseAuto/basic_std_iterator_tests.cpp:1-9
@@ +1,10 @@
+// RUN: grep -Ev "// *[A-Z-]+:" %s > %t.cpp
+// RUN: cpp11-migrate -use-auto %t.cpp -- --std=c++11 -I %S/Inputs
+// RUN: FileCheck -input-file=%t.cpp %s
+#include "my_std.h"
+
+int main(int argc, char **argv) {
+  {
+    std::array<int> C;
+    std::array<int>::iterator I = C.begin();
+    // CHECK: auto I = C.begin();
----------------
I don't really like the idea of committing generated code to source control.

Could we wire up the build system to generate these files as part of the build?

================
Comment at: test/cpp11-migrate/UseAuto/gen_basic_std_iterator_tests.py:21-24
@@ +20,6 @@
+]
+print """// RUN: grep -Ev "// *[A-Z-]+:" %s > %t.cpp
+// RUN: cpp11-migrate -use-auto %t.cpp -- --std=c++11 -I Inputs
+// RUN: FileCheck -input-file=%t.cpp %s
+#include "my_std.h"
+
----------------
Generated files should usually have a comment at the top saying "this is a generated file" so that people looking at the file are aware of the fact.


http://llvm-reviews.chandlerc.com/D392

BRANCH
  iter

ARCANIST PROJECT
  clang-tools-extra



More information about the cfe-commits mailing list