// RUN: %clang_cc1 -fsyntax-only -verify %s
// expected-no-diagnostics

@interface Test {}
+ (Test*)one;
- (int)two;
@end

int main ()
{
  return Test.one.two;
}

// rdar://16650575
__attribute__((objc_root_class))
@interface RootClass { 
  Class isa; 
}

@property int property;
-(int)method;
- (void) setMethod : (int)arg;
+(int)classMethod;
@end

@interface Subclass : RootClass @end
void Test1() { 
    // now okay
    (void)RootClass.property;
    (void)Subclass.property;
    (void)RootClass.method;
    (void)Subclass.method;

    RootClass.property = 1;
    Subclass.property = 2;
    RootClass.method = 3;
    Subclass.method = 4;

    // okay
    (void)RootClass.classMethod;
    (void)Subclass.classMethod;

    // also okay
    (void)[RootClass property];
    (void)[Subclass property];
    [RootClass method];
    [Subclass method];
    [RootClass classMethod];
    [Subclass classMethod];

    // also okay
    [RootClass setProperty : 1];
    [Subclass setProperty : 2];
    [RootClass setMethod : 3];
    [Subclass setMethod : 4];
}
