| // 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. |
| } |