Alexis Hunt
c88db06565
Implement semantic checking for C++ literal operators.
...
This now rejects literal operators that don't meet the requirements.
Templates are not yet checked for.
llvm-svn: 93315
2010-01-13 09:01:02 +00:00
Eli Friedman
affd5fdf37
Make sure to give an error for template argument lists followed by junk.
...
llvm-svn: 92177
2009-12-27 22:31:18 +00:00
Chris Lattner
3859c74b32
fix the microsoft "charify" extension to return the charified token
...
as a character literal, not a string literal. This might fix
rdar://7486575
llvm-svn: 92025
2009-12-23 19:15:27 +00:00
Chris Lattner
1576850a76
fix PR5500: clang fails to parse inline asm with :: in C++ mode
...
llvm-svn: 91802
2009-12-20 23:08:04 +00:00
John McCall
e2ade289be
Teach TryAnnotateTypeOrScopeToken to deal with already-annotated
...
scope specifiers. Fix a tentative parsing bug that came up in LLVM.
Incidentally fixes some random FIXMEs in an existing testcase.
llvm-svn: 91734
2009-12-19 00:35:18 +00:00
Daniel Dunbar
8fbe78f6fc
Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'.
...
- This is designed to make it obvious that %clang_cc1 is a "test variable"
which is substituted. It is '%clang_cc1' instead of '%clang -cc1' because it
can be useful to redefine what gets run as 'clang -cc1' (for example, to set
a default target).
llvm-svn: 91446
2009-12-15 20:14:24 +00:00
Fariborz Jahanian
6ec5119b5f
Make tests use the new clang cc1 flag.
...
llvm-svn: 91300
2009-12-14 17:51:07 +00:00
Chris Lattner
3c674cf804
If we enter parens, colons can become un-sacred, allowing us to emit
...
a better diagnostic in the second example.
llvm-svn: 91040
2009-12-10 02:08:07 +00:00
Chris Lattner
244b96ba0a
fix a more evil case of : / :: confusion arising in ?:.
...
llvm-svn: 91039
2009-12-10 02:02:58 +00:00
Chris Lattner
17c3b1f278
fix incorrect parsing of bitfields pointed out by Doug. I chose
...
to use ColonProtectionRAIIObject in the C codepath even though it
won't matter for consistency.
llvm-svn: 91037
2009-12-10 01:59:24 +00:00
Chris Lattner
125c0ee5c7
fix PR5740: a colon is sacred when parsing case statement expressions!
...
llvm-svn: 91016
2009-12-10 00:38:54 +00:00
Chris Lattner
793c75a28f
rename testcase
...
llvm-svn: 91015
2009-12-10 00:37:13 +00:00
Fariborz Jahanian
26de2e594b
Fixes a bogus error when declaring an extern "C" array.
...
(fixes radar 7457109).
llvm-svn: 90986
2009-12-09 21:39:38 +00:00
Chris Lattner
1c4280328d
reapply my patch for PR4451, which improves diagnostics for :: vs : confusion.
...
This time with a fix to bail out when in a dependent context.
llvm-svn: 90730
2009-12-07 01:36:53 +00:00
Chris Lattner
045cbffb65
fix a crash on invalid I found when working on something unrelated.
...
llvm-svn: 90729
2009-12-07 00:48:47 +00:00
Chris Lattner
ed085234dc
revert my previous patch, it is breaking something and I don't have time
...
to fix it ATM.
llvm-svn: 90717
2009-12-06 20:58:07 +00:00
Chris Lattner
71d5bf1c5d
implement PR4451, improving error recovery for a mistaken : where a :: was
...
intended. On the first testcase in the bug, we now produce:
cxx-decl.cpp:12:2: error: unexpected ':' in nested name specifier
y:a a2;
^
::
instead of:
t.cc:8:1: error: C++ requires a type specifier for all declarations
x:a a2;
^
t.cc:8:2: error: invalid token after top level declarator
x:a a2;
^
;
t.cc:9:11: error: use of undeclared identifier 'a2'
x::a a3 = a2;
^
llvm-svn: 90713
2009-12-06 19:08:11 +00:00
John McCall
6e9f8f6374
Honor using declarations in overload resolution. Most of the code for
...
overloaded-operator resolution is wildly untested, but the parallel code for
methods seems to satisfy some trivial tests.
Also change some overload-resolution APIs to take a type instead of an expression,
which lets us avoid creating a spurious CXXThisExpr when resolving implicit
member accesses.
llvm-svn: 90410
2009-12-03 04:06:58 +00:00
Daniel Dunbar
4e7596cc3a
Normalize options to use '-FOO' instead of '--FOO'.
...
llvm-svn: 90071
2009-11-29 09:33:10 +00:00
Daniel Dunbar
f4a72b06c2
Use '-x' 'foo' instead of '-x=foo'.
...
llvm-svn: 90069
2009-11-29 09:32:31 +00:00
Daniel Dunbar
7427fe28dc
Remove unnecessary -fms-extensions=0 from tests (this command line syntax is going away).
...
llvm-svn: 90066
2009-11-29 09:31:53 +00:00
Alexis Hunt
3d221f2fce
Add DeclarationName support for C++0x operator literals. They should now work as
...
function names outside of templates - they'll probably cause some damage there as
they're largely untested.
llvm-svn: 90064
2009-11-29 07:34:05 +00:00
Alexis Hunt
ed0530f694
Fix test and handle IK_LiteralOperatorId in a few more places.
...
llvm-svn: 90030
2009-11-28 08:58:14 +00:00
Alexis Hunt
344585006c
Add Parser support for C++0x literal operators ('operator "" i').
...
DeclarationName can't handle them yet, so right now Parser just errors out on them.
llvm-svn: 90027
2009-11-28 04:44:28 +00:00
John Thompson
5bc5cbe2a2
Fix attribute between function decl ')' and '{' or '=0'
...
llvm-svn: 89894
2009-11-25 22:58:06 +00:00
Douglas Gregor
0bba2b6110
Tweak expected error to match what should happen, once using declarations work
...
llvm-svn: 89876
2009-11-25 19:28:08 +00:00
Douglas Gregor
5c80a27ba2
Implement support for default template arguments of function templates.
...
llvm-svn: 89874
2009-11-25 18:55:14 +00:00
Alexis Hunt
96d5c76498
Added rudimentary C++0x attribute support.
...
The following attributes are currently supported in C++0x attribute
lists (and in GNU ones as well):
- align() - semantics believed to be conformant to n3000, except for
redeclarations and what entities it may apply to
- final - semantics believed to be conformant to CWG issue 817's proposed
wording, except for redeclarations
- noreturn - semantics believed to be conformant to n3000, except for
redeclarations
- carries_dependency - currently ignored (this is an optimization hint)
llvm-svn: 89543
2009-11-21 08:43:09 +00:00
Douglas Gregor
11f3050141
Test case for parsing-recovery change to @synthesized
...
llvm-svn: 89260
2009-11-18 22:37:38 +00:00
Fariborz Jahanian
1bc0f9affc
This patch fixes a bug in misdiagnosing correct
...
use of pointer to data member.
llvm-svn: 89251
2009-11-18 21:54:48 +00:00
Daniel Dunbar
feedba68b5
Don't #include <stdio.h> when tests don't need it, or use clang instead of clang-cc when they do.
...
llvm-svn: 89070
2009-11-17 08:57:36 +00:00
Daniel Dunbar
9d5118a69c
Fix broken tests, exposed by improved -verify.
...
llvm-svn: 88749
2009-11-14 03:24:04 +00:00
Daniel Dunbar
34546ce43d
Remove RUN: true lines.
...
llvm-svn: 86432
2009-11-08 01:47:25 +00:00
Daniel Dunbar
8b57697954
Eliminate &&s in tests.
...
- 'for i in $(find . -type f); do sed -e 's#\(RUN:.*[^ ]\) *&& *$#\1#g' $i | FileUpdate $i; done', for the curious.
llvm-svn: 86430
2009-11-08 01:45:36 +00:00
Fariborz Jahanian
2f487126ce
Make fragile-abi test run happy.
...
llvm-svn: 86293
2009-11-06 22:15:27 +00:00
Fariborz Jahanian
95239110cd
Fix a bogus objective-c warning with -pedantic.
...
(radar 7370882).
llvm-svn: 86291
2009-11-06 21:48:47 +00:00
John McCall
644a4181c9
Implement -Wsign-compare, or at least the actual comparison part of it.
...
Conditional operands are next.
Fixes part of rdar://problem/7289584.
llvm-svn: 86083
2009-11-05 00:40:04 +00:00
Douglas Gregor
916462b2f7
Improve diagnostics when parsing something like
...
template<> struct foo<int> { ... };
where "foo" does not refer to a template. Fixes PR3844.
llvm-svn: 85616
2009-10-30 21:46:58 +00:00
John Thompson
ec87bb5c46
Disabling some MS extensions which cause these tests to fail
...
llvm-svn: 85236
2009-10-27 14:31:53 +00:00
Fariborz Jahanian
9a14b84ac5
Diagnose misuse of '.*' and '->*' operators during parse
...
instead of crashing in code gen.
llvm-svn: 84968
2009-10-23 21:01:39 +00:00
John Thompson
9f2a365fe2
test commit
...
llvm-svn: 83945
2009-10-13 05:45:19 +00:00
Douglas Gregor
bbe8f46621
Improve checking for specializations of member classes of class
...
templates, and keep track of how those member classes were
instantiated or specialized.
Make sure that we don't try to instantiate an explicitly-specialized
member class of a class template, when that explicit specialization
was a declaration rather than a definition.
llvm-svn: 83547
2009-10-08 15:14:33 +00:00
Douglas Gregor
3dad842b35
Rework the Parse-Sema interaction for friends to better support friend
...
class templates. We now treat friend class templates much more like
normal class templates, except that they still get special name lookup
rules. Fixes PR5057 and eliminates a bunch of spurious diagnostics in
<iostream>.
llvm-svn: 82848
2009-09-26 06:47:28 +00:00
Douglas Gregor
450f0084a2
WIP implementation of explicit instantiation of function templates,
...
member functions of class template specializations, and static data
members. The mechanics are (mostly) present, but the semantic analysis
is very weak.
llvm-svn: 82789
2009-09-25 18:43:00 +00:00
Daniel Dunbar
e9266a3ee1
Add RUN line.
...
llvm-svn: 81654
2009-09-12 23:06:30 +00:00
Anders Carlsson
085af1fd29
Add a test for PR3733.
...
llvm-svn: 81622
2009-09-12 19:35:43 +00:00
Mike Stump
11289f4280
Remove tabs, and whitespace cleanups.
...
llvm-svn: 81346
2009-09-09 15:08:12 +00:00
Douglas Gregor
684582b632
Improve top-level-semicolon test a bit
...
llvm-svn: 79913
2009-08-24 12:20:57 +00:00
Douglas Gregor
8b9575f27e
Top-level semicolons are allowed in C++0x. Fixes PR4755.
...
llvm-svn: 79912
2009-08-24 12:17:54 +00:00
John McCall
07e91c04ba
First pass at friend semantics.
...
llvm-svn: 78274
2009-08-06 02:15:43 +00:00