forked from OSchip/llvm-project
44 lines
1.5 KiB
C++
44 lines
1.5 KiB
C++
// RUN: %clang_cc1 -fsyntax-only -verify %s
|
|
|
|
// C++11 [basic.link]p6:
|
|
// The name of a function declared in block scope and the name
|
|
// of a variable declared by a block scope extern declaration
|
|
// have linkage. If there is a visible declaration of an entity
|
|
// with linkage having the same name and type, ignoring entities
|
|
// declared outside the innermost enclosing namespace scope, the
|
|
// block scope declaration declares that same entity and
|
|
// receives the linkage of the previous declaration.
|
|
|
|
// rdar://13535367
|
|
namespace test0 {
|
|
extern "C" int test0_array[];
|
|
void declare() { extern int test0_array[100]; }
|
|
extern "C" int test0_array[];
|
|
int value = sizeof(test0_array); // expected-error {{invalid application of 'sizeof' to an incomplete type 'int []'}}
|
|
}
|
|
|
|
namespace test1 {
|
|
extern "C" int test1_array[];
|
|
void test() {
|
|
{ extern int test1_array[100]; }
|
|
extern int test1_array[];
|
|
int x = sizeof(test1_array); // expected-error {{invalid application of 'sizeof' to an incomplete type 'int []'}}
|
|
}
|
|
}
|
|
|
|
namespace test2 {
|
|
void declare() { extern int test2_array[100]; }
|
|
extern int test2_array[];
|
|
int value = sizeof(test2_array); // expected-error {{invalid application of 'sizeof' to an incomplete type 'int []'}}
|
|
}
|
|
|
|
namespace test3 {
|
|
void test() {
|
|
{ extern int test3_array[100]; }
|
|
extern int test3_array[];
|
|
int x = sizeof(test3_array); // expected-error {{invalid application of 'sizeof' to an incomplete type 'int []'}}
|
|
}
|
|
}
|
|
|
|
|