// RUN: clang-cc -fsyntax-only -verify %s

@interface Super @end
Super s1; // expected-error{{interface type cannot be statically allocated}}

extern Super e1; // expected-error{{interface type cannot be statically allocated}}

struct S {
  Super s1; // expected-error{{interface type cannot be statically allocated}}
};

@protocol P1 @end

@interface INTF
{
  Super ivar1; // expected-error{{interface type cannot be statically allocated}}
}
@end

struct whatever {
  Super objField; // expected-error{{interface type cannot be statically allocated}}
};

@interface MyIntf
{
  Super<P1> ivar1; // expected-error{{interface type cannot be statically allocated}}
}
@end

Super foo( // expected-error{{interface interface type 'Super' cannot be returned by value}}
          Super parm1) { // expected-error{{interface interface type 'Super' cannot be passed by value}}
	Super p1; // expected-error{{interface type cannot be statically allocated}}
	return p1;
}

@interface NSMutableSet @end

@interface DVTDummyAnnotationProvider  
  @property(readonly) NSMutableSet annotations;	// expected-error{{interface type cannot be statically allocated}}

@end

