// APPLE LOCAL file mainline
/* Test for using ObjC classes as C++ template parameters.  */
/* Author:  Ziemowit Laski <zlaski@apple.com>.  */
/* { dg-do run } */

/* APPLE LOCAL radar 4894756 */
#include "../objc/execute/Object2.h"
#include <stdlib.h>

#define CHECK_IF(expr) if(!(expr)) abort()

@interface Base: Object
- (int) meth;
@end

@interface Derived: Base   
- (int) meth;                
@end

static int count = 0;

template <class T> struct Templ
{
	T *m;
	int i;
	Templ(): i(55), m([[T alloc] init]) { count++; }
	~Templ() { [m free]; count--; }
};

@implementation Base
- (int) meth { return 333; }
@end

@implementation Derived
- (int) meth { return 666; }
@end
	
int main (void) {
    CHECK_IF(count == 0);
    {
      Templ<Derived> derived;
      CHECK_IF(derived.i == 55 && count == 1);
      Templ<Base> base;
      CHECK_IF(base.i == 55 && count == 2);
      CHECK_IF([base.m meth] == 333);
      CHECK_IF([derived.m meth] == 666);
    }
    CHECK_IF(count == 0);
    return 0;
}
