diff options
author | Anders Carlsson <andersca@mac.com> | 2009-12-09 03:01:51 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2009-12-09 03:01:51 +0000 |
commit | efa4732747146160a5b40041055060f46c9d7595 (patch) | |
tree | 01c1ad26f50e2699c764a0ba1170edbd969d5a8a /clang/test/SemaTemplate/instantiate-default-assignment-operator.cpp | |
parent | 0d886ca0919aca5ea538793ff91da2f4fbe73b64 (diff) | |
download | bcm5719-llvm-efa4732747146160a5b40041055060f46c9d7595.tar.gz bcm5719-llvm-efa4732747146160a5b40041055060f46c9d7595.zip |
Pass the current SourceLocation to getAssignOperatorMethod, fixing a crash when the assign operator method needs to be instantiated. Doug, please review the updated default-assignment-operator.cpp change.
llvm-svn: 90935
Diffstat (limited to 'clang/test/SemaTemplate/instantiate-default-assignment-operator.cpp')
-rw-r--r-- | clang/test/SemaTemplate/instantiate-default-assignment-operator.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/clang/test/SemaTemplate/instantiate-default-assignment-operator.cpp b/clang/test/SemaTemplate/instantiate-default-assignment-operator.cpp new file mode 100644 index 00000000000..b0ac078893d --- /dev/null +++ b/clang/test/SemaTemplate/instantiate-default-assignment-operator.cpp @@ -0,0 +1,17 @@ +// RUN: clang-cc -fsyntax-only -verify %s +template<typename> struct PassRefPtr { }; +template<typename T> struct RefPtr { + RefPtr& operator=(const RefPtr&) { int a[sizeof(T) ? -1 : -1];} // expected-error 2 {{array size is negative}} + RefPtr& operator=(const PassRefPtr<T>&); +}; + +struct A { RefPtr<int> a; }; +struct B : RefPtr<float> { }; + +void f() { + A a1, a2; + a1 = a2; // expected-note {{instantiation of member function 'RefPtr<int>::operator=' requested here}} + + B b1, b2; + b1 = b2; // expected-note {{in instantiation of member function 'RefPtr<float>::operator=' requested here}} +} |