aaronpuchert added a subscriber: JonasToth.
aaronpuchert added a comment.

We could also introduce a separate (placeholder) type for initializer lists and 
perhaps also `ParenListExpr` if the dependent type seems misleading to you.

CC @JonasToth for the changes to 
`clang-tidy/checkers/cppcoreguidelines-owning-memory.cpp`.



================
Comment at: 
clang-tools-extra/test/clang-tidy/checkers/cppcoreguidelines-owning-memory.cpp:306
   }
   HeapArray(int size, T val, int *problematic) : _data{problematic}, 
size(size) {} // Bad
+  // CHECK-NOTES: [[@LINE-1]]:50: warning: expected initialization of owner 
member variable with value of type 'gsl::owner<>'; got '<dependent type>'
----------------
If the warning is looking at this in the original template, we're initializing 
a `gsl::owner<T *>` which is type-dependent. So we can't carry out the 
initialization yet.

[Got the impression 
earlier](https://github.com/mgehre/llvm-project/issues/80#issuecomment-567210626)
 that the lifetime checks want to “understand” templates which can of course 
not work because templates can be specialized, overload resolution is only 
performed on  the instantiation, and so on.


================
Comment at: clang/test/SemaOpenCLCXX/address-space-references.clcpp:25
   c.gen({1, 2});
-  c.glob({1, 2}); //expected-error{{binding reference of type 'const __global 
short2' (vector of 2 'short' values) to value of type 'void' changes address 
space}}
+  c.glob({1, 2}); //expected-error{{binding reference of type 'const __global 
short2' (vector of 2 'short' values) to value of type '<dependent type>' 
changes address space}}
   c.nested_list({{1, 2}, {3, 4}});
----------------
Somehow we seem to fail matching the initializer list, but not report that, 
only on type mismatch later. I think we should either go through with the 
initialization, then have a `short __attribute__((ext_vector_type(2)))` and 
complain that we can't bind the reference to that, or complain when processing 
the initializer list.

But that's unrelated to this change, `void` was also not correct.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D113837

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

Reply via email to