forked from OSchip/llvm-project
6ccc1c342a
This check implements the typebased semantic of `gsl::owner`. Meaning, that - only `gsl::owner` is allowed to get `delete`d - `new` expression must be assigned to `gsl::owner` - function calls that expect `gsl::owner` as argument, must get either an owner or a newly created and recognized resource (in the moment only `new`ed memory) - assignment to `gsl::owner` must be either a resource or another owner - functions returning an `gsl::owner` are considered as factories, and their result must be assigned to an `gsl::owner` - classes that have an `gsl::owner`-member must declare a non-default destructor There are some problems that occur when typededuction is in place. For example `auto Var = function_that_returns_owner();` the type of `Var` will not be an `gsl::owner`. This case is catched, and explicitly noted. But cases like fully templated functions ``` template <typename T> void f(T t) { delete t; } // ... f(gsl::owner<int*>(new int(42))); ``` Will created false positive (the deletion is problematic), since the type deduction removes the wrapping `typeAlias`. Codereview in D36354 llvm-svn: 313067 |
||
---|---|---|
.. | ||
CMakeLists.txt | ||
CppCoreGuidelinesTidyModule.cpp | ||
InterfacesGlobalInitCheck.cpp | ||
InterfacesGlobalInitCheck.h | ||
NoMallocCheck.cpp | ||
NoMallocCheck.h | ||
OwningMemoryCheck.cpp | ||
OwningMemoryCheck.h | ||
ProBoundsArrayToPointerDecayCheck.cpp | ||
ProBoundsArrayToPointerDecayCheck.h | ||
ProBoundsConstantArrayIndexCheck.cpp | ||
ProBoundsConstantArrayIndexCheck.h | ||
ProBoundsPointerArithmeticCheck.cpp | ||
ProBoundsPointerArithmeticCheck.h | ||
ProTypeConstCastCheck.cpp | ||
ProTypeConstCastCheck.h | ||
ProTypeCstyleCastCheck.cpp | ||
ProTypeCstyleCastCheck.h | ||
ProTypeMemberInitCheck.cpp | ||
ProTypeMemberInitCheck.h | ||
ProTypeReinterpretCastCheck.cpp | ||
ProTypeReinterpretCastCheck.h | ||
ProTypeStaticCastDowncastCheck.cpp | ||
ProTypeStaticCastDowncastCheck.h | ||
ProTypeUnionAccessCheck.cpp | ||
ProTypeUnionAccessCheck.h | ||
ProTypeVarargCheck.cpp | ||
ProTypeVarargCheck.h | ||
SlicingCheck.cpp | ||
SlicingCheck.h | ||
SpecialMemberFunctionsCheck.cpp | ||
SpecialMemberFunctionsCheck.h |