llvm-project/clang/test/Analysis/Inputs
Gabor Marton f035b75d8f [ASTImporter] Fix name conflict handling with different strategies
There are numorous flaws about the name conflict handling, this patch
attempts fixes them. Changes in details:

* HandleNameConflict return with a false DeclarationName

Hitherto we effectively never returned with a NameConflict error, even
if the preceding StructuralMatch indicated a conflict.
Because we just simply returned with the parameter `Name` in
HandleNameConflict and that name is almost always `true` when converted to
`bool`.

* Add tests which indicate wrong NameConflict handling

* Add to ConflictingDecls only if decl kind is different

Note, we might not indicate an ODR error when there is an existing record decl
and a enum is imported with same name.  But there are other cases. E.g. think
about the case when we import a FunctionTemplateDecl with name f and we found a
simple FunctionDecl with name f. They overload.  Or in case of a
ClassTemplateDecl and CXXRecordDecl, the CXXRecordDecl could be the 'templated'
class, so it would be false to report error.  So I think we should report a
name conflict error only when we are 100% sure of that.  That is why I think it
should be a general pattern to report the error only if the kind is the same.

* Fix failing ctu test with EnumConstandDecl

In ctu-main.c we have the enum class 'A' which brings in the enum
constant 'x' with value 0 into the global namespace.
In ctu-other.c we had the enum class 'B' which brought in the same name
('x') as an enum constant but with a different enum value (42). This is clearly
an ODR violation in the global namespace. The solution was to rename the
second enum constant.

 * Introduce ODR handling strategies

Reviewers: a_sidorin, shafik

Differential Revision: https://reviews.llvm.org/D59692

llvm-svn: 370045
2019-08-27 11:36:10 +00:00
..
Models
expected-plists [analyzer] ConditionBRVisitor: Fix HTML PathDiagnosticPopUpPieces 2019-08-09 02:20:44 +00:00
ctu-chain.cpp Resubmit [analyzer] Support for naive cross translation unit analysis 2018-03-01 14:54:16 +00:00
ctu-other.c [ASTImporter] Fix name conflict handling with different strategies 2019-08-27 11:36:10 +00:00
ctu-other.c.externalDefMap.txt [analyzer][CrossTU][NFC] Generalize to external definitions instead of external functions 2019-01-10 17:44:04 +00:00
ctu-other.cpp [ASTImporter] Import ctor initializers after setting flags. 2019-08-16 12:10:03 +00:00
ctu-other.cpp.externalDefMap.txt [ASTImporter] Import ctor initializers after setting flags. 2019-08-16 12:10:03 +00:00
llvm.h [analyzer] CastValueChecker: Avoid modeling casts between objects. 2019-08-23 03:23:58 +00:00
localization-pch.h
no-store-suppression.h [analyzer] NoStoreFuncVisitor: Suppress reports with no-store in system headers. 2019-04-05 20:18:53 +00:00
plist-macros-ctu.c [CrossTU] Fix plist macro expansion if macro in other file. 2019-07-25 10:53:22 +00:00
plist-macros-ctu.h [CrossTU] Fix plist macro expansion if macro in other file. 2019-07-25 10:53:22 +00:00
plist-macros-with-expansion-ctu.c.externalDefMap.txt [CrossTU] Fix plist macro expansion if macro in other file. 2019-07-25 10:53:22 +00:00
qt-simulator.h [analyzer] Add another exception for Qt in MallocChecker 2016-12-16 12:21:55 +00:00
system-header-simulator-cxx-std-suppression.h
system-header-simulator-cxx.h [Analyzer] Iterator Checkers - Fix for Crash on Iterator Differences 2019-08-05 06:45:41 +00:00
system-header-simulator-for-cxx-uninitialized-object.h [analyzer] Checker for uninitialized C++ objects 2018-06-18 11:50:17 +00:00
system-header-simulator-for-malloc.h
system-header-simulator-for-nullability-cxx.h [analyzer] Do not crash in CallEvent.getReturnType() 2018-03-24 01:53:12 +00:00
system-header-simulator-for-nullability.h [analyzer] Record nullability implications on getting items from NSDictionary 2018-08-10 22:27:04 +00:00
system-header-simulator-for-objc-dealloc.h [analyzer] Syntactic matcher for leaks associated with run loop and autoreleasepool 2018-07-25 01:27:15 +00:00
system-header-simulator-for-pthread-lock.h
system-header-simulator-for-simple-stream.h
system-header-simulator-for-valist.h
system-header-simulator-objc.h
system-header-simulator.h [analyzer] Add missing pre-post-statement callbacks for OffsetOfExpr. 2018-02-10 00:55:49 +00:00
taint-generic-config-ill-formed.yaml [analyzer] Add yaml parser to GenericTaintChecker 2019-07-28 13:38:04 +00:00
taint-generic-config-invalid-arg.yaml [analyzer] Add yaml parser to GenericTaintChecker 2019-07-28 13:38:04 +00:00
taint-generic-config.yaml [analyzer] Add yaml parser to GenericTaintChecker 2019-07-28 13:38:04 +00:00