Wiki Roadmap Timeline Tickets New Ticket Source Search Help / Guide About Trac Login

Changeset 1401:e2cf1f67ca33

Show
Ignore:
Timestamp:
05/20/09 10:20:59 (3 years ago)
Author:
Frits van Bommel <fvbommel wxs.nl>
branch:
default
Message:

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).

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • dmd/declaration.c

    r1367 r1401  
    576576    if (haliassym) 
    577577    { 
    578         haliassym->toCBuffer(buf, hgs); 
     578        buf->writestring(haliassym->toChars()); 
    579579        buf->writeByte(' '); 
    580580        buf->writestring(ident->toChars()); 
     
    588588    if (aliassym) 
    589589    { 
    590         aliassym->toCBuffer(buf, hgs); 
     590        buf->writestring(aliassym->toChars()); 
    591591        buf->writeByte(' '); 
    592592        buf->writestring(ident->toChars()); 
  • gen/toir.cpp

    r1395 r1401  
    17751775        !((TypeClass*)condty)->sym->isInterfaceDeclaration()) 
    17761776    { 
    1777         Logger::print("calling class invariant"); 
     1777        Logger::println("calling class invariant"); 
    17781778        llvm::Function* fn = LLVM_D_GetRuntimeFunction(gIR->module, "_d_invariant"); 
    17791779        LLValue* arg = DtoBitCast(cond->getRVal(), fn->getFunctionType()->getParamType(0)); 
Copyright © 2008, LDC Development Team.