ilya-biryukov added inline comments.

================
Comment at: clangd/ExpectedTypes.h:68
+
+/// Represents a type of partially applied conversion. Should be treated as an
+/// opaque value and can only be used to check whether the types are converible
----------------
sammccall wrote:
> this represents a type (in the c++ sense), not a conversion, right?
It's an "expression" with an extra data with some extra data (whether the user 
conversion was applied to get this expression)


================
Comment at: clangd/ExpectedTypes.h:82
+  static llvm::SmallVector<SType, 2>
+  fromCompletionResult(ASTContext &Ctx, const CodeCompletionResult &R);
+
----------------
sammccall wrote:
> coupling to CompletionResult seems premature here, can we stick to passing 
> getExpectedType() until we know that abstraction needs to be broken?
There's some useful logic that is tied to completion results, e.g. to extract 
function return type `CompletionResult`.
Happy to accept a decl, but would keep the name `fromCompletionResult`. Does 
that LG?


================
Comment at: clangd/ExpectedTypes.h:213
+
+void collectConvertibleFrom(ASTContext &Ctx, MockExpr Source,
+                            llvm::function_ref<void(PartialConv)> OutF);
----------------
sammccall wrote:
> sammccall wrote:
> > why is implementing one of these directions not enough?
> > 
> > It should probably be:
> > As far as I can tell, derived-to-base is the tricky one here: it's an 
> > important conversion (albeit one we should leave out of the first patch), 
> > and you can't ask "what's convertible to base" since the answer is an open 
> > set you can't see.
> > 
> > So it seems the minimal set you need for handling pointer to base is `Type 
> > getRepresentative(Type)` and `set<Type> 
> > getRepresentativesAfterConversion(Type)` or so...
> names are unclear: is `collectConvertibleFrom(T)` the convertible-from types 
> for T (i.e the types T is convertible from), or the types that are 
> convertible from T?
Derived-to-base and user conversions.

We can't enumerate all derived classes for some type, so instead need to 
enumerate all bases when adding a symbol to the index.
We can't enumerate all types that have user-defined conversions to some type T, 
so we need to enumerate all user-defined conversions when adding a symbol 
instead.


Repository:
  rCTE Clang Tools Extra

https://reviews.llvm.org/D52273



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

Reply via email to