================ @@ -0,0 +1,349 @@ +// RUN: %clang %s -std=c++17 -Xclang -verify --analyze \ +// RUN: -Xclang -analyzer-checker=core \ +// RUN: -Xclang -analyzer-checker=debug.ExprInspection \ +// RUN: -Xclang -analyzer-checker=core,alpha.core.StdVariant + +#include "Inputs/system-header-simulator-cxx.h" + +class Foo{}; + +void clang_analyzer_warnIfReached(); +void clang_analyzer_eval(int); + +//helper functions +void changeVariantType(std::variant<int, char> &v) { + v = 25; +} + +void changesToInt(std::variant<int, char> &v); +void changesToInt(std::variant<int, char> *v); + +void cannotChangePtr(const std::variant<int, char> &v); +void cannotChangePtr(const std::variant<int, char> *v); + +char getUnknownChar(); + +void swap(std::variant<int, char> &v1, std::variant<int, char> &v2) { + std::variant<int, char> tmp = v1; + v1 = v2; + v2 = tmp; +} + +void cantDo(const std::variant<int, char>& v) { + std::variant<int, char> vtmp = v; + vtmp = 5; + int a = std::get<int> (vtmp); + (void) a; +} + +void changeVariantPtr(std::variant<int, char> *v) { + *v = 'c'; +} + +using var_t = std::variant<int, char>; +using var_tt = var_t; +using int_t = int; +using char_t = char; + + +//----------------------------------------------------------------------------// +// std::get +//----------------------------------------------------------------------------// ---------------- DonatNagyE wrote:
Paranoia: add a case that tests `std::get()` used on an `std::pair()`. https://github.com/llvm/llvm-project/pull/66481 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits