Richard Smith
8ac1c92df9
PR18044: Reject declarations of enumtype::X early to avoid an assertion in
...
downstream code.
llvm-svn: 195687
2013-11-25 21:30:29 +00:00
Richard Smith
e952106164
Correctly skip type sugar when determining the width of an enum type. Derived
...
from a patch by Justin Bogner.
llvm-svn: 192671
2013-10-15 04:56:17 +00:00
Eli Friedman
9ee175d8f0
Don't allow unary negation on scoped enums.
...
PR16900.
llvm-svn: 188511
2013-08-16 00:09:18 +00:00
Richard Smith
1d4b2e16a2
PR15633: Note that we are EnteringContext when parsing the nested name
...
specifier for an enumeration. Also fix a crash-on-invalid if a non-dependent
name specifier is used to declare an enum template.
llvm-svn: 178502
2013-04-01 21:43:41 +00:00
Aaron Ballman
24a1047c8c
Relaxed enumeration constant naming rules for scoped enumerators so they no longer emit a diagnostic when the enumeration's name matches that of the class. Fixes PR13128.
...
llvm-svn: 160490
2012-07-19 03:12:23 +00:00
Richard Smith
2e6610affd
Handle instantiations of redeclarations of forward-declared enumerations within
...
templated functions. Build a redeclaration chain, and only instantiate the
definition of the enum when visiting the defining declaration.
llvm-svn: 153427
2012-03-26 04:58:10 +00:00
Richard Smith
258a744bbd
Delay checking of dependent underlying types for redeclarations of member
...
enumerations in templates until the template is instantiated.
llvm-svn: 153426
2012-03-26 04:08:46 +00:00
Richard Smith
b66d77793f
When defining a forward-declared enum, don't try to attach the definition to
...
a previous declaration if the redeclaration is invalid. That way lies madness.
Fixes a crash-on-invalid reported by Abramo.
llvm-svn: 153349
2012-03-23 23:09:08 +00:00
Nick Lewycky
f604212a44
Slightly tweak this condition. "isTransparentContext()" was checking whether an
...
enum is scoped or not, which is not relevant here. Instead, phrase the loop in
the same terms that the standard uses, instead of this awkward set of
conditions that is *nearly* equal.
llvm-svn: 152489
2012-03-10 07:47:07 +00:00
Douglas Gregor
3f28ec28d5
Loosen the precondition of isCXXInstanceMember() to simply return
...
"false" for declarations that aren't members of classes. Fixes PR12106.
llvm-svn: 152284
2012-03-08 02:08:05 +00:00
Richard Smith
8dd3425077
Don't allow a value of a scoped enumeration to be used as the first bound for an
...
array new expression. This lays some groundwork for the implicit conversion to
integral or unscoped enumeration which C++11 ICEs undergo.
llvm-svn: 149772
2012-02-04 07:07:42 +00:00
Richard Smith
f8379a0fc3
constexpr: converted constant expression handling for enumerator values, case
...
values and non-type template arguments of integral and enumeration types.
This change causes some legal C++98 code to no longer compile in C++11 mode, by
enforcing the C++11 rule that narrowing integral conversions are not permitted
in the final implicit conversion sequence for the above cases.
llvm-svn: 148439
2012-01-18 23:55:52 +00:00
Richard Smith
0f8ee22655
Update C++11 scoped enumeration support to match the final proposal:
...
- reject definitions of enums within friend declarations
- require 'enum', not 'enum class', for non-declaring references to scoped
enumerations
llvm-svn: 147824
2012-01-10 01:33:14 +00:00
Eli Friedman
7c6515a653
Make sure we perform lvalue-to-rvalue conversions for enum initializers. PR11484.
...
llvm-svn: 145874
2011-12-06 00:10:34 +00:00
Richard Smith
9ca5c42582
Update all tests other than Driver/std.cpp to use -std=c++11 rather than
...
-std=c++0x. Patch by Ahmed Charles!
llvm-svn: 141900
2011-10-13 22:29:44 +00:00
John McCall
21878760a4
Fixed enum types can be complete without actually being valid to use
...
as scope specifiers; diagnose the attempt, rather than letting it go
to an assert. The rest of PR10264.
llvm-svn: 134479
2011-07-06 06:57:57 +00:00
John McCall
cb432faf6d
Properly protect colons when parsing a nested-name-specifier as part
...
of an enum specifier in dialects which permit fixed underlying types.
Fixes the rejects-valid part of PR10264.
llvm-svn: 134468
2011-07-06 05:58:41 +00:00
Douglas Gregor
21673c4e7e
Scoped enumerations should not be treated as integer types (in the C
...
sense). Fixes <rdar://problem/9366066> by eliminating an inconsistency
between C++ overloading (which handled scoped enumerations correctly)
and C binary operator type-checking (which didn't).
llvm-svn: 130924
2011-05-05 16:13:52 +00:00
Douglas Gregor
48e6bbffa1
Implement comparison of C++0x scoped enumeration types. Fixes PR9333.
...
llvm-svn: 126752
2011-03-01 17:16:20 +00:00
Douglas Gregor
6cd5ae4dfa
Fix a little bug in the handling of enumeration types with a fixed
...
underlying type: we weren't parsing unnamed enumeration types with a
fixed underlying type.
llvm-svn: 126184
2011-02-22 02:55:24 +00:00
Douglas Gregor
0bf3140424
Implement C++0x scoped enumerations, from Daniel Wallin! (and tweaked a
...
bit by me).
llvm-svn: 116122
2010-10-08 23:50:27 +00:00