forked from OSchip/llvm-project
Modules: Adopt template parameters for variable templates to set their decl context correctly
Exposed by a related bug about visibility of default arguments of nested templates - without the correct decl context, default template parameters of variable templates nested in classes would have incorrect visibility computed. llvm-svn: 358796
This commit is contained in:
parent
aa3bf6ce72
commit
07489f9ccf
|
@ -956,6 +956,7 @@ VarTemplateDecl *VarTemplateDecl::Create(ASTContext &C, DeclContext *DC,
|
|||
SourceLocation L, DeclarationName Name,
|
||||
TemplateParameterList *Params,
|
||||
VarDecl *Decl) {
|
||||
AdoptTemplateParameterList(Params, DC);
|
||||
return new (C, DC) VarTemplateDecl(C, DC, L, Name, Params, Decl);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,18 +1,16 @@
|
|||
// RUN: rm -rf %t
|
||||
// RUN: %clang_cc1 -x c++ -fmodules -fimplicit-module-maps -fmodules-cache-path=%t \
|
||||
// RUN: -I %S/Inputs/nested-template-default-arg-redecl -std=c++14 \
|
||||
// RUN: -fmodules-local-submodule-visibility -verify %s
|
||||
// RUN: -fmodules-local-submodule-visibility -w -verify %s
|
||||
|
||||
// expected-no-diagnostics
|
||||
|
||||
#include "alias2.h"
|
||||
#include "var2.h"
|
||||
#include "strct2.h"
|
||||
#include "func2.h"
|
||||
|
||||
// FIXME: Variable templates lexical decl context appears to be the translation
|
||||
// unit, which is incorrect. Fixing this will hopefully address the following
|
||||
// error/bug:
|
||||
|
||||
// expected-note@Inputs/nested-template-default-arg-redecl/var.h:4 {{default argument declared here}}
|
||||
auto var = &var_outer::var<>; // expected-error {{default argument of 'var' must be imported from module 'VAR1' before it is required}}
|
||||
auto var = &var_outer::var<>;
|
||||
auto func = &func_outer::func<>;
|
||||
strct_outer::strct<> *strct;
|
||||
alias_outer::alias<> *alias;
|
||||
|
|
Loading…
Reference in New Issue