aboutsummaryrefslogtreecommitdiff
path: root/test
AgeCommit message (Collapse)Author
2009-10-13Unify our diagnostic printing for errors of the form, "we didn't likeDouglas Gregor
what we found when we looked into <blah>", where <blah> is a DeclContext*. We can now format DeclContext*'s in nice ways, e.g., "namespace N", "the global namespace", "'class Foo'". This is part of PR3990, but we're not quite there yet. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84028 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-13Pass the right SourceLocation to ↵Anders Carlsson
Actions.ActOnOverloadedOperatorReferenceExpr and Actions.ActOnConversionOperatorReferenceExpr. Update incomplete-call.cpp test. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84026 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-13Converted to use FileCheck.John Thompson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84005 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-13Turn -Wparentheses on by default.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83993 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-13Don't assume that the LHS and RHS of a member pointer expression is a ↵Anders Carlsson
DeclRefExpr. Fixes PR5177. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83986 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-13Diagnose attempts to add default function arguments to aDouglas Gregor
specialization. This completes C++ [temp.expl.spec]! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83980 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-13When explicitly specializing a member that is a template, mark theDouglas Gregor
template as a specialization. For example, this occurs with: template<typename T> struct X { template<typename U> struct Inner { /* ... */ }; }; template<> template<typename T> struct X<int>::Inner { T member; }; We need to treat templates that are member specializations as special in two contexts: - When looking for a definition of a member template, we look through the instantiation chain until we hit the primary template *or a member specialization*. This allows us to distinguish between the primary "Inner" definition and the X<int>::Inner definition, above. - When computing all of the levels of template arguments needed to instantiate a member template, don't add template arguments from contexts outside of the instantiation of a member specialization, since the user has already manually substituted those arguments. Fix up the existing test for p18, which was actually wrong (but we didn't diagnose it because of our poor handling of member specializations of templates), and add a new test for member specializations of templates. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83974 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-13Improve the internal representation and semantic analysis of friendDouglas Gregor
function templates. This commit ensures that friend function templates are constructed as FunctionTemplateDecls rather than partial FunctionDecls (as they previously were). It then implements template instantiation for friend function templates, injecting the friend function template only when no previous declaration exists at the time of instantiation. Oh, and make sure that explicit specialization declarations are not friends. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83970 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-13Refine handling for return value conversions with respect to virtualMike Stump
offsets for covariant thunks. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83965 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-13Teach sema and codegen about the difference between address of labels,Chris Lattner
which is a common idiom to improve PIC'ness of code using the addr of label extension. This implementation is a gross hack, but the only other alternative would be to teach evalutate about this horrid combination. While GCC allows things like "&&foo - &&bar + 1", people don't use this in practice. This implements PR5131. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83957 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-13merge an indirect goto test into statements, add anotherChris Lattner
hairier (but nonsensical) example. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83951 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-13test commitJohn Thompson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83945 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-13add rdar # I accidentally lost.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83942 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-13merge two tests.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83941 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-13make the diagnostic in the 'unused result' warning more preciseChris Lattner
about the reason, rdar://7186119. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83940 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-13fix PR4938 by recognizing % as a modifier on outputs,Chris Lattner
previously we only recognized it on inputs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83939 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-12Disable tests that check debug info intrinsic. This does not work if debug ↵Devang Patel
info intrinsics are not used to encode debug info. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83929 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-12When declaring a class template whose name is qualified, make sureDouglas Gregor
that the scope in which it is being declared is complete. Also, when instantiating a member class template's ClassTemplateDecl, be sure to delay type creation so that the resulting type is dependent. Ick. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83923 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-12Test explicit specialization involving multiple template<> headersDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83914 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-12Permit explicit specialization of member functions of class templatesDouglas Gregor
that are declarations (rather than definitions). Also, be sure to set the access specifiers properly when instantiating the declarations of member function templates. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83911 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-12Implement -Wparentheses: warn about using assignments in contexts that requireJohn McCall
conditions. Add a fixit to insert the parentheses. Also fix a very minor possible memory leak in 'for' conditions. Fixes PR 4876 and rdar://problem/7289172 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83907 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-12Test explicit specializations of static data members that are declarations, ↵Douglas Gregor
not definitions git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83904 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-12Yet another test for explicit specialization, this one involving linkageDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83901 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-12More tests for explicit template specializationDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83896 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-12Add test for last commitDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83893 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-12Diagnose the declaration of explicit specializations after an implicitDouglas Gregor
instantiation has already been required. To do so, keep track of the point of instantiation for anything that can be instantiated. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83890 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-12Handle built-in unary operators when reporting ambiguities.Fariborz Jahanian
wip - To prune excessive reporting. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83889 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-12Fix test.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83888 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-12Even more devirtualization cleverness.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83886 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-12More devirtualization improvements.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83883 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-12Devirtualize calls on temporaries. A().f() for example.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83882 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-12Factor out devirtualization checking into a separate function and make it ↵Anders Carlsson
handle references correctly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83880 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-12If built-in operators could not be selected because of ambiguity inFariborz Jahanian
user-defined type conversions, issue list of ambiguites in addition to the diagnostic. So, clang now issues the following: b.cpp:19:19: error: left hand operand to ->* must be a pointer to class compatible with the right hand operand, but is 'struct C1' int i = c1->*pmf; ~~^ b.cpp:19:19: note: because of ambiguity in conversion of 'struct C1' to 'struct E *' b.cpp:5:5: note: candidate function operator E*(); ^ b.cpp:11:5: note: candidate function operator E*(); ^ git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83862 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-11If the base type of a member call is a record type we don't need to emit a ↵Anders Carlsson
virtual call. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83816 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-11Types appearing more than once in a spec shouldn't matter.Sebastian Redl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83766 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-11Test exception spec compatibility on return type and parameters.Sebastian Redl
Along the way, use RequireCompleteType when testing exception spec types. Separate all the ugly spec stuff into its own file. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83764 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-10Generate weak read barriers when reading a weak __blockFariborz Jahanian
variable inside the block. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83729 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-10Implement the core checking for compatible exception specifications in ↵Sebastian Redl
assignment and initialization. The exception specification of the assignee must be the same or a subset of the target. In addition, exception specifications on arguments and return types must be equivalent, but this is not implemented yet. This currently produces two diagnostics for every invalid assignment/initialization, due to the diagnostic produced outside PerformImplicitConversion, e.g. in CheckSingleInitializer. I don't know how to suppress this; in any case I think it is the wrong place for a diagnostic, since there are other diagnostics produced inside the function. So I'm leaving it as it is for the moment. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83710 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-10Qualified lookup through using declarations. Diagnose a new type of ambiguity.John McCall
Split the various ambiguous result enumerators into their own enum. Tests for most of C++ [namespace.qual]. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83700 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-10Check that the return type is complete when calling a member function.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83694 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-09Add another test.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83693 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-09Add CheckCallReturnType and start using it for regular call expressions. ↵Anders Carlsson
This will improve error messages. For struct B; B f(); void g() { f(); } We now get t.cpp:6:3: error: calling 'f' with incomplete return type 'struct B' f(); ^~~ t.cpp:3:3: note: 'f' declared here B f(); ^ t.cpp:1:8: note: forward declaration of 'struct B' struct B; ^ git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83692 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-09Refactor the LookupResult API to simplify most common operations. Require ↵John McCall
users to pass a LookupResult reference to lookup routines. Call out uses which assume a single result. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83674 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-09When declaring a friend class template, we may end up finding anDouglas Gregor
injected-class-name (e.g., when we're referring to other specializations of the current class template). Make sure that we see the template rather than the injected-class-name. Fixes PR4768. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83672 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-09Produce good looking diagnostics on ambiguous built-in operators.Fariborz Jahanian
Now we produce things like: bug1.cpp:21:11: error: use of overloaded operator '->*' is ambiguous int i = c->*pmf; // expected-error {{use of overloaded operator '->*' is ambiguous}} \ ~^ ~~~ bug1.cpp:21:11: note: built-in candidate operator ->* ('struct A volatile *', 'int const struct A::*') bug1.cpp:21:11: note: built-in candidate operator ->* ('struct A volatile *', 'int restrict struct A::*') ... Still need to look at an issue (indicated as FIXME in the test case). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83650 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-08- Fixup SortCodeCompleteResult() to properly sort keywords on Mac OS ↵Steve Naroff
(compare was system dependent). Worked on Linux, failed on Mac OS (which caused the recently added testcase to fail on Linux). - Sort results in testcase. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83597 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-08Speed up testing by avoiding stdio.h, also helps testing on windows.Mike Stump
Patch by John Thompson. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83593 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-08Tests for C++ [expr], from James Porter!Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83588 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-08Tolerate .exe on executables. Patch by John Thompson. Changed * to .* by me.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83586 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-08Tolerate .exe on executables. Patch by John Thompson.Mike Stump
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@83584 91177308-0d34-0410-b5e6-96231b3b80d8