John McCall
39e8288b40
Implement non-dependent friend functions and classes.
...
llvm-svn: 98764
2010-03-17 20:01:29 +00:00
John McCall
71ba5f27de
ActOnTagDefinitionError is supposed to 'unwind' ActOnTagStartDefinition, not
...
ActOnStartCXXMemberDeclaration. We haven't started the field collector on this
class yet, so don't stop it. Fixes a crash in the VS buildbot and a memory error
on all the others.
llvm-svn: 98760
2010-03-17 19:25:57 +00:00
Douglas Gregor
319aa6c4b5
Remove warning about shadowing a built-in; built-ins aren't actually
...
considered to be a part of the translation unit unless they're named
in a way that brings them into existence.
llvm-svn: 98729
2010-03-17 16:03:44 +00:00
Douglas Gregor
4ad3da2843
Entering the main source file in the preprocessor can fail if the
...
source file has been changed. Handle that failure more gracefully.
llvm-svn: 98727
2010-03-17 15:44:30 +00:00
John McCall
fb803d7dcb
Grant nested classes the access privileges of their enclosing classes.
...
llvm-svn: 98710
2010-03-17 04:58:56 +00:00
John McCall
2ff380a43a
Clean up after ourselves when there's an error parsing the base clause.
...
Fixes the crash-on-invalid in PR6629.
llvm-svn: 98698
2010-03-17 00:38:33 +00:00
Fariborz Jahanian
b8b0ea330c
objective-c patch to provide type safty when blocks are passing or
...
returning objc objects. There will be a corresponding objective-c++
patch soon.
llvm-svn: 98696
2010-03-17 00:20:01 +00:00
Fariborz Jahanian
fa24e1066f
Issue error when a byref array is accessed in a block
...
literal. Fixes radar 7760213.
llvm-svn: 98693
2010-03-16 23:39:51 +00:00
Douglas Gregor
dc970f0866
Audit all Preprocessor::getSpelling() callers, improving failure
...
recovery for those that need it.
llvm-svn: 98689
2010-03-16 22:30:13 +00:00
John McCall
a2a3f7dc11
Implement -Wshadow. Based on a patch by Mike M.!
...
llvm-svn: 98684
2010-03-16 21:48:18 +00:00
John McCall
a630995f50
Perform access control for the implicit calls to base and member destructors
...
that occur in constructors (on the unwind path).
llvm-svn: 98681
2010-03-16 21:39:52 +00:00
Benjamin Kramer
eb92dc0b09
Let SourceManager::getBufferData return StringRef instead of a pair of two const char*.
...
llvm-svn: 98630
2010-03-16 14:14:31 +00:00
John McCall
ab8c273b4f
Access control for implicit calls to copy assignment operators and copy
...
constructors from implicitly-defined members.
llvm-svn: 98614
2010-03-16 06:11:48 +00:00
John McCall
f857e0bbe7
Perform access control even for the implicit destructor calls from implicit
...
destructor definitions. Remove some code duplication.
llvm-svn: 98611
2010-03-16 05:36:30 +00:00
John McCall
1064d7ef29
Perform access control for the implicit base and member destructor calls
...
required when emitting a destructor definition.
llvm-svn: 98609
2010-03-16 05:22:47 +00:00
Douglas Gregor
e0fbb83b8b
Give SourceManager a Diagnostic object with which to report errors,
...
and start simplifying the interfaces in SourceManager that can fail.
llvm-svn: 98594
2010-03-16 00:06:06 +00:00
Douglas Gregor
802b77601e
Introduce a new BufferResult class to act as the return type of
...
SourceManager's getBuffer() (and similar) operations. This abstract
can be used to force callers to cope with errors in getBuffer(), such
as missing files and changed files. Fix a bunch of callers to use the
new interface.
Add some very basic checks for file consistency (file size,
modification time) into ContentCache::getBuffer(), although these
checks don't help much until we've updated the main callers (e.g.,
SourceManager::getSpelling()).
llvm-svn: 98585
2010-03-15 22:54:52 +00:00
Ted Kremenek
4fb821ec0d
Make 'findPropertyDecl()' a static method of ObjCPropertyDecl.
...
llvm-svn: 98570
2010-03-15 20:11:46 +00:00
Ted Kremenek
679708ee34
Correctly determine if the @property has been previously declared. If
...
a property has the same name as the ivar it wraps then the old logic
wouldn't find the previous property declaration.
llvm-svn: 98559
2010-03-15 18:47:25 +00:00
Fariborz Jahanian
b397e43dea
objective-c++ must take into account qualifiers when
...
considering valid objc pointer converions.
llvm-svn: 98557
2010-03-15 18:36:00 +00:00
Douglas Gregor
ea16606fcd
During C++ name lookup, use DeclContext::Equals() rather than
...
comparing DeclContext pointers, to avoid having to remember to call
getPrimaryContext() everywhere. This is the last part PR6594.
llvm-svn: 98546
2010-03-15 15:26:48 +00:00
Douglas Gregor
6623006249
Implement C++ [temp.local]p8, which specifies that a template
...
parameter hides a namespace-scope declararion with the same name in an
out-of-line definition of a template. The lookup requires a strange
interleaving of lexical and semantic scopes (go C++), which I have not
yet handled in the typo correction/code completion path.
Fixes PR6594.
llvm-svn: 98544
2010-03-15 14:33:29 +00:00
John McCall
c33dec3664
Add support for -Wwrite-strings. Patch by Mike M! Fixes PR 4804.
...
llvm-svn: 98541
2010-03-15 10:54:44 +00:00
John McCall
3e11ebebc8
Remember declaration scope qualifiers in the AST. Imposes no memory overhead
...
on unqualified declarations.
Patch by Enea Zaffanella! Minimal adjustments: allocate the ExtInfo nodes
with the ASTContext and delete them during Destroy(). I audited a bunch of
Destroy methods at the same time, to ensure that the correct teardown was
being done.
llvm-svn: 98540
2010-03-15 10:12:16 +00:00
Rafael Espindola
13327bbe55
Fix PR6562. If a type is dependent, we don't know if it will have implicit
...
destructors.
llvm-svn: 98440
2010-03-13 18:12:56 +00:00
Kovarththanan Rajaratnam
ba2c65277a
Use SmallString instead of SmallVector
...
llvm-svn: 98436
2010-03-13 10:17:05 +00:00
Jeffrey Yasskin
f6442f80cb
Allow users to set CPPFLAGS and CXXFLAGS on the make command line.
...
Tested: make CPPFLAGS=-m64 CXXFLAGS=-m64 -j8 && (cd tools/clang;make test)
llvm-svn: 98399
2010-03-12 22:55:16 +00:00
Ted Kremenek
f59409623e
Use llvm::SmallVector instead of std::vector.
...
llvm-svn: 98397
2010-03-12 22:22:36 +00:00
John McCall
b5fe7094b2
Preserve the inherited-default-argument bit through instantiation.
...
llvm-svn: 98375
2010-03-12 20:02:47 +00:00
John McCall
f3cd665d5a
Remember whether a ParmVarDecl was spelled with a default argument or
...
whether it inherited one from a previous declaration.
Patch by Enea Zaffanella!
llvm-svn: 98362
2010-03-12 18:31:32 +00:00
John McCall
c493a73240
Improve the unused-value check to look into comma expressions and filter out
...
voids in sub-expressions. Patch by Mike M!
Fixes PR4806.
llvm-svn: 98335
2010-03-12 07:11:26 +00:00
Ted Kremenek
959e830292
Split Sema::ActOnProperty() into two recursive functions to clearly separate
...
the handling of class extensions from other cases.
llvm-svn: 98326
2010-03-12 02:31:10 +00:00
John McCall
16927f6274
Implement basic support for friend types and functions in non-dependent
...
contexts.
llvm-svn: 98321
2010-03-12 01:19:31 +00:00
Ted Kremenek
90e2fc2fb3
Fix 80 col violations.
...
llvm-svn: 98320
2010-03-12 00:49:00 +00:00
Ted Kremenek
ac597f3416
Move 'ActOn' methods to the beginning of the file
...
so we can clearly see the parser entry points.
llvm-svn: 98319
2010-03-12 00:46:40 +00:00
Ted Kremenek
fd1d11c020
Update CMake build.
...
llvm-svn: 98318
2010-03-12 00:38:40 +00:00
Ted Kremenek
7a7a0808b9
Split Sema logic for ObjC @property and @synthesize into
...
a separate file.
llvm-svn: 98317
2010-03-12 00:38:38 +00:00
Ted Kremenek
86838aafee
For ivars created using @synthesize, set their DeclContext to be
...
the @implementation (instead of the @interface) and actually add
the ivar to the DeclContext (which we weren't doing before).
This allows us to simplify ASTContext::CollectNonClassIvars() by
removing ASTContext::CollectProtocolSynthesizedIvars(). Now all
ivars can be found by either inspecting the ObjCInterfaceDecl and
its companion ObjCImplementationDecl.
llvm-svn: 98280
2010-03-11 19:44:54 +00:00
John McCall
71d8d9b468
Warn about comparing an unsigned expression with 0 in tautological ways.
...
Patch by mikem!
llvm-svn: 98279
2010-03-11 19:43:18 +00:00
John McCall
e40b58ec2f
Implement -Wmissing-field-initializers. Patch by mikem!
...
llvm-svn: 98275
2010-03-11 19:32:38 +00:00
John McCall
45d878b0f0
Fix a self-host problem caused by this over-eager assertion. I'm not sure
...
there's a good equivalent that's actually true, unfortunately.
llvm-svn: 98253
2010-03-11 09:33:17 +00:00
John McCall
58f10c3380
Maintain type source information for functions through template
...
instantiation. Based on a patch by Enea Zaffanella! I found a way to
reduce some of the redundancy between TreeTransform's "standard"
FunctionProtoType transformation and TemplateInstantiator's override,
and I killed off the old SubstFunctionType by adding type source info
for the last cases where we were creating FunctionDecls without TSI
(at least that get passed through template instantiation).
llvm-svn: 98252
2010-03-11 09:03:00 +00:00
John McCall
bbbbe4eaaf
Split C++ friend declarations into their own header/implementation file.
...
I'm expecting this portion of the AST to grow and change, and I'd like to
be able to do that with minimal recompilation. If this proves unnecessary
when access control is fully-implemented, I'll fold the classes back into
DeclCXX.h.
llvm-svn: 98249
2010-03-11 07:50:04 +00:00
Douglas Gregor
6cf3f3c75e
Statement expressions can be used in global- or namespace-scoped blocks
...
llvm-svn: 98135
2010-03-10 04:54:39 +00:00
John McCall
e78aac41de
Create a new InjectedClassNameType to represent bare-word references to the
...
injected class name of a class template or class template partial specialization.
This is a non-canonical type; the canonical type is still a template
specialization type. This becomes the TypeForDecl of the pattern declaration,
which cleans up some amount of code (and complicates some other parts, but
whatever).
Fixes PR6326 and probably a few others, primarily by re-establishing a few
invariants about TypeLoc sizes.
llvm-svn: 98134
2010-03-10 03:28:59 +00:00
Rafael Espindola
e7113ca907
Delay codegen of vtables when handling implicit instantiations.
...
This fixes PR6474.
llvm-svn: 98123
2010-03-10 02:19:29 +00:00
Douglas Gregor
de4827dd34
Extend ObjCMessageExpr for class method sends with the source location
...
of the class name.
llvm-svn: 97943
2010-03-08 16:40:19 +00:00
Douglas Gregor
12852d9521
Keep track of type source information in the return type of an
...
Objective-C method declaration, e.g., for
- (Foo *)myMethod;
we now have TypeSourceInfo for the Foo*.
llvm-svn: 97942
2010-03-08 14:59:44 +00:00
Duncan Sands
7a9ba76825
Remove unused headers.
...
llvm-svn: 97941
2010-03-08 11:29:03 +00:00
Douglas Gregor
0aad774232
Make a note for the C++0x future, when we'll have to revisit the jump-diagnostics handling for variables without initializers
...
llvm-svn: 97929
2010-03-08 02:49:08 +00:00