Richard Smith
b1d8ea4635
[modules] Fix merging support for forward-declared enums with fixed underlying types. A visible declaration is enough to make the type complete, but not enough to make the definition visible.
...
llvm-svn: 241743
2015-07-08 21:49:31 +00:00
Richard Smith
da6c234c39
[modules] Merging support for specializations of a function template. This very
...
rarely matters, but can affect whether two dependent types are canonically
equivalent.
llvm-svn: 241207
2015-07-01 23:19:58 +00:00
Richard Smith
5327b89001
[modules] Don't make out-of-line member specializations of an instantiated
...
class template specialization visible just because the class template
specialization's definition is visible.
llvm-svn: 241182
2015-07-01 19:32:54 +00:00
Richard Smith
04c6c1f3a5
[modules] Skip trailing attributes when skipping a class definition during parse-merging.
...
llvm-svn: 241180
2015-07-01 18:56:50 +00:00
Richard Smith
7655381aa1
[modules] Don't require the 'inline' specifier when merging an inline function;
...
any source of the inline nature is sufficient.
llvm-svn: 241146
2015-07-01 07:24:18 +00:00
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
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
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