[PATCH] D107719: [Clang] Resolve FIXMEs in Types.h
Alf via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sun Aug 8 13:20:36 PDT 2021
gAlfonso-bit created this revision.
gAlfonso-bit added projects: LLVM, clang.
gAlfonso-bit requested review of this revision.
Herald added a subscriber: cfe-commits.
This includes removing ObjectiveC Object Pointers from the list of specifiers, as well as checking for C++ instead of using Scoped Enums as a workaround.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D107719
Files:
clang/include/clang/AST/Type.h
clang/lib/AST/Type.cpp
Index: clang/lib/AST/Type.cpp
===================================================================
--- clang/lib/AST/Type.cpp
+++ clang/lib/AST/Type.cpp
@@ -2011,9 +2011,10 @@
if (const EnumType *ET = dyn_cast<EnumType>(CanonicalType)) {
// Incomplete enum types are not treated as integer types.
- // FIXME: In C++, enum types are never integer types.
- if (ET->getDecl()->isComplete() && !ET->getDecl()->isScoped())
+ // In C++, enum types are never integer types.
+ if (!isCPlusPlus() && ET->getDecl()->isComplete())
return ET->getDecl()->getIntegerType()->isSignedIntegerType();
+ return false;
}
if (const ExtIntType *IT = dyn_cast<ExtIntType>(CanonicalType))
@@ -2058,9 +2059,10 @@
if (const auto *ET = dyn_cast<EnumType>(CanonicalType)) {
// Incomplete enum types are not treated as integer types.
- // FIXME: In C++, enum types are never integer types.
- if (ET->getDecl()->isComplete() && !ET->getDecl()->isScoped())
+ // In C++, enum types are never integer types.
+ if (!isCPlusPlus() && ET->getDecl()->isComplete())
return ET->getDecl()->getIntegerType()->isUnsignedIntegerType();
+ return false;
}
if (const ExtIntType *IT = dyn_cast<ExtIntType>(CanonicalType))
@@ -2785,7 +2787,6 @@
case DependentTemplateSpecialization:
case ObjCInterface:
case ObjCObject:
- case ObjCObjectPointer: // FIXME: object pointers aren't really specifiers
return true;
default:
return false;
Index: clang/include/clang/AST/Type.h
===================================================================
--- clang/include/clang/AST/Type.h
+++ clang/include/clang/AST/Type.h
@@ -3450,10 +3450,6 @@
protected:
friend class ASTContext;
- /// The element type of the matrix.
- // FIXME: Appears to be unused? There is also MatrixType::ElementType...
- QualType ElementType;
-
/// Number of rows and columns.
unsigned NumRows;
unsigned NumColumns;
@@ -6989,9 +6985,9 @@
BT->getKind() <= BuiltinType::Int128;
if (const EnumType *ET = dyn_cast<EnumType>(CanonicalType)) {
// Incomplete enum types are not treated as integer types.
- // FIXME: In C++, enum types are never integer types.
- return IsEnumDeclComplete(ET->getDecl()) &&
- !IsEnumDeclScoped(ET->getDecl());
+ // In C++, enum types are never integer types.
+ return !isCPlusPlus() && IsEnumDeclComplete(ET->getDecl()) &&
+ !IsEnumDeclScoped(ET->getDecl());
}
return isExtIntType();
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D107719.365041.patch
Type: text/x-patch
Size: 2499 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20210808/8e83ccea/attachment.bin>
More information about the cfe-commits
mailing list