On Jul 18, 2011, at 3:12 PM, Anna Zaks wrote:
> Attached is the updated patch. It includes the code review comments + sorting
> of the diagnostics based on the fixit info.
>
> (No test for objective C since it will not result in the error, but a warning
> coming from a different location in the code. I'll add these fix to more
> errors/warnings later on.)
+ /// The FixIt hints which can be used to fix the Bad candidate.
+ struct FixInfo {
+ /// The list of Hints (all have to be applied).
+ llvm::SmallVector<FixItHint, 4> Hints;
+
+ /// The number of Conversions fixed. This can be different from the size
+ /// of the Hints vector since we allow multiple FixIts per conversion.
+ unsigned NumConversionsFixed;
+
+ /// The type of fix applied.
+ OverloadFixItKind Kind;
+ } Fix;
This is a lot to be adding to every overload candidate. At the very least,
Hints should have inline size 1, and maybe it should even just be a pointer to
an array that's allocated on need.
+ // Only suggest taking address of L-values.
+ if (!Arg->isLValue())
+ return false;
This should also check that getObjectKind() == OK_Ordinary; otherwise we'll
suggest taking the address of e.g. bitfields.
// TODO: specialize more based on the kind of mismatch
I think this TODO can go away now. :) Obviously there's always more that can
be done, but this is a good first step.
Thanks!
John.
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits