// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
// RUN: diff %t %s.result

#include "Common.h"

@interface myController : NSObject
-(id)test:(id)x;
@end

#define MY_MACRO1(x)
#define MY_MACRO2(x) (void)x

@implementation myController
-(id) test:(id) x {
  return x;
}

-(void)dealloc
{
  id array, array_already_empty;
  for (id element in array_already_empty) {
  }

  ;

  int b, b_array_already_empty;
  if (b_array_already_empty) ;

  if (b_array_already_empty) {
  }

  if (b)
    MY_MACRO1(array);
  if (b)
    MY_MACRO2(array);
}
@end
