sammccall added a subscriber: klimek.
sammccall added a comment.

Sorry to be a pain here, but I'm not sure introducing Javascript is a good idea 
unless there's a strong reason for it.
All LLVM developers have python installed, many are comfortable with the 
language - it seems less likely to be a maintenance hazard. I can recommend 
BeautifulSoup for the HTML parsing stuff.
(For the record, I kind of hate python, but I'm more comfortable reviewing and 
maintaining it than JS).
Mitigating points: we have some in the VSCode plugin by necessity, and this 
isn't a build-time dependency.

Happy to get another opinion here.

> Added the tool in this patch, but I think a separate repository under 
> GitHub's clangd org might be a more suitable place.

I'm somewhat sympathetic to this idea, but I don't think we can do it as things 
stand. @klimek can confirm.



================
Comment at: clangd/StdGen/Readme.md:1
+# StdGen
+
----------------
can we add the caveats here?
 - only symbols directly in namespace std are added
 - symbols with multiple variants or defined in multiple headers aren't added


================
Comment at: clangd/StdGen/Readme.md:3
+
+StdGen is a tool to generate headers for C++ Standard Library symbols by 
parsing
+archieved HTML files from [cppreference](http://cppreference.com/).
----------------
Can we be a bit more specific about what it generates?

From this text I'd have guess it generates headers like `namespace std { int 
printf(char*, ...); }`.


================
Comment at: clangd/StdGen/Readme.md:8
+
+### Requriement
+
----------------
Requriement -> Requirements


================
Comment at: clangd/StdGen/Readme.md:11
+* Download the cppreference [offline HTML 
files](https://en.cppreference.com/w/Cppreference:Archives),
+and unzip it to the `<StdGen_dir>/reference` directory.
+
----------------
nit: can we make this a command-line arg instead of requiring people to put it 
in their source tree?


================
Comment at: clangd/StdGen/lib/main.js:1
+const $ = require('cheerio')
+const fs = require('fs')
----------------
note: I haven't reviewed the JS files for style/readability as I'm weak on JS 
and it's unclear what style would govern here. e.g. I suspect when used as a 
niche language in a C++ project by people who don't know it well, we should 
probably have semicolons rather than relying on ASI.
But see code review comment - this may be a moot point.


================
Comment at: clangd/StdGen/lib/parse.js:39
+  })
+  // Skip C++20 symbols as C++20 is not finalized yet.
+  if (revision == 'C++20')
----------------
Not sure this is necessary - it seems preferable to be forwards-compatible even 
if not 100% accurate, no?

(And it would simplify the code, as we don't need to parse out the version)


================
Comment at: clangd/index/CanonicalIncludes.cpp:110
   static const std::vector<std::pair<const char *, const char *>> SymbolMap = {
       {"std::addressof", "<memory>"},
       // Map symbols in <iosfwd> to their preferred includes.
----------------
can you remove the ones that duplicate the .inc file?


Repository:
  rCTE Clang Tools Extra

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D58345/new/

https://reviews.llvm.org/D58345



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to