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