sammccall accepted this revision.
sammccall added inline comments.
This revision is now accepted and ready to land.


================
Comment at: clang-tools-extra/clangd/SemanticHighlighting.cpp:436
+  if (HB.inDefaultLibrary(D->getLocation()))
+    return HighlightingModifier::DefaultLibrary;
   const DeclContext *DC = D->getDeclContext();
----------------
dgoldman wrote:
> sammccall wrote:
> > dgoldman wrote:
> > > sammccall wrote:
> > > > kadircet wrote:
> > > > > I don't use semantic highlighting enough to judge whether it is more 
> > > > > useful to say `DefaultLibrary` than `{Class,Function}Scope`. (i.e. 
> > > > > having the check here vs at the end of the function as a fallback). 
> > > > > Can you provide some rationale about the decision (probably as 
> > > > > comments in code)?
> > > > > 
> > > > > By looking at the testcase, I suppose you are trying to indicate 
> > > > > "overriden"/"extended" attribute of a symbol, which makes sense but 
> > > > > would be nice to know if there's more. I am just worried that this is 
> > > > > very obj-c specific and won't really generalize to c/c++. As most of 
> > > > > the system headers only provide platform specific structs (e.g. 
> > > > > posix) and they are almost never extended. So it might be confusing 
> > > > > for user to see different colors on some memberexprs.
> > > > I think default-library isn't a scope modifier at all, it should be 
> > > > independent.
> > > > 
> > > > e.g. std::string is defaultlLibrary | globalScope, while 
> > > > std::string::push_back() is defaultLibrary | classScope.
> > > I can break it up if you'd like - just let me know what you had in mind. 
> > > I can change the scopeModifier function's name and then have it return a 
> > > list of modifiers or I can just add a new function which all existing 
> > > callers of scopeModifier will also need to call.
> > > 
> > > And what we're really trying to do here is color the system/SDK symbols 
> > > differently - this is definitely useful for iOS dev since Apple has a 
> > > very large SDK, but if it's not useful for C++ maybe we could just make 
> > > this configurable?
> > > just let me know what you had in mind
> > 
> > I think this should follow `isStatic()` etc: just a boolean function that 
> > gets called in the minimum number of places needed.
> > 
> > scopeModifier is slightly different pattern because there are a bunch of 
> > mutually-exclusive modifiers. defaultLibrary is (mostly) independent of 
> > other modifiers.
> > 
> > > if it's not useful for C++ maybe we could just make this configurable
> > 
> > No need really - sending more modifiers is cheap (one string at startup and 
> > one bit in an integer we're sending anyway).
> > It's up to clients to style the ones they care about, and at least in 
> > VSCode this can be customized per-lang I think. Important thing is that 
> > they don't interact with other modifiers.
> Swapped over, currently don't check on deduced types but we could add our 
> isDefaultLibrary check there as well
I think it'd be useful to do this for consistency, just VisitDecltypeTypeLoc 
and VisitDeclaratorDecl need to be changed I think.

We'd want a version of isDefaultLibrary that works on Type. We're only going to 
see canonical types so I think we need to:
 - unwrap pointers (getPointeeOrArrayElementType)
 - if BuiltinType -> return true
 - for types: find the decl and dispatch to isDefaultLibrary(Decl)

to find the decl it'd be nice to use targetDecl() but also sufficient to handle 
TagType + ObjCInterfaceType for now I think.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D101554

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

Reply via email to