// RUN: not %llvmgcc %s -S -emit-llvm -o - |& FileCheck %s
// This tests for a specific diagnostic in LLVM-GCC.
// Clang compiles this correctly with no diagnostic,
// ergo this test will fail with a Clang-based front-end.
class TFENodeVector  {
public:
 TFENodeVector(const TFENodeVector& inNodeVector);
 TFENodeVector();
};

@interface TWindowHistoryEntry  {}
@property (assign, nonatomic) TFENodeVector targetPath;
@end

@implementation TWindowHistoryEntry
@synthesize targetPath;
- (void) initWithWindowController {
   TWindowHistoryEntry* entry;
   TFENodeVector newPath;
   // CHECK: setting a C++ non-POD object value is not implemented
#ifdef __clang__
#error setting a C++ non-POD object value is not implemented
#endif
   entry.targetPath = newPath;
   [entry setTargetPath:newPath];
}
@end
