# Changeset View

Changeset View

# Standalone View

Standalone View

# cfe/trunk/test/Frontend/fixed_point_unknown_conversions.c

// RUN: %clang_cc1 -verify -ffixed-point %s | |||||

void func() { | |||||

_Bool b; | |||||

char c; | |||||

int i; | |||||

float f; | |||||

double d; | |||||

double _Complex dc; | |||||

int _Complex ic; | |||||

struct S { | |||||

int i; | |||||

} s; | |||||

enum E { | |||||

A | |||||

} e; | |||||

int *ptr; | |||||

typedef int int_t; | |||||

int_t i2; | |||||

_Accum accum; | |||||

_Fract fract = accum; // ok | |||||

_Accum *accum_ptr; | |||||

accum = b; // expected-error{{conversion between fixed point and '_Bool' is not yet supported}} | |||||

accum = i; // expected-error{{conversion between fixed point and 'int' is not yet supported}} | |||||

accum = i; // expected-error{{conversion between fixed point and 'int' is not yet supported}} | |||||

accum = f; // expected-error{{conversion between fixed point and 'float' is not yet supported}} | |||||

accum = d; // expected-error{{conversion between fixed point and 'double' is not yet supported}} | |||||

accum = dc; // expected-error{{conversion between fixed point and '_Complex double' is not yet supported}} | |||||

accum = ic; // expected-error{{conversion between fixed point and '_Complex int' is not yet supported}} | |||||

accum = s; // expected-error{{assigning to '_Accum' from incompatible type 'struct S'}} | |||||

accum = e; // expected-error{{conversion between fixed point and 'enum E' is not yet supported}} | |||||

accum = ptr; // expected-error{{assigning to '_Accum' from incompatible type 'int *'}} | |||||

accum_ptr = ptr; // expected-warning{{incompatible pointer types assigning to '_Accum *' from 'int *'}} | |||||

accum = i2; // expected-error{{conversion between fixed point and 'int_t' (aka 'int') is not yet supported}} | |||||

b = accum; // expected-error{{conversion between fixed point and '_Bool' is not yet supported}} | |||||

c = accum; // expected-error{{conversion between fixed point and 'char' is not yet supported}} | |||||

i = accum; // expected-error{{conversion between fixed point and 'int' is not yet supported}} | |||||

f = accum; // expected-error{{conversion between fixed point and 'float' is not yet supported}} | |||||

d = accum; // expected-error{{conversion between fixed point and 'double' is not yet supported}} | |||||

dc = accum; // expected-error{{conversion between fixed point and '_Complex double' is not yet supported}} | |||||

ic = accum; // expected-error{{conversion between fixed point and '_Complex int' is not yet supported}} | |||||

s = accum; // expected-error{{assigning to 'struct S' from incompatible type '_Accum'}} | |||||

e = accum; // expected-error{{conversion between fixed point and 'enum E' is not yet supported}} | |||||

ptr = accum; // expected-error{{assigning to 'int *' from incompatible type '_Accum'}} | |||||

ptr = accum_ptr; // expected-warning{{incompatible pointer types assigning to 'int *' from '_Accum *'}} | |||||

i2 = accum; // expected-error{{conversion between fixed point and 'int' is not yet supported}} | |||||

} |