summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorDeLesley Hutchins <delesley@google.com>2014-03-20 20:39:20 +0000
committerDeLesley Hutchins <delesley@google.com>2014-03-20 20:39:20 +0000
commitd7fa5bd43184cba66965a05fefa3fc369cf0e3ad (patch)
treefd1d7ce90736ded3051dcd1e6ebf6d57ed8ff5f7 /clang/test
parentba5570221da15ae0954efabbd9f017c8c438ab44 (diff)
downloadbcm5719-llvm-d7fa5bd43184cba66965a05fefa3fc369cf0e3ad.tar.gz
bcm5719-llvm-d7fa5bd43184cba66965a05fefa3fc369cf0e3ad.zip
Consumed Analysis: IgnoreParens bugfix.
llvm-svn: 204395
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/SemaCXX/warn-consumed-analysis.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/warn-consumed-analysis.cpp b/clang/test/SemaCXX/warn-consumed-analysis.cpp
index 3923f694395..bd091c6f1cc 100644
--- a/clang/test/SemaCXX/warn-consumed-analysis.cpp
+++ b/clang/test/SemaCXX/warn-consumed-analysis.cpp
@@ -684,6 +684,8 @@ class CONSUMABLE(unconsumed)
int code;
public:
+ static Status OK;
+
Status() RETURN_TYPESTATE(consumed);
Status(int c) RETURN_TYPESTATE(unconsumed);
@@ -693,6 +695,8 @@ public:
Status& operator=(const Status &other) CALLABLE_WHEN("unknown", "consumed");
Status& operator=(Status &&other) CALLABLE_WHEN("unknown", "consumed");
+ bool operator==(const Status &other) const SET_TYPESTATE(consumed);
+
bool check() const SET_TYPESTATE(consumed);
void ignore() const SET_TYPESTATE(consumed);
// Status& markAsChecked() { return *this; }
@@ -710,6 +714,11 @@ void handleStatusRef(Status& s);
void handleStatusPtr(Status* s);
void handleStatusUnmarked(const Status& s);
+void log(const char* msg);
+void fail() __attribute__((noreturn));
+void checkStat(const Status& s);
+
+
void testSimpleTemporaries0() {
doSomething(); // expected-warning {{invalid invocation of method '~Status' on a temporary object while it is in the 'unconsumed' state}}
}
@@ -870,6 +879,29 @@ Status testReturnAutocast() {
return s; // should autocast back to unconsumed
}
+
+namespace TestParens {
+
+void test3() {
+ checkStat((doSomething()));
+}
+
+void test4() {
+ Status s = (doSomething());
+ s.check();
+}
+
+void test5() {
+ (doSomething()).check();
+}
+
+void test6() {
+ if ((doSomething()) == Status::OK)
+ return;
+}
+
+} // end namespace TestParens
+
} // end namespace InitializerAssertionFailTest
@@ -899,3 +931,4 @@ namespace PR18260 {
std::__1::move(x);
}
} // end namespace PR18260
+
OpenPOWER on IntegriCloud