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