blob: 5498b47fc9fe849efcf415bf30da03ff1f164957 [file] [log] [blame]
Richard Smithace21ba2013-07-14 02:01:48 +00001// RUN: rm -rf %t
2// RUN: %clang_cc1 -x objective-c++ -fmodules -fmodules-cache-path=%t -I %S/Inputs %s -verify -std=c++11
Stephen Hinesc568f1e2014-07-21 00:47:37 -07003// RUN: %clang_cc1 -x objective-c++ -fmodules -fmodules-cache-path=%t -I %S/Inputs %s -ast-dump -ast-dump-filter merge -std=c++11 | FileCheck %s
Richard Smithace21ba2013-07-14 02:01:48 +00004
5// expected-no-diagnostics
6
Stephen Hines6bcf27b2014-05-29 04:14:42 -07007void use_implicit_new() { operator new[](3); }
8
Richard Smith868edfa2013-08-30 00:23:29 +00009@import dummy;
Richard Smithace21ba2013-07-14 02:01:48 +000010@import cxx_decls.imported;
11
12void test_delete(int *p) {
13 // We can call the normal global deallocation function even though it has only
14 // ever been explicitly declared in an unimported submodule.
15 delete p;
16}
Richard Smith868edfa2013-08-30 00:23:29 +000017
18void friend_1(HasFriends s) {
19 s.private_thing();
20}
21void test_friends(HasFriends s) {
22 friend_1(s);
23 friend_2(s);
24}
Stephen Hines6bcf27b2014-05-29 04:14:42 -070025
26static_assert(!__is_trivial(HasNontrivialDefaultConstructor), "");
27static_assert(!__has_trivial_constructor(HasNontrivialDefaultConstructor), "");
28
29void use_implicit_new_again() { operator new[](3); }
Stephen Hinesc568f1e2014-07-21 00:47:37 -070030
31int importMergeUsedFlag = getMergeUsedFlag();
32
33@import cxx_decls_merged;
34
35// CHECK: VarDecl [[mergeUsedFlag:0x[0-9a-f]*]] {{.*}} in cxx_decls.imported used mergeUsedFlag
36// CHECK: VarDecl {{0x[0-9a-f]*}} prev [[mergeUsedFlag]] {{.*}} in cxx_decls_merged used mergeUsedFlag