Add coverage tests of C and Obj-C language features.

- AST printing, dumping, serialization, codegen.
 - HTML printing.
 - Parser callbacks.

Several of these are XFAIL because they trigger unimplemented code.

llvm-svn: 57081
This commit is contained in:
Daniel Dunbar 2008-10-04 23:47:28 +00:00
parent e773d5ff16
commit 83f705ac20
11 changed files with 211 additions and 0 deletions

View File

@ -0,0 +1,5 @@
// RUN: clang --fsyntax-only %s &&
// RUN: clang --ast-print %s &&
// RUN: clang --ast-dump %s
#include "c-language-features.inc"

View File

@ -0,0 +1,5 @@
// RUN: clang --fsyntax-only %s &&
// RUN: clang --ast-print %s &&
// RUN: clang --ast-dump %s
#include "objc-language-features.inc"

View File

@ -0,0 +1,104 @@
//-*- C -*-
/* This is a
multiline comment */
// Intended to exercise all syntactic parts of the C language.
int g0;
int g1, g2;
struct s0;
struct s0 {
int x;
};
int g3 = 10;
__asm("");
typedef int td0;
td0 g4;
enum e0 {
ec0
};
static void f0(int x) {
}
inline void f0_0(int x) {
;
}
extern void f0_1(int x) {
}
void f1(int, ...);
// Statements.
void f2() {
for (;;) {
break;
continue;
}
while (0) {
}
do {
} while (0);
void *label = &&theif;
goto *label;
goto theif;
theif:
if (0) {
;
} else if (0) {
} else {
}
switch(0) {
case 0:
case 1 ... 2:
break;
default:
break;
}
asm ("nop");
return;
}
// Expressions.
#include <stdarg.h>
typedef struct ipair {
int first, second;
} ipair;
void f4(int a0, int a1, int a2, va_list ap) {
int t0 = a0 ? a1 : a2;
float t1 = (float) a0;
ipair t2 = {1, 2};
int t3 = sizeof(ipair);
ipair t4;
t4 = (ipair) {1, 2};
extern int g(int);
int t5 = g(a0);
int t6 = t4.first;
int t7[10];
int t8 = t7[a0];
t8++;
const char *t9 = __FUNCTION__;
char t10 = 'x';
int t11 = __builtin_offsetof(ipair, first);
int t12 = __builtin_types_compatible_p(ipair, int);
int t13 = va_arg(ap, int);
}

View File

@ -0,0 +1,4 @@
// RUN: clang -emit-llvm -o %t %s
// RUN: clang -emit-llvm-bc -o %t %s
#include "c-language-features.inc"

View File

@ -0,0 +1,5 @@
// RUN: clang -fnext-runtime -emit-llvm -o %t %s
// RUN: clang -fnext-runtime -emit-llvm-bc -o %t %s
// XFAIL
#include "objc-language-features.inc"

View File

@ -0,0 +1,3 @@
// RUN: clang -emit-html -o %t %s
#include "c-language-features.inc"

View File

@ -0,0 +1,69 @@
//-*- ObjC -*-
@protocol P0;
@protocol P1
-(void) fm0;
@end
@class B;
@interface Root
@end
@interface A : Root <P1> {
int iv0;
B *iv1;
}
@property(assign,readonly) int p0;
@property(assign,nonatomic,readwrite) int p1;
@property(copy) id p2;
@property(retain) id p3;
@property(assign, getter=getme, setter=setme:) id p4;
@end
@implementation A
@dynamic p0;
@synthesize p1 = iv0;
+(void) fm0 {
[super fm0];
}
-(void) im0 {
[super im0];
}
-(void) im1: (int) x, ... {
}
@end
@implementation C : A
@end
#if 0
@interface A (Cat)
@end
@implementation A (Cat)
@end
#endif
int f0(id x) {
@synchronized(x) {
}
@try {
@throw x;
} @catch(A *e) {
@throw;
} @finally {
;
}
for (id y in x) {
break;
}
}
struct s0 {
@defs(A);
};

View File

@ -0,0 +1,4 @@
// RUN: clang --parse-noop %s &&
// RUN: clang --parse-print-callbacks %s
#include "c-language-features.inc"

View File

@ -0,0 +1,4 @@
// RUN: clang --parse-noop %s &&
// RUN: clang --parse-print-callbacks %s
#include "objc-language-features.inc"

View File

@ -0,0 +1,4 @@
// RUN: clang -fsyntax-only --serialize %s
// XFAIL
#include "c-language-features.inc"

View File

@ -0,0 +1,4 @@
// RUN: clang -fsyntax-only --serialize %s
// XFAIL
#include "objc-language-features.inc"