diff --git a/lib/APINotes/APINotesYAMLCompiler.cpp b/lib/APINotes/APINotesYAMLCompiler.cpp index 0ac0b6d65b7..599f962d91f 100644 --- a/lib/APINotes/APINotesYAMLCompiler.cpp +++ b/lib/APINotes/APINotesYAMLCompiler.cpp @@ -164,7 +164,8 @@ namespace { AvailabilityItem() : Mode(APIAvailability::Available), Msg("") {} }; - static llvm::Optional AbsentNullability = llvm::None; + static llvm::Optional AbsentNullability {}; + static llvm::Optional DefaultNullability = NullabilityKind::NonNull; typedef std::vector NullabilitySeq; diff --git a/lib/Sema/SemaAPINotes.cpp b/lib/Sema/SemaAPINotes.cpp index cf88f735018..dbf9c87df1b 100644 --- a/lib/Sema/SemaAPINotes.cpp +++ b/lib/Sema/SemaAPINotes.cpp @@ -131,8 +131,7 @@ namespace { Sema &S, Decl *D, bool shouldAddAttribute, VersionedInfoRole role, llvm::function_ref createAttr, - llvm::function_ref(Decl *)> getExistingAttr = - [](Decl *decl) { return decl->specific_attr_begin(); }) { + llvm::function_ref(Decl *)> getExistingAttr) { switch (role) { case VersionedInfoRole::AugmentSource: // If we're not adding an attribute, there's nothing to do. @@ -170,6 +169,11 @@ namespace { } } +template +static specific_attr_iterator getAttrIterator(Decl *decl) { + return decl->specific_attr_begin(); +} + static void ProcessAPINotes(Sema &S, Decl *D, const api_notes::CommonEntityInfo &info, VersionedInfoRole role) { @@ -180,7 +184,7 @@ static void ProcessAPINotes(Sema &S, Decl *D, return UnavailableAttr::CreateImplicit(S.Context, CopyString(S.Context, info.UnavailableMsg)); - }); + }, getAttrIterator); } if (info.UnavailableInSwift) { @@ -216,7 +220,7 @@ static void ProcessAPINotes(Sema &S, Decl *D, if (auto swiftPrivate = info.isSwiftPrivate()) { handleAPINotedAttribute(S, D, *swiftPrivate, role, [&] { return SwiftPrivateAttr::CreateImplicit(S.Context); - }); + }, getAttrIterator); } // swift_name @@ -233,7 +237,7 @@ static void ProcessAPINotes(Sema &S, Decl *D, return SwiftNameAttr::CreateImplicit(S.Context, CopyString(S.Context, info.SwiftName)); - }); + }, getAttrIterator); } } @@ -247,7 +251,7 @@ static void ProcessAPINotes(Sema &S, Decl *D, return SwiftBridgeAttr::CreateImplicit(S.Context, CopyString(S.Context, *swiftBridge)); - }); + }, getAttrIterator); } // ns_error_domain @@ -257,7 +261,7 @@ static void ProcessAPINotes(Sema &S, Decl *D, return NSErrorDomainAttr::CreateImplicit( S.Context, &S.Context.Idents.get(*nsErrorDomain)); - }); + }, getAttrIterator); } ProcessAPINotes(S, D, static_cast(info), @@ -338,7 +342,7 @@ static void ProcessAPINotes(Sema &S, ParmVarDecl *D, if (auto noescape = info.isNoEscape()) { handleAPINotedAttribute(S, D, *noescape, role, [&] { return NoEscapeAttr::CreateImplicit(S.Context); - }); + }, getAttrIterator); } // Handle common entity information. @@ -367,7 +371,7 @@ static void ProcessAPINotes(Sema &S, ObjCPropertyDecl *D, *asAccessors, role, [&] { return SwiftImportPropertyAsAccessorsAttr::CreateImplicit(S.Context); - }); + }, getAttrIterator); } } @@ -508,7 +512,7 @@ static void ProcessAPINotes(Sema &S, ObjCMethodDecl *D, IFace->setHasDesignatedInitializers(); } return ObjCDesignatedInitializerAttr::CreateImplicit(S.Context); - }); + }, getAttrIterator); } // FIXME: This doesn't work well with versioned API notes. @@ -561,7 +565,7 @@ static void ProcessAPINotes(Sema &S, TypedefNameDecl *D, S.Context, SwiftNewtypeAttr::GNU_swift_wrapper, kind); - }); + }, getAttrIterator); } // Handle common type information. diff --git a/lib/Sema/SemaType.cpp b/lib/Sema/SemaType.cpp index 3b8345f623b..567dfe6ba68 100644 --- a/lib/Sema/SemaType.cpp +++ b/lib/Sema/SemaType.cpp @@ -3522,7 +3522,7 @@ static void recordNullabilitySeen(Sema &S, SourceLocation loc) { S.Diag(fileNullability.PointerLoc, diag::warn_nullability_missing_array); } else { S.Diag(fileNullability.PointerLoc, diag::warn_nullability_missing) - << fileNullability.PointerKind; + << static_cast(fileNullability.PointerKind); } }