// { dg-do run  }
// GROUPS passed operators
// Check that operators may be (directly) recursive.

extern "C" int printf (const char *, ...); 

struct base {
	int i;
};

base base_variable;

base operator+ (const base& left, const base& right)
{
	base ret_val;

	ret_val.i = left.i + right.i;
	return ret_val;
}

base operator- (const base& left, int right)
{
	base ret_val;

	ret_val.i = left.i - right;
	return ret_val;
}

// Define the unary ! operator for class base to be the fibonachi
// operator.

base operator! (const base& right)
{
	if (right.i < 2)
		return right;
	else
		return ((!(right-1)) + (!(right-2)));
}

int main ()
{
	base k;

	k.i = 15;
	k = !k;		// fib it!

	if (k.i != 610)
	  { printf ("FAIL\n"); return 1; }
	else
	  printf ("PASS\n");

	return 0;
}
