aboutsummaryrefslogtreecommitdiff
path: root/lib/Parse/ParseDecl.cpp
AgeCommit message (Collapse)Author
2012-01-27Added source location for the template keyword in AST template-id expressions.Abramo Bagnara
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149127 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-27Avoid redundant NNS qualification in constructor/destructor names.Abramo Bagnara
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149124 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-27Be sure to emit delayed diagnostics after parsing the declarationJohn McCall
of a for-range variable. Fixes PR11793. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149109 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-23fixes location of "availability" attribute so warning is displayed atFariborz Jahanian
its line. // rdar://10711037 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148747 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-21Make clang's AST model sizeof and typeof with potentially-evaluated operands ↵Eli Friedman
correctly, similar to what we already do with typeid. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148610 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-20Delayed template instantiation of late-parsed attributes.DeLesley Hutchins
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148595 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-19Extend the error of invalid token after declarations to include fixits for Richard Trieu
!=, %=, ^=, &=, *=, -=, |=, /=, <<=, <=, >=, and >>= to =. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148499 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-18Change the error when a '+=' follows a declaration to suggest a fixit to '=' ↵Richard Trieu
instead of just suggesting a ';'. Old error: plusequaldeclare1.cc:3:8: error: expected ';' at end of declaration int x += 6; ^ ; New error: plusequaldeclare1.cc:3:9: error: invalid '+=' at end of declaration; did you mean '='? int x += 6; ^~ = git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148433 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-13objc parsing. Fixes a crash when parsing array initializationFariborz Jahanian
inside a class implementation with parse errors. // rdar://10633434 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148074 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-12Improve 0-argument -Wvexing-parse diagnostic by adding notes with fix-its:Richard Smith
- If the declarator is at the start of a line, and the previous line contained another declarator and ended with a comma, then that comma was probably a typo for a semicolon: int n = 0, m = 1, l = 2, // k = 5; myImportantFunctionCall(); // oops! - If removing the parentheses would correctly initialize the object, then produce a note suggesting that fix. - Otherwise, if there is a simple initializer we can suggest which performs value-initialization, then provide a note suggesting a correction to that initializer. Sema::Declarator now tracks the location of the comma prior to the declarator in the declaration, if there is one, to facilitate providing the note. The code to determine an appropriate initializer from the -Wuninitialized warning has been factored out to allow use in both that and -Wvexing-parse. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148072 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-10Update C++11 scoped enumeration support to match the final proposal:Richard Smith
- reject definitions of enums within friend declarations - require 'enum', not 'enum class', for non-declaring references to scoped enumerations git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147824 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-09Extend the diagnostic for a ',' at the end of a declaration where a ';' wasRichard Smith
intended to cover C++ class definitions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147808 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-07Fixed TypeofExpr AST and code generation.Abramo Bagnara
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147730 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-06Tweak to r147599 for PR10828: Move the check from the parser into sema, and useRichard Smith
the Semantic Powers to only warn on class types (or dependent types), where the constructor or destructor could do something interesting. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147642 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-05PR10828: Produce a warning when a no-arguments function is declared in blockRichard Smith
scope, when no other indication is provided that the user intended to declare a function rather than a variable. Remove some false positives from the existing 'parentheses disambiguated as a function' warning by suppressing it when the declaration is marked as 'typedef' or 'extern'. Add a new warning group -Wvexing-parse containing both of these warnings. The new warning is enabled by default; despite a number of false positives (and one bug) in clang's test-suite, I have only found genuine bugs with it when running it over a significant quantity of real C++ code. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147599 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-29Change the diagnostics which said 'accepted as an extension' to instead sayRichard Smith
'is an extension'. The former is inappropriate and confusing when building with -Werror/-pedantic-errors. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147357 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-23Mass rename C1x references to C11. The name hasn't proliferated like "C++0x" ↵Benjamin Kramer
so this patch is surprisingly small. Also drop -Wc1x-extensions in favor of -Wc11-extensions. I don't think we need to keep this around for compatibility. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147221 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-14Allow empty argument lists in thread safety attributesDeLesley Hutchins
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146580 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-10Add ability to supply additional message to availability macros,Fariborz Jahanian
// rdar://10095131 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146304 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09deprecated enum should not warn when used initializing another deprecated ↵Fariborz Jahanian
enumerator. // rdar://10535640 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146218 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-04Support decltype in nested-name-specifiers.David Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145785 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-30Revert most of r145372 for now. Lookahead beyond the ';' in a functionRichard Smith
declaration tickles a bug in the way we handle visibility pragmas. The improvement to error recovery for template function definitions declared with the 'typedef' specifier in r145372 is unrelated and not reverted here. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145541 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-29PR10101: Recover better from a common copy-paste error: if a functionRichard Smith
declaration at namespace scope is followed by a semicolon and an open-brace (or in C++, a 'try', ':' or '='), then the error is probably a function definition with a spurious ';', rather than a mysterious '{'. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145372 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-07Tighten up the conditions under which we consider ourselves to beDouglas Gregor
entering the context of a nested-name-specifier. Fixes <rdar://problem/10397846>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@143967 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-24Simplify parsing ellipsis in Parser::ParseAlignArgument, spotted by Doug.Peter Collingbourne
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142814 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-23Fix grammar for C++11 alignment specifiers, and add a few FIXMEs.Peter Collingbourne
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142760 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-19Improve the diagnostic when a comma ends up at the end of a declarator groupRichard Smith
instead of a semicolon (as sometimes happens during refactorings). When such a comma is seen at the end of a line, and is followed by something which can't possibly be a declarator (or even something which might be a plausible typo for a declarator), suggest that a semicolon was intended. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142544 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-19Improve the warning for cv-qualifiers on free functions, from Ahmed Charles!Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142478 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-18objc: allow class name qualified with protocols inFariborz Jahanian
iboutletcollection attribute. But ignore protocol list. // rdar://10296078 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142459 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-18objc: diagnose invalid argument to anFariborz Jahanian
iboutletcollection attribute intead of crashing. // rdar://10296078 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142364 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-17Refactor __attribute__ parsing, and add a diagnostic if the r_paren at the endRichard Smith
of an attrib is missing. gcc does not allow the closing parenthesis to be omitted. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142255 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-15Implement -Wc++98-compat warnings for the parser.Richard Smith
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142056 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-14Provide half floating point support as a storage only type.Anton Korobeynikov
Lack of half FP was a regression compared to llvm-gcc. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142016 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-12Introduce BalancedDelimiterTracker, to better track open/closeDouglas Gregor
delimiter pairs and detect when we exceed the implementation limit for nesting depth, from Aaron Ballman! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141782 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-11Add typo correction for type names.Kaelyn Uhrain
The main motivation was to do typo correction in C++ "new" statements, though picking it up in other places where type names are expected was pretty much a freebie. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141621 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-06Support for C1x _Atomic specifier (see testcase). This is primarily being ↵Eli Friedman
committed at the moment to help support C++0x <atomic>, but it should be a solid base for implementing the full specification of C1x _Atomic. Thanks to Jeffrey Yasskin for the thorough review! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141330 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-06OpenCL: add a non-standard extension, cl_clang_storage_class_specifiers,Peter Collingbourne
which enables support for C99 storage-class specifiers. This extension is intended to be used by implementations to implement OpenCL C built-in functions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141271 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-01Parse attributes written in an ObjC method parameter type asJohn McCall
attributes on the parameter declaration. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140944 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-29Add support for alignment-specifiers in C1X and C++11, removePeter Collingbourne
support for the C++0x draft [[align]] attribute and add the C1X standard header file stdalign.h git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140796 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-29Add support for parsing the optional attribute-specifier-seq at thePeter Collingbourne
end of a decl-specifier-seq git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140793 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-22ArrayRef-ifying the fields passed to Sema::ActOnFieldsDavid Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140293 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-17Rename LangOptions::Microsoft to LangOptions::MicrosoftExt to make it clear ↵Francois Pichet
that this flag must be used only for Microsoft extensions and not emulation; to avoid confusion with the new LangOptions::MicrosoftMode flag. Many of the code now under LangOptions::MicrosoftExt will eventually be moved under the LangOptions::MicrosoftMode flag. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139987 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-13Record the full source range of an attribute.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139599 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-09__module_private__ is inherited by redeclarations of an entity, andDouglas Gregor
must also be present of the first declaration of that entity. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139384 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-09Modules: introduce the __module_private__ declaration specifier, whichDouglas Gregor
indicates that a declaration is only visible within the module it is declared in. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139348 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-08Thread safety: added support for function scopes in attribute arguments.Caitlin Sadowski
This patch was written by DeLesley Hutchins. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139302 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-08Thread Safety: Patch to implement delayed parsing of attributes within aCaitlin Sadowski
class scope. This patch was also written by DeLesley Hutchins. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139301 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-08Allow C++0x enumerations with a fixed underlying type inDouglas Gregor
Objective-C. The @encode'ing of such an enumeration type is the same as its underlying type. <rdar://problem/5276348>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139297 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-04PR10458: Last part of providing 'auto' type specifier as an extension in ↵Richard Smith
C++98: permit it within type-ids. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139103 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-04PR10458: Finesse behaviour of C++0x features when in pre-0x mode. Accept ↵Richard Smith
for-range and auto with an ExtWarn, and produce a -Wc++0x-compat warning in C++98 mode when auto is used as a storage class. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139102 91177308-0d34-0410-b5e6-96231b3b80d8