Skip to content

Commit 2035c00

Browse files
committed
Don't translate template static member variables
1 parent b907253 commit 2035c00

1 file changed

Lines changed: 7 additions & 1 deletion

File tree

‎cpp2rust/converter/converter.cpp‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -591,7 +591,8 @@ void Converter::ConvertGlobalVarDecl(clang::VarDecl *decl) {
591591
}
592592

593593
bool Converter::VisitVarDecl(clang::VarDecl *decl) {
594-
if (clang::isa<clang::VarTemplatePartialSpecializationDecl>(decl)) {
594+
if (clang::isa<clang::VarTemplatePartialSpecializationDecl>(decl) ||
595+
decl->getDeclContext()->isDependentContext()) {
595596
return false;
596597
}
597598
if (ConvertLambdaVarDecl(decl)) {
@@ -756,6 +757,11 @@ void Converter::EmitRustStructOrUnion(clang::RecordDecl *decl) {
756757
VisitEnumDecl(enum_decl);
757758
}
758759
if (auto *var_decl = clang::dyn_cast<clang::VarDecl>(d)) {
760+
if (auto *def = var_decl->getDefinition();
761+
def && var_decl->getInstantiatedFromStaticDataMember() &&
762+
!var_decl->hasInit()) {
763+
var_decl = def;
764+
}
759765
VisitVarDecl(var_decl);
760766
}
761767
if (auto *friend_decl = clang::dyn_cast<clang::FriendDecl>(d)) {

0 commit comments

Comments
 (0)