From-SVN: r23646
This commit is contained in:
Jason Merrill 1998-11-13 15:08:16 -05:00
parent f99f88e0d0
commit 46d18cc681
1 changed files with 16 additions and 6 deletions

View File

@ -1,5 +1,7 @@
// g++ 1.37.1 bug 900322_01
// ** Old, obsolete commentary:
// **************************************************************************
// The ANSI C standard, in section 3.1.2.5 (first paragraph) differentiates
// types into three disjoint sets, i.e object types, function types, and
// incomplete types.
@ -19,6 +21,14 @@
// g++ fails to flag all of the indicated statements with errors (even when
// the -pedantic option is used).
// **************************************************************************
// The above commentary is wrong. (jason 1998/11/13)
// In fact, the lines marked OK are well-formed; the prohibition is only
// against forming array types with multiple unknown bounds. This prohibition
// is found in 8.3.4 [dcl.array].
// It is also ill-formed to create an object of incomplete type.
// keywords: incomplete types, arrays, element types
@ -36,16 +46,16 @@ typedef int_one_d_type int_two_d_type[];// ERROR - invalid declaration
struct s;
extern struct s extern_s_array [10]; // ERROR - , XFAIL *-*-*
struct s tenative_s_array [10]; // ERROR - caught by g++
static struct s static_s_array [10]; // ERROR - caught by g++
extern struct s extern_s_array [10]; // OK
struct s tenative_s_array [10]; // ERROR - object with incomplete type
static struct s static_s_array [10]; // ERROR - object with incomplete type
struct s (*pointer_to_s_array) []; // ERROR - , XFAIL *-*-*
struct s (*pointer_to_s_array) []; // OK
void function_1 (struct s arg []) { // ERROR - , XFAIL *-*-*
void function_1 (struct s arg []) { // OK
}
typedef struct s s_type;
typedef s_type s_one_d_type [10]; // ERROR - , XFAIL *-*-*
typedef s_type s_one_d_type [10]; // OK
int main () { return 0; }