[PATCH] D87350: [AST][RecoveryExpr] Fix a crash on undeduced type.

Sam McCall via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Sep 21 00:30:48 PDT 2020


sammccall added inline comments.


================
Comment at: clang/lib/Sema/SemaOverload.cpp:12880
 
   return Result.getValueOr(QualType());
 }
----------------
hokein wrote:
> sammccall wrote:
> > Wouldn't we be better to handle undeduced type here rather than in the loop?
> > 
> > Not sure if it practically matters, but given: `auto f(); double f(int); f(0,0);`
> > the code in this patch will discard auto and yield `double`, while treating this as multiple candidates --> unknown return type seems more correct.
> > 
> I feel like yield `double` is better in your given example -- in this case, double is the only candidate, so it is reasonable to preserve the `double` type.
There are two overloads, one with `double` and one with an unknown type. They're both candidates for the function being called, and I'm not sure we have any reason to believe the first is more likely.

Two counterarguments I can think of:
 - the unknown type is probably also double, as overloads tend to have the same return type
 - the cost of being wrong isn't so high, so it's OK to not be totally sure

And maybe there are others... these are probably OK justifications but subtle so I'd like to see a comment tothat effect.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D87350



More information about the cfe-commits mailing list