Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
clang/test/SemaCXX/base-class-ambiguity-check.cpp | ||
---|---|---|
15 | maybe put (dependent) in this comment, as it's the reason this code is valid without diagnostics | |
17 | we're asserting here there are no diagnostics, maybe instantiate the template and assert those? | |
clang/test/SemaCXX/ms-interface.cpp | ||
114 | is there some tricky interaction with __interface here that justifies testing this again? If it's testing the same codepath, I'd say one test is enough |
clang/test/SemaCXX/base-class-ambiguity-check.cpp | ||
---|---|---|
16 | The diagnostic is suboptimal (I'd expect it is "invalid use of incomplete type"), but it is not regression, clang shows the same diagnostics for the following non-crash case: template <typename T> struct Foo2 { struct Base1; struct Derived : Base1 {}; } | |
clang/test/SemaCXX/ms-interface.cpp | ||
114 | They test different paths (this was founded in my previous-and-incomplete fix):
|
clang/test/SemaCXX/base-class-ambiguity-check.cpp | ||
---|---|---|
16 | Or even template <int> struct X; X<42> y; I think the diagnostic is OK - it's diagnosing why the type *is* incomplete, rather than why the type *may not* be complete. Typical use of this pattern would be to provide an out-of-line definition template: template <typename T> struct Foo2<T>::Base1 { T contents; } in which case instantiation is the right idea. |
maybe put (dependent) in this comment, as it's the reason this code is valid without diagnostics