https://github.com/AaronBallman approved this pull request.

Realistically, I don't think we can deprecate the extension in general:
https://sourcegraph.com/search?q=context:global+%5BA-Za-z0-9_%5D%2B%5Cs%5BA-Za-z0-9_%5D%2B%5C%5B0%5C%5D%3B+-file:.*test.*+-file:.*clang.*+count:100000&patternType=regexp&sm=0

I don't think we can even deprecate it for just C++:
https://sourcegraph.com/search?q=context:global+%5BA-Za-z0-9_%5D%2B%5Cs%5BA-Za-z0-9_%5D%2B%5C%5B0%5C%5D%3B+-file:.*test.*+-file:.*clang.*+count:100000+lang:C%2B%2B+&patternType=regexp&sm=0

but we might be able to deprecate it for uses where the zero-sized array is not 
the last member of a structure declaration:
https://sourcegraph.com/search?q=context:global+%5BA-Za-z0-9_%5D%2B%5Cs%5BA-Za-z0-9_%5D%2B%5C%5B0%5C%5D%3B%5Cs*%5BA-Za-z_%5D+-file:.*test.*+-file:.*clang.*+lang:C+count:100000&patternType=regexp&sm=0
 (has a lot of false positives like `sizeof foo[0];` and `return foo[0];`)

I think we should consider deprecation orthogonal to this patch though.

There does not seem to be evidence that this is being used for anything other 
than implementing traits: 
https://sourcegraph.com/search?q=context:global+__is_array%5Cb+lang:C%2B%2B+-file:.*test.*+-file:.*clang.*+-file:.*libcxx.*+-file:.*libc%5C%2B%5C%2B.*+-file:.*trait.*+-repo:.*clang.*&patternType=regexp&sm=0

so I think the patch is "correct" insofar as this terrible extension is 
concerned. Some small nits with the changes, but otherwise LGTM.

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

Reply via email to