| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 253136
|
|
|
|
| |
llvm-svn: 253134
|
|
|
|
|
|
|
|
|
|
| |
minor cleanups
Patch by Eugene Zelenko!
Differential Revision: http://reviews.llvm.org/D13406
llvm-svn: 249484
|
|
|
|
| |
llvm-svn: 249259
|
|
|
|
|
|
|
|
|
|
| |
If an import directive was put into wrong context, the error message was obscure,
complaining on misbalanced braces. To get more descriptive messages, annotation
tokens related to modules are processed where they must not be seen.
Differential Revision: http://reviews.llvm.org/D11844
llvm-svn: 248085
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(PR23542)
This enables Clang to correctly handle code such as:
struct __declspec(dllexport) S {
int x = 42;
};
where it would otherwise error due to trying to generate the default
constructor before the in-class initializer for x has been parsed.
Differential Revision: http://reviews.llvm.org/D11850
llvm-svn: 245139
|
|
|
|
|
|
| |
Parsing of pragmas followed by a class member declaration is outlined into a separate function Parser::ParseCXXClassMemberDeclarationWithPragmas().
llvm-svn: 243739
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
MSVC 2013 ships, as part of its STL implementation, a class named
'_Atomic'. This is unfortunate because this keyword is in conflict with
the C11 keyword with the same name. Our solution was to disable this
keyword when targeting MSVC 2013 and reenable it for 2015.
However, this makes it impossible for clang's headers to make use of
_Atomic. This is problematic in the case of libc++ as it makes heavy
use of this keyword.
Let the keywordness of _Atomic float under certain circumstances:
the body of a class named _Atomic, or a class with a base specifier
named _Atomic, will not have the keyword variant of _Atomic for the
duration of the class body. This is sufficient to allow us to correctly
handle _Atomic in the STL while permitting us to use _Atomic as a
keyword everywhere else.
Differential Revision: http://reviews.llvm.org/D11233
llvm-svn: 242970
|
|
|
|
| |
llvm-svn: 242744
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Clang used to silently ignore __declspec(novtable). It is implemented
now, but leaving the vtable uninitialized does not work when using the
Itanium ABI, where the class layout for complex class hierarchies is
stored in the vtable. It might be possible to honor the novtable
attribute in some simple cases and either report an error or ignore
it in more complex situations, but it’s not clear if that would be
worthwhile. There is also value in having a simple and predictable
behavior, so this changes clang to simply ignore novtable when not using
the Microsoft C++ ABI.
llvm-svn: 242730
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If a lambda used as default argument in a method declaration contained
a local class, that class was incorrectly recognized as nested class.
In this case compiler tried to postpone parsing of this class until
the enclosing class is finished, which caused crashes in some cases.
This change fixes PR13987.
Differential Revision: http://reviews.llvm.org/D11006
llvm-svn: 242132
|
|
|
|
|
|
|
|
|
|
|
|
| |
attribute blocks"
This reverts commit r239846 and r239879. They caused clang's
-fms-extensions behavior to incorrectly parse lambdas and includes a
testcase to ensure we don't regress again.
This issue was found in PR24027.
llvm-svn: 241668
|
|
|
|
|
|
| |
the class.
llvm-svn: 241425
|
|
|
|
|
|
| |
parse-merging.
llvm-svn: 241180
|
|
|
|
|
|
| |
clang\lib\Parse\ParseDeclCXX.cpp(2396): error C3486: a parameter for a lambda cannot have a default argument
llvm-svn: 241046
|
|
|
|
|
|
| |
disambiguation in the parser rather than trying to do it in Sema.
llvm-svn: 241032
|
|
|
|
|
|
|
|
|
|
|
|
| |
If a function containing a local class is instantiated, instantiate
all of local class member, including default arguments and exception
specifications.
This change fixes PR21332 and thus implements DR1484.
Differential Revision: http://reviews.llvm.org/D9990
llvm-svn: 240974
|
|
|
|
|
|
| |
is().
llvm-svn: 240008
|
|
|
|
|
|
|
|
|
|
|
| |
MS attributes do not permit empty attribute blocks. Correctly diagnose those.
We continue to parse to ensure that we recover correctly. Because the block is
empty, we do not need to skip any tokens.
Bonus: tweak the comment that I updated but forgot to remove the function name
in a previous commit.
llvm-svn: 239846
|
|
|
|
|
|
|
|
| |
Switch to using BalancedDelimiterTracker to get better diagnostics for
unbalanced delimiters. This still does not handle any of the attributes, simply
improves the parsing.
llvm-svn: 239758
|
|
|
|
|
|
| |
with a base-specifier inside a namespace.
llvm-svn: 239569
|
|
|
|
| |
llvm-svn: 237835
|
|
|
|
|
|
| |
definition into an imported but hidden definition.
llvm-svn: 237612
|
|
|
|
|
|
| |
imported but not visible definition.
llvm-svn: 236690
|
|
|
|
|
|
|
|
|
|
|
|
| |
__declspec(align(...)) is unlike all other attributes in that it is not
applied to a variable if it appears before the class-key. If the
tag in question isn't part of a variable declaration, it is not ignored.
Instead, the alignment attribute is applied to the tag.
This fixes PR18024.
llvm-svn: 235272
|
|
|
|
|
|
|
|
|
| |
Take advantage of the delayed typo no longer being eagerly corrected to
a keyword to filter out keyword corrections (and other things like
unresolved & overloaded expressions, which have placeholder types) when
correcting typos inside of a decltype().
llvm-svn: 234623
|
|
|
|
|
|
|
|
| |
attributes.
Found by afl-fuzz.
llvm-svn: 233499
|
|
|
|
|
|
|
|
| |
non-visible definition, skip the new definition and make the old one visible
instead of trying to parse it again and failing horribly. C++'s ODR allows
us to assume that the two definitions are identical.
llvm-svn: 233250
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
hints
Summary: Follow-up to the fix of PR22075.
Reviewers: rsmith
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D7012
llvm-svn: 233161
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: This fixes PR22075.
Reviewers: rsmith
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D6828
llvm-svn: 233160
|
|
|
|
|
|
|
|
| |
fixit hints"
This reverts commit 2131e63e2fdff7c831ab3bfe31facf2e3ebab03d.
llvm-svn: 233074
|
|
|
|
|
|
|
|
| |
generate fixit hints"
This reverts commit 49079d45966a3f57cd82edb35bde2e8e88fccf40.
llvm-svn: 233073
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
hints
Summary: Follow-up to the fix of PR22075.
Reviewers: rsmith
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D7012
llvm-svn: 233070
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: This fixes PR22075.
Reviewers: rsmith
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D6828
llvm-svn: 233069
|
|
|
|
|
|
|
|
|
|
| |
All ParseCXXInlineMethodDef does with it is assign it on the ParsingDeclarator.
Since that is passed in as well, the (single) caller may as well set the
DefinitionKind, thus simplifying the code.
No change in functionality.
llvm-svn: 233043
|
|
|
|
|
|
| |
This was an omission from r232229.
llvm-svn: 232554
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
scope ends
Previously, we would error out on this code because the default argument
wasn't parsed until the end of Outer:
struct __declspec(dllexport) Outer {
struct __declspec(dllexport) Inner {
Inner(void *p = 0);
};
};
Now we do the checking on the closing brace of Outer instead of Inner.
llvm-svn: 232519
|
|
|
|
|
|
|
|
|
|
|
|
| |
Using declarations which are aliases to struct types have their name
used as the struct type's name for linkage purposes. Otherwise, make
sure to give an anonymous struct defined inside a using declaration a
mangling number to disambiguate it from other anonymous structs in the
same context.
This fixes PR22809.
llvm-svn: 231909
|
|
|
|
| |
llvm-svn: 231573
|
|
|
|
|
|
|
|
|
|
|
|
| |
Sema::MergeCXXFunctionDecl: propagate hasUnparsedDefaultArg to new decl.
Parser::HandleMemberFunctionDeclDelays: check hasUnparsedDefaultArg
flag.
Parser::ParseLexedMethodDeclaration: handle inherited unparsed default
arg case.
llvm-svn: 229852
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In the case that we diagnosed an invalid attribute due to missing or present
arguments, we would return false, indicating to the caller that the parsing
failed. However, we would have added the attribute in ParseAttributeArgsCommon
(which may have been called indirectly through ParseGNUAttributeArgs).
Returning true in this case ensures that a second copy of the attribute is not
added.
I haven't added a test case for this as the existing test will cover this with
the next commit which diagnoses a C++14 attribute applied in C++11 mode. Rather
than duplicating the existing test case, allow the tree to remain without a test
between this and the next change. We would see double warnings in the
[[deprecated()]] applied to a declaration in C++11 mode, which will cause an
error in the cxx0x-attributes test.
llvm-svn: 229446
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The first part of that line doesn't parse correctly and ParseClassSpecifier() for
some reason skips to tok::comma to recover, and then
ParseDeclarationSpecifiers() sees the next struct and calls
ParseClassSpecifier() again with the same DeclSpec object.
However, the first call already called ActOnCXXGlobalScopeSpecifier() on the
DeclSpec's CXXScopeSpec, and sema gets confused when this gets called again.
As a fix, let ParseClassSpecifier() (and ParseEnumSpecifier()) call
ParseOptionalCXXScopeSpec() with a temporary CXXScopeSpec object, and only
copy it into the DeclSpec if things work out. (This is also how all the other
functions that set the DeclSpec's TypeSpecScope set it.)
Found by SLi's bot.
llvm-svn: 229288
|
|
|
|
| |
llvm-svn: 227024
|
|
|
|
| |
llvm-svn: 226363
|
|
|
|
| |
llvm-svn: 226307
|
|
|
|
|
|
|
|
|
|
|
| |
There was already an explicit check for that for the first decl. Move that
to a different place so that it's called for the following decls too. Also
don't randomly set the BitfieldSize ExprResult to true (this sets a pointer to
true internally).
Found by SLi's bot.
llvm-svn: 226306
|
|
|
|
|
|
|
|
|
|
| |
Sorry for the noise, I managed to miss a bunch of recent regressions of
include orderings here. This should actually sort all the includes for
Clang. Again, no functionality changed, this is just a mechanical
cleanup that I try to run periodically to keep the #include lines as
regular as possible across the project.
llvm-svn: 225979
|
|
|
|
|
|
|
| |
No functionality change intended, just moving code around to make it
simpler.
llvm-svn: 225763
|
|
|
|
|
|
| |
the tokens around so we can diagnose an error rather than silently discarding them.
llvm-svn: 225755
|
|
|
|
|
|
|
|
| |
Similar to r225619, use a special EOF token to mark the end of the
exception specification instead of cxx_exceptspec_end. Use the current
scope as the marker.
llvm-svn: 225622
|