Douglas Gregor
613bf10470
Enter the scope of an initializer for direct-initialization as well as
...
for copy-initialization.
llvm-svn: 91909
2009-12-22 17:47:17 +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
Chris Lattner
bf5fff5fbb
refactor asm stmt parsing to avoid nesting as much, and
...
pull ':' eating out of ParseAsmOperandsOpt.
llvm-svn: 91801
2009-12-20 23:00:41 +00:00
John McCall
1c7e6ec27b
Don't inject the class name until that magical lbrace.
...
Because of the rules of base-class lookup* and the restrictions on typedefs, it
was actually impossible for this to cause any problems more serious than the
spurious acceptance of
template <class T> class A : B<A> { ... };
instead of
template <class T> class A : B<A<T> > { ... };
but I'm sure we can all agree that that is a very important restriction which
is well worth making another Parser->Sema call for.
(*) n.b. clang++ does not implement these rules correctly; we are not ignoring
non-type names
llvm-svn: 91792
2009-12-20 07:58:13 +00:00
John McCall
2d814c305e
Parse base specifiers within the scope of the class. This is possibly not
...
quite right; I'll come back to it later. It does fix PR 5741.
llvm-svn: 91789
2009-12-19 21:48:58 +00:00
John McCall
6df5fef637
Refactor to remove more dependencies on PreDeclaratorDC. I seem to have made
...
the redeclaration problems in the [temp.explicit]p3 testcase worse, but I can
live with that; they'll need to be fixed more holistically anyhow.
llvm-svn: 91771
2009-12-19 10:49:29 +00:00
John McCall
1f4ee7bd2f
Just push a new scope when parsing an out-of-line variable definition.
...
Magically fixes all the terrible lookup problems associated with not pushing
a new scope. Resolves an ancient xfail and an LLVM misparse.
llvm-svn: 91769
2009-12-19 09:28:58 +00:00
Chris Lattner
25d862bb17
eliminate a call to NextToken() when parsing ::foo
...
llvm-svn: 91738
2009-12-19 01:11:05 +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
Anders Carlsson
afb2dade0c
Check in a rudimentary FullExpr class that isn't used anywhere yet. Rename Action::FullExpr to Action::MakeFullExpr to avoid name clashes.
...
llvm-svn: 91494
2009-12-16 02:09:40 +00:00
John McCall
9dab4e68b9
Remember the type name's scope specifier in the DeclSpec.
...
llvm-svn: 91215
2009-12-12 11:40:51 +00:00
Jeffrey Yasskin
1615d45daa
Un-namespace-qualify llvm_unreachable. It's a macro, so the qualification gave
...
no extra safety anyway.
llvm-svn: 91207
2009-12-12 05:05:38 +00:00
John McCall
2b058ef245
Don't enter a new scope for a namespace-qualified declarator unless we're
...
in a file context. In well-formed code, only happens with friend functions.
Fixes PR 5760.
llvm-svn: 91146
2009-12-11 20:04:54 +00:00
John McCall
a009726ce3
Implement access declarations. Most of the work here is parsing them, which
...
is difficult because they're so terribly, terribly ambiguous.
We implement access declarations in terms of using declarations, which is
quite reasonable. However, we should really persist the access/using
distinction in the AST and use the appropriate name in diagnostics. This
isn't a priority, so I'll just file a PR and hope someone else does it. :)
llvm-svn: 91095
2009-12-11 02:10:03 +00:00
Mike Stump
6da5d75449
Implement just a bit more of inline assembly.
...
llvm-svn: 91079
2009-12-11 00:04:56 +00:00
Benjamin Kramer
e9ff5fe2e6
Privatize class members.
...
llvm-svn: 91067
2009-12-10 21:50:21 +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
b2434d558d
Second half of r91023, saving files is good.
...
llvm-svn: 91024
2009-12-10 00:45:15 +00:00
Chris Lattner
5701386620
move GreaterThanIsOperatorScope into RAIIObjectsForParser. Add some more
...
TODOs for other classes that could be moved out of Parser.h. I don't plan
to do these in the near term though.
llvm-svn: 91023
2009-12-10 00:44:03 +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
d5c1c9d0ae
refactor the 'ColonIsSacred' argument to ParseOptionalCXXScopeSpecifier
...
to be a bool in Parser that is twiddled by the ColonProtectionRAIIObject
class. No functionality change.
llvm-svn: 91014
2009-12-10 00:32:41 +00:00
Chris Lattner
8a9a97a660
rename ExtensionRAIIObject.h -> RAIIObjectsForParser.h
...
llvm-svn: 91008
2009-12-10 00:21:05 +00:00
Nuno Lopes
221c1fd63e
spread 'const' love to some variables. this considerably reduces the amount of dirty data around.
...
llvm-svn: 91002
2009-12-10 00:07:02 +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
3ababf5340
reduce nesting.
...
llvm-svn: 90769
2009-12-07 16:33:19 +00:00
Douglas Gregor
bc7c5e471a
Code completion for Objective-C @ keywords that are statements or expressions
...
llvm-svn: 90757
2009-12-07 09:51:25 +00:00
Douglas Gregor
f48706c787
Code completion for Objective-C @ directives
...
llvm-svn: 90756
2009-12-07 09:27:33 +00:00
Chris Lattner
d62268a668
remove some defaulted params for consistency.
...
llvm-svn: 90731
2009-12-07 01:38:03 +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
Chris Lattner
8c56c49fe0
simplify logic.
...
llvm-svn: 90712
2009-12-06 18:34:27 +00:00
Chris Lattner
3c7b86f4ee
remove some extraneous syntax: sourceloc implicitly converts to sourcerange.
...
llvm-svn: 90710
2009-12-06 17:36:05 +00:00
John McCall
064d77b7c2
Lift the ObjCPropertyCallback out of local scope to unbreak VS2005 builds.
...
Make it an inner class of Parser to assuage access control.
No functionality change.
llvm-svn: 90491
2009-12-03 22:31:13 +00:00
Sebastian Redl
79eba1ca3b
Introduce the notion of literal types, as specified in C++0x.
...
llvm-svn: 90361
2009-12-03 00:13:20 +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
Benjamin Kramer
337e3a5fea
Remove remaining VISIBILITY_HIDDEN from anonymous namespaces.
...
llvm-svn: 90044
2009-11-28 19:45:26 +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
3ff3af4ff9
When the condition of a switch() statement is semantically invalid,
...
still parse the body of the switch to try to avoid spurious
diagnostics. Fixes PR5606.
llvm-svn: 89847
2009-11-25 06:20:02 +00:00
Alexis Hunt
54a0254887
Parse C++ member check attributes - base_check, hiding, and override.
...
The attributes are currently ignored.
llvm-svn: 89837
2009-11-25 04:20:27 +00:00
Fariborz Jahanian
906d871e6c
Some fancy footwork to move the decision on how
...
to build casted expression-list AST to Sema.
llvm-svn: 89827
2009-11-25 01:26:41 +00:00
Douglas Gregor
7bab5ff8e7
Eliminate CXXConditionDeclExpr with extreme prejudice.
...
All statements that involve conditions can now hold on to a separate
condition declaration (a VarDecl), and will use a DeclRefExpr
referring to that VarDecl for the condition expression. ForStmts now
have such a VarDecl (I'd missed those in previous commits).
Also, since this change reworks the Action interface for
if/while/switch/for, use FullExprArg for the full expressions in those
expressions, to ensure that we're emitting
Note that we are (still) not generating the right cleanups for
condition variables in for statements. That will be a follow-on
commit.
llvm-svn: 89817
2009-11-25 00:27:52 +00:00
Sebastian Redl
d6f7850117
Have the parser tell sema whether a member declaration is a function definition. This allows sema to not emit spurious diagnostics in some invalid code.
...
llvm-svn: 89816
2009-11-24 23:38:44 +00:00
Douglas Gregor
7f800f9d50
"Do" loops cannot have condition variables, so don't parse them.
...
llvm-svn: 89801
2009-11-24 21:34:32 +00:00
Fariborz Jahanian
3f21c159dc
Fix a recent regression probably caused by addition of altivec-style
...
type-casts in the parser.
llvm-svn: 89691
2009-11-23 19:51:43 +00:00