[PATCH] D56429: fix python3 compability issue
rox via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Jan 7 23:59:46 PST 2019
roxma created this revision.
roxma added reviewers: ilya-biryukov, mgorny.
Herald added subscribers: cfe-commits, arphaman.
Herald added a reviewer: serge-sans-paille.
The file contents could be of str type. Should use byte length instead
of str length, otherwise utf-8 encoded files may not get properly parsed
for completion.
Source issue: https://github.com/ncm2/ncm2-pyclang#2
Repository:
rC Clang
https://reviews.llvm.org/D56429
Files:
bindings/python/clang/cindex.py
Index: bindings/python/clang/cindex.py
===================================================================
--- bindings/python/clang/cindex.py
+++ bindings/python/clang/cindex.py
@@ -2815,9 +2815,9 @@
for i, (name, contents) in enumerate(unsaved_files):
if hasattr(contents, "read"):
contents = contents.read()
-
+ contents = b(contents)
unsaved_array[i].name = b(fspath(name))
- unsaved_array[i].contents = b(contents)
+ unsaved_array[i].contents = contents
unsaved_array[i].length = len(contents)
ptr = conf.lib.clang_parseTranslationUnit(index,
@@ -2994,17 +2994,13 @@
unsaved_files_array = 0
if len(unsaved_files):
unsaved_files_array = (_CXUnsavedFile * len(unsaved_files))()
- for i,(name,value) in enumerate(unsaved_files):
- if not isinstance(value, str):
- # FIXME: It would be great to support an efficient version
- # of this, one day.
- value = value.read()
- print(value)
- if not isinstance(value, str):
- raise TypeError('Unexpected unsaved file contents.')
- unsaved_files_array[i].name = fspath(name)
- unsaved_files_array[i].contents = value
- unsaved_files_array[i].length = len(value)
+ for i,(name,contents) in enumerate(unsaved_files):
+ if hasattr(contents, "read"):
+ contents = contents.read()
+ contents = b(contents)
+ unsaved_files_array[i].name = b(fspath(name))
+ unsaved_files_array[i].contents = contents
+ unsaved_files_array[i].length = len(contents)
ptr = conf.lib.clang_reparseTranslationUnit(self, len(unsaved_files),
unsaved_files_array, options)
@@ -3058,17 +3054,13 @@
unsaved_files_array = 0
if len(unsaved_files):
unsaved_files_array = (_CXUnsavedFile * len(unsaved_files))()
- for i,(name,value) in enumerate(unsaved_files):
- if not isinstance(value, str):
- # FIXME: It would be great to support an efficient version
- # of this, one day.
- value = value.read()
- print(value)
- if not isinstance(value, str):
- raise TypeError('Unexpected unsaved file contents.')
+ for i,(name,contents) in enumerate(unsaved_files):
+ if hasattr(contents, "read"):
+ contents = contents.read()
+ contents = b(contents)
unsaved_files_array[i].name = b(fspath(name))
- unsaved_files_array[i].contents = b(value)
- unsaved_files_array[i].length = len(value)
+ unsaved_files_array[i].contents = contents
+ unsaved_files_array[i].length = len(contents)
ptr = conf.lib.clang_codeCompleteAt(self, fspath(path), line, column,
unsaved_files_array, len(unsaved_files), options)
if ptr:
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D56429.180620.patch
Type: text/x-patch
Size: 3231 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190108/63999ef2/attachment.bin>
More information about the cfe-commits
mailing list