summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clangd/include-mapping/test.py
diff options
context:
space:
mode:
authorSam McCall <sam.mccall@gmail.com>2019-05-02 09:34:30 +0000
committerSam McCall <sam.mccall@gmail.com>2019-05-02 09:34:30 +0000
commit15b89df9daf950431f213ee864e7989879802103 (patch)
tree2a2ac9ef36af25a87fcedd2b8b9e0ddc137cbb4a /clang-tools-extra/clangd/include-mapping/test.py
parent553c139fc35a33691db368fa7d8352da77989e08 (diff)
downloadbcm5719-llvm-15b89df9daf950431f213ee864e7989879802103.tar.gz
bcm5719-llvm-15b89df9daf950431f213ee864e7989879802103.zip
[clangd] Improvements to header mapping: more precise parsing of cppreference symbol pages.
Summary: Previously we were just jumping from the symbol index to the symbol page, and grabbing all the headers mentioned there. But the page often lists multiple symbols, and so we got false positives and thus ambiguities (which were dropped). Now we look at which declarations are for the symbol we want, and prefer headers listed above that symbol. If there are none, we fall back to the old behavior. Reviewers: kadircet Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D61316 llvm-svn: 359771
Diffstat (limited to 'clang-tools-extra/clangd/include-mapping/test.py')
-rwxr-xr-xclang-tools-extra/clangd/include-mapping/test.py27
1 files changed, 23 insertions, 4 deletions
diff --git a/clang-tools-extra/clangd/include-mapping/test.py b/clang-tools-extra/clangd/include-mapping/test.py
index 742bfda34c2..107257698d3 100755
--- a/clang-tools-extra/clangd/include-mapping/test.py
+++ b/clang-tools-extra/clangd/include-mapping/test.py
@@ -47,9 +47,13 @@ class TestStdGen(unittest.TestCase):
<td></td>
<td></td>
</tr>
+ <tr class="t-dcl">
+ <td>void foo()</td>
+ <td>this is matched</td>
+ </tr>
</tbody></table>
"""
- self.assertEqual(ParseSymbolPage(html), ['<cmath>'])
+ self.assertEqual(ParseSymbolPage(html, 'foo'), set(['<cmath>']))
def testParseSymbolPage_MulHeaders(self):
@@ -64,6 +68,10 @@ class TestStdGen(unittest.TestCase):
<td></td>
<td></td>
</tr>
+ <tr class="t-dcl">
+ <td>void bar()</td>
+ <td>this mentions foo, but isn't matched</td>
+ </tr>
<tr class="t-dsc-header">
<td> <div>Defined in header <code><a href="cstdio.html" title="cstdio">&lt;cstdio&gt;</a></code>
</div></td>
@@ -76,10 +84,14 @@ class TestStdGen(unittest.TestCase):
<td></td>
<td></td>
</tr>
+ <tr class="t-dcl">
+ <td>void foo()</td>
+ <td>this is matched</td>
+ </tr>
</tbody></table>
"""
- self.assertEqual(ParseSymbolPage(html),
- ['<cstddef>', '<cstdio>', '<cstdlib>'])
+ self.assertEqual(ParseSymbolPage(html, "foo"),
+ set(['<cstdio>', '<cstdlib>']))
def testParseSymbolPage_MulHeadersInSameDiv(self):
@@ -87,6 +99,7 @@ class TestStdGen(unittest.TestCase):
# Defined in header <algorithm>
# Defined in header <utility>
html = """
+<table class="t-dcl-begin"><tbody>
<tr class="t-dsc-header">
<td><div>
Defined in header <code><a href="../header/algorithm.html" title="cpp/header/algorithm">&lt;algorithm&gt;</a></code><br>
@@ -94,8 +107,14 @@ class TestStdGen(unittest.TestCase):
</div></td>
<td></td>
</tr>
+<tr class="t-dcl">
+ <td>void foo()</td>
+ <td>this is matched</td>
+</tr>
+</tbody></table>
"""
- self.assertEqual(ParseSymbolPage(html), ['<algorithm>', '<utility>'])
+ self.assertEqual(ParseSymbolPage(html, "foo"),
+ set(['<algorithm>', '<utility>']))
if __name__ == '__main__':
OpenPOWER on IntegriCloud