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

Reply via email to