668654e697b2b7dc37ef16f77da296df5e23f41c |
|
18-Sep-2010 |
Douglas Gregor <doug.gregor@gmail.com> |
When we run into an error parsing or type-checking the left-hand side of a binary expression, continue on and parse the right-hand side of the binary expression anyway, but don't call the semantic actions to type-check. Previously, we would see the error and then, effectively, skip tokens until the end of the statement. The result should be more useful recovery, both in the normal case (we'll actually see errors beyond the first one in a statement), but it also helps code completion do a much better job, because we do "real" code completion on the right-hand side of an invalid binary expression rather than completing with the recovery completion. For example, given x = p->y if there is no variable named "x", we can still complete after the p-> as a member expression. Along the recovery path, we would have completed after the "->" as if we were in an expression context, which is mostly useless. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114225 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaTemplate/dependent-base-classes.cpp
|
fdc4c1323390741f6cd57a4fe2a667fe2fbb9633 |
|
22-May-2010 |
Douglas Gregor <doug.gregor@gmail.com> |
Improve recovery when we see a dependent template name that is missing the required "template" keyword, using the same heuristics we do for dependent template names in member access expressions, e.g., test/SemaTemplate/dependent-template-recover.cpp:11:8: error: use 'template' keyword to treat 'getAs' as a dependent template name T::getAs<U>(); ^ template Fixes PR5404. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104409 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaTemplate/dependent-base-classes.cpp
|
9feb1a3680892a470ae5744ad95be2f61ad9a1be |
|
01-Apr-2010 |
Douglas Gregor <doug.gregor@gmail.com> |
Improve diagnostics when an elaborated-type-specifer containing a nested-name-specifier (e.g., "class T::foo") fails to find a tag member in the scope nominated by the nested-name-specifier. Previously, we gave a bland error: 'Nested' does not name a tag member in the specified scope which didn't actually say where we were looking, which was rather horrible when the nested-name-specifier was instantiated. Now, we give something a bit better: error: no class named 'Nested' in 'NoDepBase<T>' git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100060 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaTemplate/dependent-base-classes.cpp
|
98624359b74071fdf2575b5b1afb5d3a3a86b4a3 |
|
10-Mar-2010 |
John McCall <rjmccall@apple.com> |
When pretty-printing tag types, only print the tag if we're in C (and therefore not creating ElaboratedTypes, which are still pretty-printed with the written tag). Most of these testcase changes were done by script, so don't feel too sorry for my fingers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98149 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaTemplate/dependent-base-classes.cpp
|
38ff6ad6adbbef01b0edb403f5343adc91bc1f21 |
|
02-Mar-2010 |
Douglas Gregor <doug.gregor@gmail.com> |
Add test case from PR5812, which works now. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97535 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaTemplate/dependent-base-classes.cpp
|
a8916e256e298e07e0d0f5fbee4bc7f8ee354d67 |
|
27-Feb-2010 |
Douglas Gregor <doug.gregor@gmail.com> |
Skip dependent virtual base classes; fixes PR6413. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97291 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaTemplate/dependent-base-classes.cpp
|
065a870017fed93c2515b83da406bb89c66e0a0b |
|
26-Feb-2010 |
John McCall <rjmccall@apple.com> |
Fix an assertion-on-error during tentative constructor parsing by propagating error conditions out of the various annotate-me-a-snowflake routines. Generally (but not universally) removes redundant diagnostics as well as, you know, not crashing on bad code. On the other hand, I have just signed myself up to fix fiddly parser errors for the next week. Again. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97221 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaTemplate/dependent-base-classes.cpp
|
1b8763fcf094388111cd84242ad9e3541c678e04 |
|
19-Jan-2010 |
Douglas Gregor <doug.gregor@gmail.com> |
Teach Sema::ActOnDependentTemplateName that a dependent template name in a member access expression referring into the current instantiation need not be resolved at template definition *if* the current instantiation has any dependent base classes. Fixes PR6081. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93877 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaTemplate/dependent-base-classes.cpp
|
46ff27fa7eaad8af5e9dea988a5bdb74eb674c35 |
|
15-Jan-2010 |
Douglas Gregor <doug.gregor@gmail.com> |
When performing qualified name lookup into the current instantiation, do not look into base classes if there are any dependent base classes. Instead, note in the lookup result that we couldn't look into any dependent bases. Use that new result kind to detect when this case occurs, so that we can fall back to treating the type/value/etc. as a member of an unknown specialization. Fixes an issue where we were resolving lookup at template definition time and then missing an ambiguity at template instantiation time. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93497 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaTemplate/dependent-base-classes.cpp
|
d53936ede29c21c7f937368abec6eb6b7e4ca9f0 |
|
14-Jan-2010 |
Douglas Gregor <doug.gregor@gmail.com> |
When qualified lookup into the current instantiation fails (because it finds nothing), and the current instantiation has dependent base classes, treat the qualified lookup as if it referred to an unknown specialization. Fixes PR6031. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93433 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaTemplate/dependent-base-classes.cpp
|
0dca8ec36388fb792cca7e25345dbd3e755ccbad |
|
12-Jan-2010 |
Douglas Gregor <doug.gregor@gmail.com> |
Improve recovery for template-ids whose template-name doesn't actually name a template, when they occur in a base-specifier. This is one of the (few) places where we know for sure that an identifier followed by a '<' must be a template name, so we can diagnose and recover well: test/SemaTemplate/dependent-base-classes.cpp:9:16: error: missing 'template' keyword prior to dependent template name 'T::apply' struct X1 : T::apply<U> { }; // expected-error{{missing 'template' ... ^ template test/SemaTemplate/dependent-base-classes.cpp:12:13: error: unknown template name 'vector' struct X2 : vector<T> { }; // expected-error{{unknown template name 'vector'}} ^ 2 diagnostics generated. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93257 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaTemplate/dependent-base-classes.cpp
|
2c25a055bb8671bf3b0be0f49448f1d34928e641 |
|
12-Jan-2010 |
Douglas Gregor <doug.gregor@gmail.com> |
Parse dependent template-ids in base clauses and member initializers. This isn't actually in the C++ grammar (in any version), but that's clearly an oversight: both GCC and EDG support this syntax, and it's used within Boost code. I'll file a core issue proposing precisely the change made here. Fixes PR6008. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93243 91177308-0d34-0410-b5e6-96231b3b80d8
/external/clang/test/SemaTemplate/dependent-base-classes.cpp
|