summaryrefslogtreecommitdiffstats
path: root/clang/test/ASTMerge
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-02-17 16:12:00 +0000
committerDouglas Gregor <dgregor@apple.com>2010-02-17 16:12:00 +0000
commit98d156a87e72d1a1c59318ca68cafdc2e16e9360 (patch)
tree05c47fb792d168a0bd64c0b96d9dda62d82f542c /clang/test/ASTMerge
parentfe562b65985a5fb6e24ed6d9ac8ff7bdc1f7c4f2 (diff)
downloadbcm5719-llvm-98d156a87e72d1a1c59318ca68cafdc2e16e9360.tar.gz
bcm5719-llvm-98d156a87e72d1a1c59318ca68cafdc2e16e9360.zip
AST import for Objective-C protocols
llvm-svn: 96478
Diffstat (limited to 'clang/test/ASTMerge')
-rw-r--r--clang/test/ASTMerge/Inputs/interface1.m23
-rw-r--r--clang/test/ASTMerge/Inputs/interface2.m23
-rw-r--r--clang/test/ASTMerge/interface.m4
3 files changed, 49 insertions, 1 deletions
diff --git a/clang/test/ASTMerge/Inputs/interface1.m b/clang/test/ASTMerge/Inputs/interface1.m
index bde667475dc..a508bc159bd 100644
--- a/clang/test/ASTMerge/Inputs/interface1.m
+++ b/clang/test/ASTMerge/Inputs/interface1.m
@@ -45,3 +45,26 @@
- (int)foo;
+ (int)bar:(float)x;
@end
+
+// Matching protocol
+@protocol P0
++ (int)foo;
+- (int)bar:(float)x;
+@end
+
+// Protocol with mismatching method
+@protocol P1
++ (int)foo;
+- (int)bar:(float)x;
+@end
+
+// Interface with protocol
+@interface I9 <P0>
++ (int)foo;
+- (int)bar:(float)x;
+@end
+
+// Protocol with protocol
+@protocol P2 <P0>
+- (float)wibble:(int)a1 second:(int)a2;
+@end
diff --git a/clang/test/ASTMerge/Inputs/interface2.m b/clang/test/ASTMerge/Inputs/interface2.m
index 1d5bebd9969..d79f77d92a2 100644
--- a/clang/test/ASTMerge/Inputs/interface2.m
+++ b/clang/test/ASTMerge/Inputs/interface2.m
@@ -44,3 +44,26 @@
- (int)foo;
+ (int)bar:(float)x, ...;
@end
+
+// Matching protocol
+@protocol P0
++ (int)foo;
+- (int)bar:(float)x;
+@end
+
+// Protocol with mismatching method
+@protocol P1
++ (int)foo;
+- (int)bar:(double)x;
+@end
+
+// Interface with protocol
+@interface I9 <P0>
++ (int)foo;
+- (int)bar:(float)x;
+@end
+
+// Protocol with protocol
+@protocol P2 <P0>
+- (float)wibble:(int)a1 second:(int)a2;
+@end
diff --git a/clang/test/ASTMerge/interface.m b/clang/test/ASTMerge/interface.m
index 465077b4207..47e4e052692 100644
--- a/clang/test/ASTMerge/interface.m
+++ b/clang/test/ASTMerge/interface.m
@@ -13,5 +13,7 @@
// CHECK: interface1.m:40:17: note: declared here with type 'int'
// CHECK: interface2.m:45:1: error: class method 'bar:' is variadic in one translation unit and not variadic in another
// CHECK: interface1.m:46:1: note: class method 'bar:' also declared here
-// CHECK: 11 diagnostics generated
+// CHECK: interface2.m:57:20: error: instance method 'bar:' has a parameter with a different types in different translation units ('double' vs. 'float')
+// CHECK: interface1.m:58:19: note: declared here with type 'float'
+// CHECK: 13 diagnostics generated
OpenPOWER on IntegriCloud