diff options
Diffstat (limited to 'clang/test')
| -rw-r--r-- | clang/test/Modules/Inputs/redecl-merge-left.h | 4 | ||||
| -rw-r--r-- | clang/test/Modules/Inputs/redecl-merge-right.h | 7 | ||||
| -rw-r--r-- | clang/test/Modules/redecl-merge.m | 8 |
3 files changed, 19 insertions, 0 deletions
diff --git a/clang/test/Modules/Inputs/redecl-merge-left.h b/clang/test/Modules/Inputs/redecl-merge-left.h index 47f3492f309..3eb0a735fa9 100644 --- a/clang/test/Modules/Inputs/redecl-merge-left.h +++ b/clang/test/Modules/Inputs/redecl-merge-left.h @@ -59,6 +59,10 @@ void consume_S4(struct S4*); typedef int T1; typedef float T2; +int func0(int); +int func1(int); +int func2(int); + #ifdef __cplusplus template<typename T> class Vector; diff --git a/clang/test/Modules/Inputs/redecl-merge-right.h b/clang/test/Modules/Inputs/redecl-merge-right.h index 315a9c37fff..9660199c72d 100644 --- a/clang/test/Modules/Inputs/redecl-merge-right.h +++ b/clang/test/Modules/Inputs/redecl-merge-right.h @@ -62,6 +62,13 @@ struct S4 *produce_S4(void); typedef int T1; typedef double T2; +int func0(int); +int func1(int); +int func1(int); +int func1(int); +int func1(int); +static int func2(int); + #ifdef __cplusplus template<typename T> class Vector { public: diff --git a/clang/test/Modules/redecl-merge.m b/clang/test/Modules/redecl-merge.m index 44d427c4c75..b8752610fb4 100644 --- a/clang/test/Modules/redecl-merge.m +++ b/clang/test/Modules/redecl-merge.m @@ -61,9 +61,17 @@ void testTypedefMerge(int i, double d) { // FIXME: Typedefs aren't actually merged in the sense of other merges, because // we should only merge them when the types are identical. // in other file: expected-note{{candidate found by name lookup is 'T2'}} + // in other file: expected-note{{candidate function}} T2 *dp = &d; // expected-error{{reference to 'T2' is ambiguous}} } +void testFuncMerge(int i) { + func0(i); + // in other file: expected-note{{candidate function}} + func1(i); + func2(i); // expected-error{{call to 'func2' is ambiguous}} +} + // Test redeclarations of entities in explicit submodules, to make // sure we're maintaining the declaration chains even when normal name // lookup can't see what we're looking for. |

