forked from OSchip/llvm-project
Use RecordFirst/RecordLast range checks in DeclContext
llvm-svn: 65489
This commit is contained in:
parent
d54dfb8718
commit
8d0921617e
|
@ -440,7 +440,7 @@ public:
|
|||
}
|
||||
|
||||
bool isRecord() const {
|
||||
return DeclKind == Decl::Record || DeclKind == Decl::CXXRecord;
|
||||
return DeclKind >= Decl::RecordFirst && DeclKind <= Decl::RecordLast;
|
||||
}
|
||||
|
||||
bool isNamespace() const {
|
||||
|
|
|
@ -409,7 +409,7 @@ bool DeclContext::isTransparentContext() const {
|
|||
return true; // FIXME: Check for C++0x scoped enums
|
||||
else if (DeclKind == Decl::LinkageSpec)
|
||||
return true;
|
||||
else if (DeclKind == Decl::Record || DeclKind == Decl::CXXRecord)
|
||||
else if (DeclKind >= Decl::RecordFirst && DeclKind <= Decl::RecordLast)
|
||||
return cast<RecordDecl>(this)->isAnonymousStructOrUnion();
|
||||
else if (DeclKind == Decl::Namespace)
|
||||
return false; // FIXME: Check for C++0x inline namespaces
|
||||
|
|
|
@ -37,11 +37,19 @@ template <> struct X<float> { int bar(); }; // #2
|
|||
|
||||
typedef int int_type;
|
||||
void testme(X<int_type> *x1, X<float, int> *x2) {
|
||||
x1->foo(); // okay: refers to #1
|
||||
x2->bar(); // okay: refers to #2
|
||||
(void)x1->foo(); // okay: refers to #1
|
||||
(void)x2->bar(); // okay: refers to #2
|
||||
}
|
||||
|
||||
// Diagnose specializations in a different namespace
|
||||
// Make sure specializations are proper classes.
|
||||
template<>
|
||||
struct A<char> {
|
||||
A();
|
||||
};
|
||||
|
||||
A<char>::A() { }
|
||||
|
||||
// Diagnose specialization errors
|
||||
struct A<double> { }; // expected-error{{template specialization requires 'template<>'}}
|
||||
|
||||
template<typename T> // expected-error{{class template partial specialization is not yet supported}}
|
||||
|
@ -72,3 +80,4 @@ namespace M {
|
|||
template<> struct N::B<char> {
|
||||
int testf(int x) { return f(x); }
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue