Skip to content

Commit b4c1d94

Browse files
committed
Assert on self-referencing reference variable
1 parent 6fa0a5d commit b4c1d94

1 file changed

Lines changed: 5 additions & 2 deletions

File tree

‎cpp2rust/converter/converter.cpp‎

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -555,9 +555,12 @@ void Converter::ConvertVarDecl(clang::VarDecl *decl) {
555555
}
556556

557557
HoistMaterializedTempBindings hoist_temps(*this);
558-
if (decl->isLocalVarDecl() && !IsGlobalVar(decl) &&
559-
!decl->getType()->isReferenceType() && decl->hasInit() &&
558+
if (decl->isLocalVarDecl() && !IsGlobalVar(decl) && decl->hasInit() &&
560559
ReferencesVar(decl->getInit(), decl)) {
560+
if (decl->getType()->isReferenceType()) {
561+
llvm::report_fatal_error(
562+
"self-referential initializer of a reference is not supported");
563+
}
561564
if (DefaultInitHasSideEffects(ctx_, decl->getType())) {
562565
llvm::report_fatal_error("self-referential initializer of a variable "
563566
"whose default initialization has side effects "

0 commit comments

Comments
 (0)