================
@@ -7639,6 +7639,8 @@ def warn_param_mismatched_alignment : Warning<
 
 def err_objc_object_assignment : Error<
   "cannot assign to class object (%0 invalid)">;
+def err_typecheck_array_prvalue_operand : Error<
+  "array prvalue is not permitted">;
----------------
languagelawyer wrote:

> keeping in mind that `foo{}` could also be behind a macro

I doubt that presenting exact array type vs. just saying "array" would help 
much in this case. There is `note: expanded from macro` to point that something 
comes from macro expansion. (Not shown for `err_typecheck_invalid_operands`, 
BTW!)

> `err_typecheck_invalid_operands` is the better approach here

```c++
int main()
{
        using IA = int[];
        IA ia = { 1, 2, 3 };

        ia + 0.; // error: invalid operands to binary expression ('int[3]' and 
'double')
                 // Where is the problem? in 'int[3]' or in 'double'?

        ia + 0; // no error means the issue was in 'double'?

        IA{ 1, 2, 3 } + 0; // error: invalid operands to binary expression 
('int[3]' and 'int')
                           // Huh? What about now?
}
```

>  But ultimately, `int[]` + `int` is what we should diagnose

The types are not the issue, why give misleading diagnostics?

https://github.com/llvm/llvm-project/pull/140702
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to