[clang-tools-extra] r361951 - [clangd] Another improvement for std include mapping.
Haojian Wu via cfe-commits
cfe-commits at lists.llvm.org
Wed May 29 05:03:42 PDT 2019
Author: hokein
Date: Wed May 29 05:03:41 2019
New Revision: 361951
URL: http://llvm.org/viewvc/llvm-project?rev=361951&view=rev
Log:
[clangd] Another improvement for std include mapping.
Summary:
Improve the way of checking a symbol name is in the first cell. The previous way
is not very robost for cases where a cell lists multiple symbols (e.g. int8_t).
Reviewers: sammccall
Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D62575
Modified:
clang-tools-extra/trunk/clangd/StdSymbolMap.inc
clang-tools-extra/trunk/clangd/include-mapping/gen_std.py
clang-tools-extra/trunk/clangd/include-mapping/test.py
Modified: clang-tools-extra/trunk/clangd/StdSymbolMap.inc
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/StdSymbolMap.inc?rev=361951&r1=361950&r2=361951&view=diff
==============================================================================
--- clang-tools-extra/trunk/clangd/StdSymbolMap.inc (original)
+++ clang-tools-extra/trunk/clangd/StdSymbolMap.inc Wed May 29 05:03:41 2019
@@ -454,11 +454,24 @@ SYMBOL(includes, std::, <algorithm>)
SYMBOL(inclusive_scan, std::, <numeric>)
SYMBOL(independent_bits_engine, std::, <random>)
SYMBOL(indirect_array, std::, <valarray>)
+SYMBOL(initializer_list, std::, <initializer_list>)
SYMBOL(inner_product, std::, <numeric>)
SYMBOL(inplace_merge, std::, <algorithm>)
SYMBOL(input_iterator_tag, std::, <iterator>)
SYMBOL(insert_iterator, std::, <iterator>)
SYMBOL(inserter, std::, <iterator>)
+SYMBOL(int16_t, std::, <cstdint>)
+SYMBOL(int32_t, std::, <cstdint>)
+SYMBOL(int64_t, std::, <cstdint>)
+SYMBOL(int8_t, std::, <cstdint>)
+SYMBOL(int_fast16_t, std::, <cstdint>)
+SYMBOL(int_fast32_t, std::, <cstdint>)
+SYMBOL(int_fast64_t, std::, <cstdint>)
+SYMBOL(int_fast8_t, std::, <cstdint>)
+SYMBOL(int_least16_t, std::, <cstdint>)
+SYMBOL(int_least32_t, std::, <cstdint>)
+SYMBOL(int_least64_t, std::, <cstdint>)
+SYMBOL(int_least8_t, std::, <cstdint>)
SYMBOL(integer_sequence, std::, <utility>)
SYMBOL(integral_constant, std::, <type_traits>)
SYMBOL(internal, std::, <ios>)
@@ -1150,6 +1163,18 @@ SYMBOL(u16string_view, std::, <string_vi
SYMBOL(u32streampos, std::, <ios>)
SYMBOL(u32string, std::, <string>)
SYMBOL(u32string_view, std::, <string_view>)
+SYMBOL(uint16_t, std::, <cstdint>)
+SYMBOL(uint32_t, std::, <cstdint>)
+SYMBOL(uint64_t, std::, <cstdint>)
+SYMBOL(uint8_t, std::, <cstdint>)
+SYMBOL(uint_fast16_t, std::, <cstdint>)
+SYMBOL(uint_fast32_t, std::, <cstdint>)
+SYMBOL(uint_fast64_t, std::, <cstdint>)
+SYMBOL(uint_fast8_t, std::, <cstdint>)
+SYMBOL(uint_least16_t, std::, <cstdint>)
+SYMBOL(uint_least32_t, std::, <cstdint>)
+SYMBOL(uint_least64_t, std::, <cstdint>)
+SYMBOL(uint_least8_t, std::, <cstdint>)
SYMBOL(uintmax_t, std::, <cstdint>)
SYMBOL(uintptr_t, std::, <cstdint>)
SYMBOL(uncaught_exceptions, std::, <exception>)
Modified: clang-tools-extra/trunk/clangd/include-mapping/gen_std.py
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/include-mapping/gen_std.py?rev=361951&r1=361950&r2=361951&view=diff
==============================================================================
--- clang-tools-extra/trunk/clangd/include-mapping/gen_std.py (original)
+++ clang-tools-extra/trunk/clangd/include-mapping/gen_std.py Wed May 29 05:03:41 2019
@@ -84,10 +84,9 @@ def ParseSymbolPage(symbol_page_html, sy
for row in table.select('tr'):
if HasClass(row, 't-dcl', 't-dsc'):
was_decl = True
- # Declaration is in the first cell.
- text = row.find('td').text
- # Decl may not be for the symbol name we're looking for.
- if not re.search("\\b%s\\b" % symbol_name, text):
+ # Symbols are in the first cell.
+ found_symbols = row.find('td').stripped_strings
+ if not symbol_name in found_symbols:
continue
headers.update(current_headers)
elif HasClass(row, 't-dsc-header'):
Modified: clang-tools-extra/trunk/clangd/include-mapping/test.py
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/include-mapping/test.py?rev=361951&r1=361950&r2=361951&view=diff
==============================================================================
--- clang-tools-extra/trunk/clangd/include-mapping/test.py (original)
+++ clang-tools-extra/trunk/clangd/include-mapping/test.py Wed May 29 05:03:41 2019
@@ -85,7 +85,11 @@ class TestStdGen(unittest.TestCase):
<td></td>
</tr>
<tr class="t-dcl">
- <td>void foo()</td>
+ <td>
+ <span>void</span>
+ foo
+ <span>()</span>
+ </td>
<td>this is matched</td>
</tr>
</tbody></table>
@@ -108,7 +112,11 @@ class TestStdGen(unittest.TestCase):
<td></td>
</tr>
<tr class="t-dcl">
- <td>void foo()</td>
+ <td>
+ <span>void</span>
+ foo
+ <span>()</span>
+ </td>
<td>this is matched</td>
</tr>
</tbody></table>
@@ -116,6 +124,32 @@ class TestStdGen(unittest.TestCase):
self.assertEqual(ParseSymbolPage(html, "foo"),
set(['<algorithm>', '<utility>']))
+ def testParseSymbolPage_MulSymbolsInSameTd(self):
+ # defined in header <cstdint>
+ # int8_t
+ # int16_t
+ html = """
+<table class="t-dcl-begin"><tbody>
+<tr class="t-dsc-header">
+<td><div>
+ Defined in header <code><a href="cstdint.html" title="cstdint"><cstdint></a></code><br>
+</div></td>
+<td></td>
+</tr>
+<tr class="t-dcl">
+ <td>
+ <span>int8_t</span>
+ <span>int16_t</span>
+ </td>
+ <td>this is matched</td>
+</tr>
+</tbody></table>
+"""
+ self.assertEqual(ParseSymbolPage(html, "int8_t"),
+ set(['<cstdint>']))
+ self.assertEqual(ParseSymbolPage(html, "int16_t"),
+ set(['<cstdint>']))
+
if __name__ == '__main__':
unittest.main()
More information about the cfe-commits
mailing list