From c812c3ae43e0608c9ccf7f4c5f71f376609eecae Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Tue, 12 Mar 2013 19:45:57 +0000 Subject: [PATCH] Move the extern "C" sema tests to a new file. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176888 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/SemaCXX/extern-c.cpp | 46 ++++++++++++++++++++++++++++++++ test/SemaCXX/function-redecl.cpp | 45 ------------------------------- 2 files changed, 46 insertions(+), 45 deletions(-) create mode 100644 test/SemaCXX/extern-c.cpp diff --git a/test/SemaCXX/extern-c.cpp b/test/SemaCXX/extern-c.cpp new file mode 100644 index 0000000000..c4b1141b65 --- /dev/null +++ b/test/SemaCXX/extern-c.cpp @@ -0,0 +1,46 @@ +// RUN: %clang_cc1 -fsyntax-only -verify %s + +namespace test1 { + extern "C" { + void f() { + void test1_g(int); // expected-note {{previous declaration is here}} + } + } +} +int test1_g(int); // expected-error {{functions that differ only in their return type cannot be overloaded}} + +namespace test2 { + extern "C" { + void f() { + extern int test2_x; // expected-note {{previous definition is here}} + } + } +} +float test2_x; // expected-error {{redefinition of 'test2_x' with a different type: 'float' vs 'int'}} + +namespace test3 { + extern "C" { + void f() { + extern int test3_b; // expected-note {{previous definition is here}} + } + } + extern "C" { + float test3_b; // expected-error {{redefinition of 'test3_b' with a different type: 'float' vs 'int'}} + } +} + +extern "C" { + void test4_f() { + extern int test4_b; // expected-note {{previous definition is here}} + } +} +static float test4_b; // expected-error {{redefinition of 'test4_b' with a different type: 'float' vs 'int'}} + +extern "C" { + void test5_f() { + extern int test5_b; // expected-note {{previous definition is here}} + } +} +extern "C" { + static float test5_b; // expected-error {{redefinition of 'test5_b' with a different type: 'float' vs 'int'}} +} diff --git a/test/SemaCXX/function-redecl.cpp b/test/SemaCXX/function-redecl.cpp index 8cbda82c0b..b9d1f23af4 100644 --- a/test/SemaCXX/function-redecl.cpp +++ b/test/SemaCXX/function-redecl.cpp @@ -116,48 +116,3 @@ bool Foo::isGood() { // expected-error {{out-of-line definition of 'isGood' does } void Foo::beEvil() {} // expected-error {{out-of-line definition of 'beEvil' does not match any declaration in namespace 'redecl_typo::Foo'; did you mean 'BeEvil'?}} } - -namespace test2 { - extern "C" { - void f() { - void test2_g(int); // expected-note {{previous declaration is here}} - } - } -} -int test2_g(int); // expected-error {{functions that differ only in their return type cannot be overloaded}} - -namespace test3 { - extern "C" { - void f() { - extern int test3_x; // expected-note {{previous definition is here}} - } - } -} -float test3_x; // expected-error {{redefinition of 'test3_x' with a different type: 'float' vs 'int'}} - -namespace test4 { - extern "C" { - void f() { - extern int b; // expected-note {{previous definition is here}} - } - } - extern "C" { - float b; // expected-error {{redefinition of 'b' with a different type: 'float' vs 'int'}} - } -} - -extern "C" { - void test5_f() { - extern int test5_b; // expected-note {{previous definition is here}} - } -} -static float test5_b; // expected-error {{redefinition of 'test5_b' with a different type: 'float' vs 'int'}} - -extern "C" { - void test6_f() { - extern int test6_b; // expected-note {{previous definition is here}} - } -} -extern "C" { - static float test6_b; // expected-error {{redefinition of 'test6_b' with a different type: 'float' vs 'int'}} -} -- 2.40.0