[InstCombine] Preserve NSW flags for `lshr (mul nuw X, C1), C2 -> mul nuw nsw X,...
[llvm-project.git] / clang / test / SemaObjC / qualified-protocol-method-conflicts.m
blobc47d9c958c8bbc2c4a436ec6cfb5ed41f4035d74
1 // RUN: %clang_cc1  -Woverriding-method-mismatch -fsyntax-only -verify -Wno-objc-root-class %s
3 @protocol Xint
4 -(void) setX: (int) arg0; // expected-note {{previous declaration is here}}
5 +(int) C; // expected-note {{previous declaration is here}}
6 @end
8 @protocol Xfloat
9 -(void) setX: (float) arg0; // expected-note 2 {{previous declaration is here}}
10 +(float) C;                 // expected-note 2 {{previous declaration is here}}
11 @end
13 @interface A <Xint, Xfloat>
14 @end
16 @implementation A
17 -(void) setX: (int) arg0 { } // expected-warning {{conflicting parameter types in declaration of 'setX:': 'float' vs 'int'}}
18 +(int) C {return 0; } // expected-warning {{conflicting return type in declaration of 'C': 'float' vs 'int'}}
19 @end
21 @interface B <Xfloat, Xint>
22 @end
24 @implementation B 
25 -(void) setX: (float) arg0 { } // expected-warning {{conflicting parameter types in declaration of 'setX:': 'int' vs 'float'}}
26 + (float) C {return 0.0; } // expected-warning {{conflicting return type in declaration of 'C': 'int' vs 'float'}}
27 @end
29 @protocol Xint_float<Xint, Xfloat>
30 @end
32 @interface C<Xint_float>
33 @end
35 @implementation C
36 -(void) setX: (int) arg0 { } // expected-warning {{conflicting parameter types in declaration of 'setX:': 'float' vs 'int'}}
37 + (int) C {return 0;} // expected-warning {{conflicting return type in declaration of 'C': 'float' vs 'int'}}
38 @end