aboutsummaryrefslogtreecommitdiff
path: root/test/ASTMerge/struct.c
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-02-15 23:54:17 +0000
committerDouglas Gregor <dgregor@apple.com>2010-02-15 23:54:17 +0000
commitea35d11905f756ad33b87bd89cd3ac1e7ce57994 (patch)
tree3d50c67c53cde3ca1f9824d098c8c2b1028a162a /test/ASTMerge/struct.c
parentb9bbd592c7ea72ada8d982e40a729beb9b53371e (diff)
Cope with anonymous tags defined within declarators by structurally
comparing their types under the assumption that they are equivalent, rather than importing the types and then checking for compatibility. A few minor tweaks here: - Teach structural matching to handle compatibility between function types with prototypes and those without prototypes. - Teach structural matching that an incomplete record decl is the same as any other record decl with the same name. - Keep track of pairs of declarations that we have already checked (but failed to find as structurally matching), so we don't emit diagnostics repeatedly. - When importing a typedef of an anonymous tag, be sure to link the imported tag type to its typedef. With these changes, we survive a repeated import of <stdlib.h> and <stdio.h>. Alas, the ASTNodeImporter is getting a little grotty. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@96298 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/ASTMerge/struct.c')
-rw-r--r--test/ASTMerge/struct.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/test/ASTMerge/struct.c b/test/ASTMerge/struct.c
index d71436f2fc..e72b93b249 100644
--- a/test/ASTMerge/struct.c
+++ b/test/ASTMerge/struct.c
@@ -34,6 +34,9 @@
// CHECK: struct1.c:56:10: warning: type 'struct DeeperError' has incompatible definitions in different translation units
// CHECK: struct1.c:56:35: note: field 'f' has type 'int' here
// CHECK: struct2.c:53:37: note: field 'f' has type 'float' here
+// CHECK: struct1.c:54:8: warning: type 'struct DeepError' has incompatible definitions in different translation units
+// CHECK: struct1.c:56:41: note: field 'Deeper' has type 'struct DeeperError *' here
+// CHECK: struct2.c:53:43: note: field 'Deeper' has type 'struct DeeperError *' here
// CHECK: struct2.c:54:3: error: external variable 'xDeep' declared with incompatible types in different translation units ('struct DeepError' vs. 'struct DeepError')
// CHECK: struct1.c:57:3: note: declared here with type 'struct DeepError'
// CHECK: 37 diagnostics