From a074de6ff45f6d0332e5ee61743daee59be444d2 Mon Sep 17 00:00:00 2001 From: Justin Bogner Date: Fri, 20 Feb 2015 07:28:28 +0000 Subject: [PATCH] Disallow implicit conversions from None to integer types This fixes an error introduced in r228934 where None was converted to an int instead of the int being converted to an Optional as intended. We make that sort of mistake a compile error by changing NoneType into a scoped enum. Finally, provide a static NoneType called None to avoid forcing all users to spell it NoneType::None. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229980 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/ADT/None.h | 5 ++--- lib/ProfileData/CoverageMapping.cpp | 8 ++++++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/include/llvm/ADT/None.h b/include/llvm/ADT/None.h index 5793bd2faef..c78db78597c 100644 --- a/include/llvm/ADT/None.h +++ b/include/llvm/ADT/None.h @@ -19,9 +19,8 @@ namespace llvm { /// \brief A simple null object to allow implicit construction of Optional /// and similar types without having to spell out the specialization's name. -enum NoneType { - None -}; +enum class NoneType { None }; +static NoneType None; } #endif diff --git a/lib/ProfileData/CoverageMapping.cpp b/lib/ProfileData/CoverageMapping.cpp index a124d792e87..da619e1bf9f 100644 --- a/lib/ProfileData/CoverageMapping.cpp +++ b/lib/ProfileData/CoverageMapping.cpp @@ -361,7 +361,9 @@ static Optional findMainViewFileID(StringRef SourceFile, IsNotExpandedFile[CR.ExpandedFileID] = false; IsNotExpandedFile &= FilenameEquivalence; int I = IsNotExpandedFile.find_first(); - return I != -1 ? I : None; + if (I == -1) + return None; + return I; } static Optional findMainViewFileID(const FunctionRecord &Function) { @@ -370,7 +372,9 @@ static Optional findMainViewFileID(const FunctionRecord &Function) { if (CR.Kind == CounterMappingRegion::ExpansionRegion) IsNotExpandedFile[CR.ExpandedFileID] = false; int I = IsNotExpandedFile.find_first(); - return I != -1 ? I : None; + if (I == -1) + return None; + return I; } /// Sort a nested sequence of regions from a single file. -- 2.34.1