llvm-project/clang/lib/Sema
Bob Wilson f5c53b859b [Sema] More changes to fix Objective-C fallout from r249995.
This is a follow-up to PR26085. That was fixed in r257710 but the testcase
there was incomplete. There is a related issue where the overload resolution
for Objective-C incorrectly picks a method that is not valid without a
bridge cast. The call to Sema::CheckSingleAssignmentConstraints that was
added to SemaOverload.cpp's IsStandardConversion() function does not catch
that case and reports that the method is Compatible even when it is not.

The root cause here is that various Objective-C-related functions in Sema
do not consistently return a value to indicate whether there was an error.
This was fine in the past because they would report diagnostics when needed,
but r257710 changed them to suppress reporting diagnostics when checking
during overload resolution.

This patch adds a new ACR_error result to the ARCConversionResult enum and
updates Sema::CheckObjCARCConversion to return that value when there is an
error. Most of the calls to that function do not check the return value,
so adding this new result does not affect them. The one exception is in
SemaCast.cpp where it specifically checks for ACR_unbridged, so that is
also OK. The call in Sema::CheckSingleAssignmentConstraints can then check
for an ACR_okay result and identify assignments as Incompatible. To
preserve the existing behavior, it only changes the return value to
Incompatible when the new Diagnose argument (from r257710) is false.

Similarly, the CheckObjCBridgeRelatedConversions and
ConversionToObjCStringLiteralCheck need to identify when an assignment is
Incompatible. Those functions already return appropriate values but they
need some fixes related to the new Diagnose argument.

llvm-svn: 260787
2016-02-13 01:41:41 +00:00
..
AnalysisBasedWarnings.cpp [Sema] Replace pointer-to-map with a map. NFC. 2015-12-10 19:25:21 +00:00
AttributeList.cpp Roll-back r250822. 2015-10-20 13:23:58 +00:00
CMakeLists.txt [coroutines] Initial stub Sema functionality for handling coroutine await / yield / return. 2015-10-22 06:13:50 +00:00
CodeCompleteConsumer.cpp Silence some MSVC false positive warnings about integer zexts and falling off the end of a covered switch 2016-02-10 19:09:15 +00:00
DeclSpec.cpp Move LocInfoType from Sema to AST. 2016-02-01 17:42:01 +00:00
DelayedDiagnostic.cpp Add -Wpartial-availability. 2015-03-19 19:18:22 +00:00
IdentifierResolver.cpp [modules] Separately track whether an identifier's preprocessor information and 2016-02-05 19:03:40 +00:00
JumpDiagnostics.cpp Some minor ARC diagnostic improvements. 2015-10-21 18:06:38 +00:00
MultiplexExternalSemaSource.cpp Roll-back r250822. 2015-10-20 13:23:58 +00:00
Scope.cpp Annotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post commit comment. 2016-01-29 19:38:18 +00:00
ScopeInfo.cpp Properly clear current coroutine promise on FunctionScopeInfo reuse. Should 2015-10-27 07:47:45 +00:00
Sema.cpp Fix predefine for __NSConstantString struct type 2016-02-04 00:55:24 +00:00
SemaAccess.cpp -Wdeprecated: SavedInstanceContext is returned by value but isn't really copyable, but it can be made movable 2015-08-12 22:58:10 +00:00
SemaAttr.cpp Introduce -fsanitize-stats flag. 2016-01-16 00:31:22 +00:00
SemaCUDA.cpp [CUDA] Tweak attribute-based overload resolution to match nvcc behavior. 2016-02-12 18:29:18 +00:00
SemaCXXScopeSpec.cpp Model NamespaceAliasDecls as having their nominated namespace as an underlying 2015-12-29 23:34:32 +00:00
SemaCast.cpp [Bugfix] Fix ICE on constexpr vector splat. 2016-01-13 01:52:39 +00:00
SemaChecking.cpp Make -Wnull-conversion more useful. 2016-02-13 00:58:53 +00:00
SemaCodeComplete.cpp Class Property: class property and instance property can have the same name. 2016-01-28 18:49:28 +00:00
SemaConsumer.cpp
SemaCoroutine.cpp [coroutines] Build a CoroutineBodyStmt when finishing parsing a coroutine, and form the initial_suspend, final_suspend, and get_return_object calls. 2015-11-24 02:34:39 +00:00
SemaDecl.cpp Fix remaining Clang-tidy readability-redundant-control-flow warnings; other minor fixes. 2016-02-12 22:53:10 +00:00
SemaDeclAttr.cpp Fix remaining Clang-tidy readability-redundant-control-flow warnings; other minor fixes. 2016-02-12 22:53:10 +00:00
SemaDeclCXX.cpp [Sema] Remove stray semicolons. 2016-01-26 01:39:17 +00:00
SemaDeclObjC.cpp Avoid overly large SmallPtrSet/SmallSet 2016-01-30 01:27:06 +00:00
SemaExceptionSpec.cpp Wire a SourceLocation into IsDerivedFrom and move the RequireCompleteType call 2015-12-18 21:45:41 +00:00
SemaExpr.cpp [Sema] More changes to fix Objective-C fallout from r249995. 2016-02-13 01:41:41 +00:00
SemaExprCXX.cpp Sema: handle typo correction on ARC'ed ivar 2016-02-07 02:30:59 +00:00
SemaExprMember.cpp [OPENMP 4.5] Ccapture/codegen of private non-static data members. 2016-02-08 09:29:13 +00:00
SemaExprObjC.cpp [Sema] More changes to fix Objective-C fallout from r249995. 2016-02-13 01:41:41 +00:00
SemaFixItUtils.cpp Wire a SourceLocation into IsDerivedFrom and move the RequireCompleteType call 2015-12-18 21:45:41 +00:00
SemaInit.cpp Fix remaining Clang-tidy readability-redundant-control-flow warnings; other minor fixes. 2016-02-12 22:53:10 +00:00
SemaLambda.cpp PR24989: Stop trying to use the C++11 rules for lambda return type inference in 2016-02-02 23:58:56 +00:00
SemaLookup.cpp Remove dead code. 2016-02-08 19:10:14 +00:00
SemaObjCProperty.cpp Fix remaining Clang-tidy readability-redundant-control-flow warnings; other minor fixes. 2016-02-12 22:53:10 +00:00
SemaOpenMP.cpp [OPENMP] Rename OMPCapturedFieldDecl to OMPCapturedExprDecl, NFC. 2016-02-11 05:35:55 +00:00
SemaOverload.cpp [CUDA] Tweak attribute-based overload resolution to match nvcc behavior. 2016-02-12 18:29:18 +00:00
SemaPseudoObject.cpp Class Property: class property and instance property can have the same name. 2016-01-28 18:49:28 +00:00
SemaStmt.cpp Fix a crash when there is a typo in the return statement. 2016-02-04 20:05:40 +00:00
SemaStmtAsm.cpp Remove an unused parameter 2016-01-05 00:08:41 +00:00
SemaStmtAttr.cpp [Sema] Use available enum types instead of integers. As one is used in a switch, this makes the compiler ensure the switch is fully covered. NFC 2015-12-23 05:44:43 +00:00
SemaTemplate.cpp Fix remaining Clang-tidy readability-redundant-control-flow warnings; other minor fixes. 2016-02-12 22:53:10 +00:00
SemaTemplateDeduction.cpp Ensure that we substitute into the declaration of a template parameter pack 2016-02-03 20:40:30 +00:00
SemaTemplateInstantiate.cpp Revert "Avoid forcing emission of delayed dllexported classes on template instantiation" 2016-02-09 17:48:27 +00:00
SemaTemplateInstantiateDecl.cpp [OPENMP] Rename OMPCapturedFieldDecl to OMPCapturedExprDecl, NFC. 2016-02-11 05:35:55 +00:00
SemaTemplateVariadic.cpp [OpenCL] Pipe type support 2016-01-09 12:53:17 +00:00
SemaType.cpp Fix assertion "Chunk.Kind == DeclaratorChunk::Function" with attributed type. 2016-02-10 11:23:48 +00:00
TreeTransform.h [OpenMP] Parsing + sema for target parallel for directive. 2016-02-03 15:46:42 +00:00
TypeLocBuilder.cpp [C++11] Use 'nullptr'. Sema edition. 2014-05-26 06:22:03 +00:00
TypeLocBuilder.h Revert r240270 ("Fixed/added namespace ending comments using clang-tidy"). 2015-06-22 23:07:51 +00:00