[clang/clang-tools-extra] Fix BZ44437 - add_new_check.py does not work with Python 3
authorKonrad Kleine <kkleine@redhat.com>
Tue, 5 May 2020 14:29:57 +0000 (10:29 -0400)
committerKonrad Kleine <kkleine@redhat.com>
Tue, 5 May 2020 21:22:50 +0000 (17:22 -0400)
commit24b4965ce65b14ead595dcc68add22ba37533207
tree3c42a7727f62e20b3e259f4a8763497dfa4e3fdc
parentbf6a26b066382e0f41bf023c781d84061c542307
[clang/clang-tools-extra] Fix BZ44437 - add_new_check.py does not work with Python 3

Summary:
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:

```lang=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:

```lang=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

Subscribers: cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D79419
clang-tools-extra/clang-tidy/add_new_check.py