rjmccall added a comment.

Ah, yes, we're laxer about these things in C than we are in C++.  If we do 
this, we'll need to go through `DiagnoseAssignmentResult` and make sure that 
everything (except `Compatible`, which we'll never pass) triggers an error in 
C++ mode.

Is there a good reason to just do this for pointer types instead of 
unconditionally calling `CheckAssignmentConstraints`?  It'd be nice to take 
advantage of any specialized diagnostics we have for C/ObjC/whatever in C++ 
mode, and that can apply to a lot of types that aren't pointer types.

It looks like there's already some type analysis in `DiagnoseAssignmentResult` 
to get a specialized diagnostic for certain cases of function-pointer 
assignment.  That could probably be easily moved into 
`CheckAssignmentConstraints` by just adding a few more cases to 
`AssignConvertResult`.

And yeah, it's possible that we'll need to teach that function about some C++ 
cases that it currently never sees.  But I don't think that needs to include 
references, because IIRC reference-binding doesn't go through 
`ImplicitConversionSequence`.


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

https://reviews.llvm.org/D74116



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

Reply via email to