diff options
Diffstat (limited to 'clang/test')
-rw-r--r-- | clang/test/SemaCXX/warn-consumed-analysis-strict.cpp | 11 | ||||
-rw-r--r-- | clang/test/SemaCXX/warn-consumed-analysis.cpp | 6 |
2 files changed, 7 insertions, 10 deletions
diff --git a/clang/test/SemaCXX/warn-consumed-analysis-strict.cpp b/clang/test/SemaCXX/warn-consumed-analysis-strict.cpp index 474f35cf32b..c3b254d781d 100644 --- a/clang/test/SemaCXX/warn-consumed-analysis-strict.cpp +++ b/clang/test/SemaCXX/warn-consumed-analysis-strict.cpp @@ -20,7 +20,7 @@ class ConsumableClass { ConsumableClass<T>& operator=(ConsumableClass<T> &other); ConsumableClass<T>& operator=(ConsumableClass<T> &&other); - ConsumableClass<T>& operator=(nullptr_t); + ConsumableClass<T>& operator=(nullptr_t) CONSUMES; template <typename U> ConsumableClass<T>& operator=(ConsumableClass<U> &other); @@ -174,13 +174,6 @@ void testCallingConventions() { *var; // expected-warning {{invocation of method 'operator*' on object 'var' while it is in an unknown state}} } -void testMoveAsignmentish() { - ConsumableClass<int> var; - - var = nullptr; - *var; // expected-warning {{invocation of method 'operator*' on object 'var' while it is in an unknown state}} -} - void testConstAndNonConstMemberFunctions() { ConsumableClass<int> var(42); @@ -188,7 +181,7 @@ void testConstAndNonConstMemberFunctions() { *var; var.nonconstCall(); - *var; // expected-warning {{invocation of method 'operator*' on object 'var' while it is in an unknown state}} + *var; } void testNoWarnTestFromMacroExpansion() { diff --git a/clang/test/SemaCXX/warn-consumed-analysis.cpp b/clang/test/SemaCXX/warn-consumed-analysis.cpp index aa5139bed0c..c6646559465 100644 --- a/clang/test/SemaCXX/warn-consumed-analysis.cpp +++ b/clang/test/SemaCXX/warn-consumed-analysis.cpp @@ -19,7 +19,7 @@ class ConsumableClass { ConsumableClass<T>& operator=(ConsumableClass<T> &other); ConsumableClass<T>& operator=(ConsumableClass<T> &&other); - ConsumableClass<T>& operator=(nullptr_t); + ConsumableClass<T>& operator=(nullptr_t) CONSUMES; template <typename U> ConsumableClass<T>& operator=(ConsumableClass<U> &other); @@ -251,6 +251,10 @@ void testMoveAsignmentish() { *var0; *var1; // expected-warning {{invocation of method 'operator*' on object 'var1' while it is in the 'consumed' state}} + + var1 = ConsumableClass<long>(42); + var1 = nullptr; + *var1; // expected-warning {{invocation of method 'operator*' on object 'var1' while it is in the 'consumed' state}} } void testConditionalMerge() { |