16764334dfa73d67cbbb1b1fc8fe00440aad00f2aArgyrios Kyrtzidis// Test this without pch. 26764334dfa73d67cbbb1b1fc8fe00440aad00f2aArgyrios Kyrtzidis// RUN: %clang_cc1 -include %S/cxx-friends.h -fsyntax-only -verify %s 36764334dfa73d67cbbb1b1fc8fe00440aad00f2aArgyrios Kyrtzidis 46764334dfa73d67cbbb1b1fc8fe00440aad00f2aArgyrios Kyrtzidis// Test with pch. 56764334dfa73d67cbbb1b1fc8fe00440aad00f2aArgyrios Kyrtzidis// RUN: %clang_cc1 -x c++-header -emit-pch -o %t %S/cxx-friends.h 64fc5089e306fe606f2e3e4fa58063ebab35deb62Richard Smith// RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify %s -error-on-deserialized-decl doNotDeserialize 74fc5089e306fe606f2e3e4fa58063ebab35deb62Richard Smith 84fc5089e306fe606f2e3e4fa58063ebab35deb62Richard Smith// Test with modules. 94fc5089e306fe606f2e3e4fa58063ebab35deb62Richard Smith// RUN: %clang_cc1 -x c++-header -emit-pch -o %t %S/cxx-friends.h -fmodules 104fc5089e306fe606f2e3e4fa58063ebab35deb62Richard Smith// RUN: %clang_cc1 -include-pch %t -fsyntax-only -verify %s -error-on-deserialized-decl doNotDeserialize -fmodules 116764334dfa73d67cbbb1b1fc8fe00440aad00f2aArgyrios Kyrtzidis 128e8fb3be5bd78f0564444eca02b404566a5f3b5dAndy Gibbs// expected-no-diagnostics 138e8fb3be5bd78f0564444eca02b404566a5f3b5dAndy Gibbs 146764334dfa73d67cbbb1b1fc8fe00440aad00f2aArgyrios Kyrtzidisclass F { 156764334dfa73d67cbbb1b1fc8fe00440aad00f2aArgyrios Kyrtzidis void m() { 166764334dfa73d67cbbb1b1fc8fe00440aad00f2aArgyrios Kyrtzidis A* a; 176764334dfa73d67cbbb1b1fc8fe00440aad00f2aArgyrios Kyrtzidis a->x = 0; 186764334dfa73d67cbbb1b1fc8fe00440aad00f2aArgyrios Kyrtzidis } 196764334dfa73d67cbbb1b1fc8fe00440aad00f2aArgyrios Kyrtzidis}; 206e21b16ab226959341b85e16060fd81f71cee628Richard Smith 216e21b16ab226959341b85e16060fd81f71cee628Richard Smithtemplate<typename T> class PR12585::future_base::setter { 226e21b16ab226959341b85e16060fd81f71cee628Richard Smithpublic: 236e21b16ab226959341b85e16060fd81f71cee628Richard Smith int f() { 246e21b16ab226959341b85e16060fd81f71cee628Richard Smith return promise<T*>().k; 256e21b16ab226959341b85e16060fd81f71cee628Richard Smith } 266e21b16ab226959341b85e16060fd81f71cee628Richard Smith}; 276e21b16ab226959341b85e16060fd81f71cee628Richard Smithint k = PR12585::future_base::setter<int>().f(); 284fc5089e306fe606f2e3e4fa58063ebab35deb62Richard Smith 294fc5089e306fe606f2e3e4fa58063ebab35deb62Richard SmithLazy::S *p; 30