Richard Smith
afe800c456
[modules] Fix typo in default argument merging.
...
llvm-svn: 239954
2015-06-17 22:13:23 +00:00
Richard Smith
5293379374
[modules] Fix merging of default template arguments onto friend templates.
...
Previously we'd complain about redefinition of default arguments when we
instantiated a class with a friend template that inherits its default argument,
because we propagate the default template arguemnt onto the friend when we
reload the AST.
llvm-svn: 239857
2015-06-16 21:57:05 +00:00
Reid Kleckner
2c901d4859
Fix submodule test to pass on content addressable filesystems where inodes would collide
...
llvm-svn: 239765
2015-06-15 21:21:17 +00:00
Richard Smith
f2b1eb9eb2
[modules] Better support for redefinitions of an entity from the same module.
...
Support this across module save/reload and extend the 'missing import'
diagnostics with a list of providing modules.
llvm-svn: 239750
2015-06-15 20:15:48 +00:00
Richard Smith
a1431077de
[modules] Apply name visibility rules to names found by ADL.
...
llvm-svn: 239578
2015-06-12 01:32:13 +00:00
Richard Smith
c785276b92
[modules] Fix crash with multiple levels of default template argument merging.
...
llvm-svn: 239575
2015-06-11 23:46:11 +00:00
Richard Smith
0f192e8940
[modules] Fix assert/crash when parsing and merging a definition of a class with a base-specifier inside a namespace.
...
llvm-svn: 239569
2015-06-11 22:48:25 +00:00
Richard Smith
00be6d0ff8
[modules] Fix a few places where merging wasn't performed if modules was disabled but local module visibilty was enabled.
...
llvm-svn: 239504
2015-06-11 03:05:39 +00:00
Richard Smith
fd8b64eea0
[modules] Support merging a parsed default argument with an imported hidden one for non-type and template template parameters too.
...
llvm-svn: 237815
2015-05-20 18:24:21 +00:00
Richard Smith
c7d48d1a16
[modules] Support merging a parsed default function/template argument with an imported but hidden one.
...
llvm-svn: 237814
2015-05-20 17:50:35 +00:00
Richard Smith
82e57fb1e8
[modules] Support for merging a parsed definition of a static data member of a class template into an imported but hidden definition.
...
llvm-svn: 237647
2015-05-19 00:49:29 +00:00
Richard Smith
c7e6ff02d5
[modules] Support for merging a parsed class template specialization definition into an imported but hidden definition.
...
llvm-svn: 237612
2015-05-18 20:36:47 +00:00
Richard Smith
d9ba224f66
[modules] Suport for merging a parsed enum definition into an existing imported but not visible definition.
...
llvm-svn: 236690
2015-05-07 03:54:19 +00:00
Richard Smith
d6aab59ad1
[modules] Allow a function template definition if we have a pre-existing but not visible definition of the same template.
...
llvm-svn: 233430
2015-03-27 21:57:41 +00:00
Richard Smith
df5bf99d0b
Add file forgotten from r233420.
...
llvm-svn: 233425
2015-03-27 21:40:57 +00:00
Richard Smith
0279375836
[modules] When merging class definitions, make the retained definition visible
...
if the merged definition is visible, and perform lookups into all merged copies
of the definition (not just for special members) so that we can complete the
redecl chains for members of the class.
llvm-svn: 233420
2015-03-27 21:16:39 +00:00
Richard Smith
9a71c99844
[modules] Allow a function to be redefined if the old definition is not visible.
...
llvm-svn: 233407
2015-03-27 20:16:58 +00:00
Richard Smith
a523022b53
[modules] Handle defining a tag with a typedef name for linkage purposes on top of an existing imported-but-not-visible definition.
...
llvm-svn: 233345
2015-03-27 01:37:43 +00:00
Richard Smith
be3980b73c
[modules] Handle defining a class template on top of an existing imported-but-not-visible definition.
...
llvm-svn: 233341
2015-03-27 00:41:57 +00:00
Richard Smith
65ebb4ac8a
[modules] If we reach a definition of a class for which we already have a
...
non-visible definition, skip the new definition and make the old one visible
instead of trying to parse it again and failing horribly. C++'s ODR allows
us to assume that the two definitions are identical.
llvm-svn: 233250
2015-03-26 04:09:53 +00:00