kwk created this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.
kwk edited the summary of this revision.
kwk added reviewers: djasper, dsanders.
kwk edited the summary of this revision.
kwk edited the summary of this revision.

This fixes https://bugs.llvm.org/show_bug.cgi?id=44437.

Thanks to Arnaud Desitter for providing the patch in the bug report!

A simple example program to reproduce this error is this:

  #!/usr/bin/env python
  
  import sys
  
  with open(sys.argv[0], 'r') as f:
    lines = f.readlines()
  lines = iter(lines)
  line = lines.next()
  print(line)

which will error with this in python python 3:

  Traceback (most recent call last):
    File "./mytest.py", line 8, in <module>
      line = lines.next()
  AttributeError: 'list_iterator' object has no attribute 'next'

Here's the same strategy applied to my test program as applied to the 
`add_new_check.py` file:

  #!/usr/bin/env python
  
  import sys
  
  with open(sys.argv[0], 'r') as f:
    lines = f.readlines()
  lines = iter(lines)
  line = next(lines)
  print(line)

The built-in function `next()` is new since Python 2.6: 
https://docs.python.org/2/library/functions.html#next


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D79419

Files:
  clang-tools-extra/clang-tidy/add_new_check.py


Index: clang-tools-extra/clang-tidy/add_new_check.py
===================================================================
--- clang-tools-extra/clang-tidy/add_new_check.py
+++ clang-tools-extra/clang-tidy/add_new_check.py
@@ -172,7 +172,7 @@
     lines = iter(lines)
     try:
       while True:
-        line = lines.next()
+        line = next(lines)
         if not header_added:
           match = re.search('#include "(.*)"', line)
           if match:
@@ -197,7 +197,7 @@
                 # If we didn't find the check name on this line, look on the
                 # next one.
                 prev_line = line
-                line = lines.next()
+                line = next(lines)
                 match = re.search(' *"([^"]*)"', line)
                 if match:
                   current_check_name = match.group(1)


Index: clang-tools-extra/clang-tidy/add_new_check.py
===================================================================
--- clang-tools-extra/clang-tidy/add_new_check.py
+++ clang-tools-extra/clang-tidy/add_new_check.py
@@ -172,7 +172,7 @@
     lines = iter(lines)
     try:
       while True:
-        line = lines.next()
+        line = next(lines)
         if not header_added:
           match = re.search('#include "(.*)"', line)
           if match:
@@ -197,7 +197,7 @@
                 # If we didn't find the check name on this line, look on the
                 # next one.
                 prev_line = line
-                line = lines.next()
+                line = next(lines)
                 match = re.search(' *"([^"]*)"', line)
                 if match:
                   current_check_name = match.group(1)
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
  • [PATCH] D79419: [cla... Konrad Wilhelm Kleine via Phabricator via cfe-commits

Reply via email to