Compiler projects using llvm
// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class -Wobjc-messaging-id %s

@interface CallMeMaybe

- (void)doThing:(int)intThing;

@property int thing;

@end

template<typename T>
void instantiate(const T &x) {
  [x setThing: 22]; // expected-warning {{messaging unqualified id}}
}

void fn() {
  id myObject;
  [myObject doThing: 10]; // expected-warning {{messaging unqualified id}}
  [myObject setThing: 11]; // expected-warning {{messaging unqualified id}}
  instantiate(myObject); // expected-note {{in instantiation}}
}