diff options
author | Edwin Vane <edwin.vane@intel.com> | 2013-03-15 18:10:07 +0000 |
---|---|---|
committer | Edwin Vane <edwin.vane@intel.com> | 2013-03-15 18:10:07 +0000 |
commit | 52c326ec78bb708cff384600aa695911e6aa8562 (patch) | |
tree | bd0b649d94fc82ba58f54332af22cc29deb322f7 /clang-tools-extra/test/cpp11-migrate/UseNullptr/nullptr_t.cpp | |
parent | 2f5457141ad212c9821b93fdaf6a377bffcffca7 (diff) | |
download | bcm5719-llvm-52c326ec78bb708cff384600aa695911e6aa8562.tar.gz bcm5719-llvm-52c326ec78bb708cff384600aa695911e6aa8562.zip |
Prevent nullptr_t-typed exprs from being replaced
The Use-Nullptr transform was replacing nullptr_t-typed expressions because in
the AST such expressions have an implicit NullToPointer cast around them. Now
the transform ignores these expressions.
Fixes PR15414.
llvm-svn: 177168
Diffstat (limited to 'clang-tools-extra/test/cpp11-migrate/UseNullptr/nullptr_t.cpp')
-rw-r--r-- | clang-tools-extra/test/cpp11-migrate/UseNullptr/nullptr_t.cpp | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/clang-tools-extra/test/cpp11-migrate/UseNullptr/nullptr_t.cpp b/clang-tools-extra/test/cpp11-migrate/UseNullptr/nullptr_t.cpp index 84ca100482e..a973fb39817 100644 --- a/clang-tools-extra/test/cpp11-migrate/UseNullptr/nullptr_t.cpp +++ b/clang-tools-extra/test/cpp11-migrate/UseNullptr/nullptr_t.cpp @@ -1,17 +1,29 @@ // RUN: grep -Ev "// *[A-Z-]+:" %s > %t.cpp // RUN: cpp11-migrate -final-syntax-check -use-nullptr %t.cpp -- --std=c++11 -I %S // RUN: FileCheck -input-file=%t.cpp %s -// XFAIL: * -namespace std { typedef decltype(nullptr) nullptr_t; } +namespace std { + +typedef decltype(nullptr) nullptr_t; + +} // namespace std // Just to make sure make_null() could have side effects. void external(); -std::nullptr_t make_null() { external(); return nullptr; } +std::nullptr_t make_null() { + external(); + return nullptr; +} + +void func() { + void *CallTest = make_null(); + // CHECK: void *CallTest = make_null(); + + int var = 1; + void *CommaTest = (var+=2, make_null()); + // CHECK: void *CommaTest = (var+=2, make_null()); -void *call_make_null() -{ - return make_null(); - // CHECK: return make_null(); + int *CastTest = static_cast<int*>(make_null()); + // CHECK: int *CastTest = static_cast<int*>(make_null()); } |