// RUN: %clang_cc1 -fsyntax-only -Wno-dangling-gsl -Wreturn-stack-address -verify %s | |
struct [[gsl::Owner(int)]] MyIntOwner { | |
MyIntOwner(); | |
int &operator*(); | |
}; | |
struct [[gsl::Pointer(int)]] MyIntPointer { | |
MyIntPointer(int *p = nullptr); | |
MyIntPointer(const MyIntOwner &); | |
int &operator*(); | |
MyIntOwner toOwner(); | |
}; | |
int &f() { | |
int i; | |
return i; // expected-warning {{reference to stack memory associated with local variable 'i' returned}} | |
} | |
MyIntPointer g() { | |
MyIntOwner o; | |
return o; // No warning, it is disabled. | |
} |