diff options
author | Sam McCall <sam.mccall@gmail.com> | 2019-05-02 09:34:30 +0000 |
---|---|---|
committer | Sam McCall <sam.mccall@gmail.com> | 2019-05-02 09:34:30 +0000 |
commit | 15b89df9daf950431f213ee864e7989879802103 (patch) | |
tree | 2a2ac9ef36af25a87fcedd2b8b9e0ddc137cbb4a /clang-tools-extra/clangd/include-mapping/test.py | |
parent | 553c139fc35a33691db368fa7d8352da77989e08 (diff) | |
download | bcm5719-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-x | clang-tools-extra/clangd/include-mapping/test.py | 27 |
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"><cstdio></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"><algorithm></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__': |