summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDecl.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Don't warn about address-to-member used as part of initialisation, ifJoerg Sonnenberger2012-06-171-1/+1
| | | | | | the member expression is in parentheses. llvm-svn: 158651
* Explicitly build __builtin_va_list.Meador Inge2012-06-161-2/+0
| | | | | | | The target specific __builtin_va_list types are now explicitly built instead of injecting strings into the preprocessor input. llvm-svn: 158592
* [AST/libclang] Fix the selector locations that are reported for aArgyrios Kyrtzidis2012-06-161-2/+0
| | | | | | | | | | | | | | | | | | | | | | method definition that has its '{' attached to the method name without a space. With a method like: -(id)meth{ ..... } the logic in ObjCMethodDecl that determined the selector locations got confused because it was initialized based on an end location for '{' but that end location changed to '}' after the method was finished. Fix this by having an immutable end location for the declarator and for getLocEnd() get the end location from the body itself. Fixes rdar://11659739. llvm-svn: 158583
* Recover when correcting an unknown type name to a keyword like "struct".Kaelyn Uhrain2012-06-151-12/+16
| | | | llvm-svn: 158573
* Move isCXXSimpleTypeSpecifier from Parser to Sema and tweak it for wider use.Kaelyn Uhrain2012-06-151-0/+36
| | | | llvm-svn: 158572
* If parsing a trailing-return-type fails, don't pretend we didn't have one atRichard Smith2012-06-121-1/+1
| | | | | | all. Suppresses follow-on errors mentioned in PR13074. llvm-svn: 158348
* PR13064: Store whether an in-class initializer uses direct or copyRichard Smith2012-06-101-7/+9
| | | | | | | initialization, and use that information to produce the right kind of initialization during template instantiation. llvm-svn: 158288
* Warn in ObjC++ when an 'auto' variable deduces type 'id'.Jordan Rose2012-06-081-0/+11
| | | | | | | | | | | | | | | | | | | | This could happen for cases like this: - (NSArray *)getAllNames:(NSArray *)images { NSMutableArray *results = [NSMutableArray array]; for (auto img in images) { [results addObject:img.name]; } return results; } Here the property access will fail because 'img' has type 'id', rather than, say, NSImage. This warning will not fire in templated code, since the 'id' could have come from a template parameter. llvm-svn: 158239
* Allow friend declarations of defaulted special member functions. OnlyRichard Smith2012-06-081-1/+1
| | | | | | definitions of such members are prohibited, not mere declarations. llvm-svn: 158186
* Teach the FixIt in DiagnoseInvalidRedeclaration how to replace the writtenKaelyn Uhrain2012-06-071-5/+9
| | | | | | | nested name specifiers in addition to the function's identifier when the correction has a different nested name specifier. llvm-svn: 158178
* Ignore corrections to functions with bodies when deciding whichKaelyn Uhrain2012-06-071-9/+27
| | | | | | correction to use for an invalid function redeclaration. llvm-svn: 158177
* Revert Decl's iterators back to pointer value_type rather than reference ↵David Blaikie2012-06-061-2/+2
| | | | | | | | | | | | | | value_type In addition, I've made the pointer and reference typedef 'void' rather than T* just so they can't get misused. I would've omitted them entirely but std::distance likes them to be there even if it doesn't use them. This rolls back r155808 and r155869. Review by Doug Gregor incorporating feedback from Chandler Carruth. llvm-svn: 158104
* objective-c: merge deprecated/unavailable attributes toFariborz Jahanian2012-06-051-5/+2
| | | | | | | the overriding deprecated/unavailable method. // rdar://11475360 llvm-svn: 158022
* Disable -Wunique-enum for anonymous enums.David Blaikie2012-05-301-2/+4
| | | | | | | | | | | | | This is a large class of false positives where anonymous enums are used to declare constants (see Clang's Diagnostics.h for example). A small number of true positives could probably be found in this bucket by still warning if the anonymous enum is used in a declarator (enum { ... } x;) but so far we don't believe this to be a source of significant benefit so I haven't bothered to preserve those cases. General offline review/acknowledgment by rtrieu. llvm-svn: 157713
* Add new -Wunique-enum which will warn on enums which all elements have theRichard Trieu2012-05-301-0/+43
| | | | | | | | | | | | same value and were initialized with literals. Clang will warn on code like this: enum A { FIRST = 1, SECOND = 1 }; llvm-svn: 157666
* Fix indentation.David Blaikie2012-05-261-3/+3
| | | | llvm-svn: 157510
* Centralize the handling of the "attribute declaration must precede definition"Rafael Espindola2012-05-181-23/+21
| | | | | | | warning. This also makes us warn on tags, which, ironically, is the only case gcc warns on. llvm-svn: 157039
* A selector match between two Objective-C methods does *not* guaranteeDouglas Gregor2012-05-171-2/+3
| | | | | | | | that the methods have the same number of parameters, although we certainly assumed this in many places. Objective-C can be insane sometimes. Fixes <rdar://problem/11460990>. llvm-svn: 157025
* Remove word 'block' from option and diagnostic I addedFariborz Jahanian2012-05-151-1/+1
| | | | | | in r156825. llvm-svn: 156831
* objective-c nonfragile abi: discourage ivar declarationsFariborz Jahanian2012-05-151-1/+5
| | | | | | | in @interface by issuing warning (off by default) under opt'ed in flag -Winterface-block-ivar. // rdar://10763173 llvm-svn: 156825
* objc: allow typedef'ing an id to a pointer to a c-struct only.Fariborz Jahanian2012-05-141-6/+16
| | | | | | // rdar://11356439 llvm-svn: 156788
* Refactor all theRafael Espindola2012-05-131-23/+20
| | | | | | | | | if (Inherited) Attr->setInherited(true); To a central location. llvm-svn: 156728
* Produce a warning for mismatched section attributes. Completest pr9356.Rafael Espindola2012-05-131-0/+3
| | | | llvm-svn: 156727
* Fix a recent regression with the merging of format attributes.Rafael Espindola2012-05-111-0/+4
| | | | llvm-svn: 156597
* Fix an old (2009) FIXME:Rafael Espindola2012-05-101-13/+34
| | | | | | | | | | | | | | | | | | | | | // FIXME: This needs to happen before we merge declarations. Then, // let attribute merging cope with attribute conflicts. This was already being done for variables, but for functions we were merging then first and then applying the attributes. To avoid duplicating merging logic, some of the helpers in SemaDeclAttr.cpp become methods that can handle merging two attributes in one decl or inheriting attributes from one decl to another. With this change we are now able to produce errors for variables with incompatible visibility attributes or warn about unused dllimports in variables. This changes the attribute list iteration back to being in reverse source code order, as that matches what decl merging does and avoids differentiating the two cases is the merge*Attr methods. llvm-svn: 156531
* objective-c. Fixes a 'fixit' where location ofFariborz Jahanian2012-05-091-1/+2
| | | | | | | '*' on objective-c class name was misplaced. // rdar://11311333 llvm-svn: 156517
* Update the SelfReferenceChecker. Refactored some of the visitor methods.Richard Trieu2012-05-091-31/+49
| | | | | | | Added support for conditional operators and tightened the exclusion of the unary operator from all operators to only the address of operator. llvm-svn: 156450
* Split mergeAvailabilityAttr out of handleAvailabilityAttr. This is importantRafael Espindola2012-05-061-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | for having a uniform logic for adding attributes to a decl. This in turn is needed to fix the FIXME: // FIXME: This needs to happen before we merge declarations. Then, // let attribute merging cope with attribute conflicts. ProcessDeclAttributes(S, NewFD, D, /*NonInheritable=*/false, /*Inheritable=*/true); The idea is that mergeAvailabilityAttr will become a method. Once attributes are processed before merging, it will be called from handleAvailabilityAttr to handle multiple attributes in one decl: void f(int) __attribute__((availability(ios,deprecated=3.0), availability(ios,introduced=2.0))); and from SemaDecl.cpp to handle multiple decls: void f(int) __attribute__((availability(ios,deprecated=3.0))); void f(int) __attribute__((availability(ios,introduced=2.0))); As a bonus, use the new structure to diagnose incompatible availability attributes added to different decls (see included testcases). llvm-svn: 156269
* Switch RequireLiteralType() off of PartialDiagnostic.Douglas Gregor2012-05-041-1/+1
| | | | llvm-svn: 156178
* Revert most of r154844, which was disabled in r155975. Keep around theRichard Smith2012-05-021-1/+1
| | | | | | | refactorings in that revision, and some of the subsequent bugfixes, which seem to be relevant even without delayed exception specification parsing. llvm-svn: 156031
* Try harder to recognize hidden tag type names in potential declarations insteadKaelyn Uhrain2012-05-021-44/+70
| | | | | | of giving unhelpful errors about undeclared identifers and missing semicolons. llvm-svn: 155965
* Add FixItHint for -Wnull-conversion to initialize with an appropriate literal.David Blaikie2012-04-301-6/+8
| | | | | | Reviewed by Doug Gregor. llvm-svn: 155839
* HandleDeclarator() returns NULL for semantic disasters. Deal with itDouglas Gregor2012-04-301-1/+1
| | | | | | | when we're in an Objective-C container context. Fixes <rdar://problem/11286701>. llvm-svn: 155836
* Remove the ref/value inconsistency in filter_decl_iterator.David Blaikie2012-04-301-5/+5
| | | | | | | | | | | | | filter_decl_iterator had a weird mismatch where both op* and op-> returned T* making it difficult to generalize this filtering behavior into a reusable library of any kind. This change errs on the side of value, making op-> return T* and op* return T&. (reviewed by Richard Smith) llvm-svn: 155808
* Imrpove the note text for when a non-type decl hides a tag typeKaelyn Uhrain2012-04-271-1/+1
| | | | llvm-svn: 155723
* Add note to help explain why a tag such as 'struct' is needed to referKaelyn Uhrain2012-04-261-0/+8
| | | | | | | to a given type, when the reason is that there is a non-type decl with the same name. llvm-svn: 155677
* Fix regression in r154844. If necessary, defer computing adjusted destructorRichard Smith2012-04-211-15/+0
| | | | | | | exception specifications in C++11 until after we've parsed the exception specifications for nested classes. llvm-svn: 155293
* PR12569: Instantiate exception specifications of explicit instantiationsRichard Smith2012-04-171-2/+5
| | | | | | and explicit specializations of function templates appropriately. llvm-svn: 154956
* Implement the last part of C++ [class.mem]p2, delaying the parsing ofDouglas Gregor2012-04-161-2/+8
| | | | | | | | | exception specifications on member functions until after the closing '}' for the containing class. This allows, for example, a member function to throw an instance of its own class. Fixes PR12564 and a fairly embarassing oversight in our C++98/03 support. llvm-svn: 154844
* Implement C++11 [expr.prim.general]p3, which permits the use of 'this'Douglas Gregor2012-04-161-1/+8
| | | | | | | | | | | | | | | | | | | | | | | in the declaration of a non-static member function after the (optional) cv-qualifier-seq, which in practice means in the exception specification and late-specified return type. The new scheme here used to manage 'this' outside of a member function scope is more general than the Scope-based mechanism previously used for non-static data member initializers and late-parsesd attributes, because it can also handle the cv-qualifiers on the member function. Note, however, that a separate pass is required for static member functions to determine whether 'this' was used, because we might not know that we have a static function until after declaration matching. Finally, this introduces name mangling for 'this' and for the implicit 'this', which is intended to match GCC's mangling. Independent verification for the new mangling test case would be appreciated. Fixes PR10036 and PR12450. llvm-svn: 154799
* PR12500: Improve the wording of the diagnostic for a redefinition of a nameRichard Smith2012-04-131-1/+1
| | | | | | in the wrong namespace scope. Patch by Jonathan Sauer! llvm-svn: 154656
* Fixed scoping error for late parsed attributes in nested classes.DeLesley Hutchins2012-04-061-1/+16
| | | | llvm-svn: 154173
* Replace the workaround from r153445 with a proper fix.Kaelyn Uhrain2012-04-031-14/+6
| | | | | | | | | | | | | Infinite recursion was happening when DiagnoseInvalidRedeclaration called ActOnFunctionDeclarator to check if a typo correction works when the correction was just to the nested-name-specifier because the wrong DeclContext was being passed in. Unlike a number of functions surrounding typo correction, the DeclContext passed in for a function is the context of the function name after applying any nested name specifiers, not the lexical DeclContext where the function+nested-name-specifier appears. llvm-svn: 153962
* Implement DR1402: if a field or base class is not movable, the derived class'sRichard Smith2012-04-021-2/+3
| | | | | | | | | | | move constructor/move assignment operator are not declared, rather than being defined as deleted, so move operations on the derived class fall back to copying rather than moving. If a move operation on the derived class is explicitly defaulted, the unmovable subobject will be copied instead of being moved. llvm-svn: 153883
* Basic semantic analysis support for inheriting constructor declarations inRichard Smith2012-04-021-1/+1
| | | | | | dependent contexts. llvm-svn: 153858
* Unify and fix our checking of C++ [dcl.meaning]p1's requirementsDouglas Gregor2012-03-281-85/+115
| | | | | | | | | concerning qualified declarator-ids. We now diagnose extraneous qualification at namespace scope (which we had previously missed) and diagnose these qualification errors for all kinds of declarations; it was rather uneven before. Fixes <rdar://problem/11135644>. llvm-svn: 153577
* When diagnosing an invalid out-of-line redeclaration, don't permitDouglas Gregor2012-03-261-1/+8
| | | | | | | typo correction to introduce a nested-name-specifier; we aren't prepared to handle it here. Fixes PR12297 / <rdar://problem/11075219>. llvm-svn: 153445
* Delay checking of dependent underlying types for redeclarations of memberRichard Smith2012-03-261-1/+3
| | | | | | enumerations in templates until the template is instantiated. llvm-svn: 153426
* When defining a forward-declared enum, don't try to attach the definition toRichard Smith2012-03-231-2/+3
| | | | | | | a previous declaration if the redeclaration is invalid. That way lies madness. Fixes a crash-on-invalid reported by Abramo. llvm-svn: 153349
* Support for definitions of member enumerations of class templates outside theRichard Smith2012-03-231-4/+13
| | | | | | | class template's definition, and for explicit specializations of such enum members. llvm-svn: 153304
OpenPOWER on IntegriCloud