Mercurial > projects > ldc
comparison gen/toir.cpp @ 1401:e2cf1f67ca33
Don't print the entire declaration of the alliassee when `->toChars()` is
called on an `AliasDeclaration`; just printing the name will do. This fixes
#305, which otherwise tries to generate
{{{
class E {
void A() {
alias /* recurse into E->toCBuffer() */ m;
}
}
}}}
by way of an infinite recursion (causing a segfault when the stack runs out).
author | Frits van Bommel <fvbommel wxs.nl> |
---|---|
date | Wed, 20 May 2009 16:20:59 +0200 |
parents | 6063ddfcf27d |
children | a6dfd3cb5b99 |
comparison
equal
deleted
inserted
replaced
1400:4100c49b753f | 1401:e2cf1f67ca33 |
---|---|
1772 if( | 1772 if( |
1773 global.params.useInvariants && | 1773 global.params.useInvariants && |
1774 condty->ty == Tclass && | 1774 condty->ty == Tclass && |
1775 !((TypeClass*)condty)->sym->isInterfaceDeclaration()) | 1775 !((TypeClass*)condty)->sym->isInterfaceDeclaration()) |
1776 { | 1776 { |
1777 Logger::print("calling class invariant"); | 1777 Logger::println("calling class invariant"); |
1778 llvm::Function* fn = LLVM_D_GetRuntimeFunction(gIR->module, "_d_invariant"); | 1778 llvm::Function* fn = LLVM_D_GetRuntimeFunction(gIR->module, "_d_invariant"); |
1779 LLValue* arg = DtoBitCast(cond->getRVal(), fn->getFunctionType()->getParamType(0)); | 1779 LLValue* arg = DtoBitCast(cond->getRVal(), fn->getFunctionType()->getParamType(0)); |
1780 gIR->CreateCallOrInvoke(fn, arg); | 1780 gIR->CreateCallOrInvoke(fn, arg); |
1781 } | 1781 } |
1782 // struct invariants | 1782 // struct invariants |