[PATCH] D107719: [Clang] Resolve FIXMEs in Types.h

Alf via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Sun Aug 8 13:37:22 PDT 2021


gAlfonso-bit updated this revision to Diff 365043.

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D107719/new/

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
@@ -24,6 +24,7 @@
 #include "clang/Basic/AttrKinds.h"
 #include "clang/Basic/Diagnostic.h"
 #include "clang/Basic/ExceptionSpecificationType.h"
+#include "clang/Basic/LangStandard.h"
 #include "clang/Basic/LLVM.h"
 #include "clang/Basic/Linkage.h"
 #include "clang/Basic/PartialDiagnostic.h"
@@ -3450,10 +3451,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 +6986,8 @@
            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());
   }
   return isExtIntType();
 }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D107719.365043.patch
Type: text/x-patch
Size: 2743 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20210808/2c033be2/attachment-0001.bin>


More information about the cfe-commits mailing list