view tests/mini/with3.d @ 1605:1d5721f9ae18

[WIP] Merge DMD r251: bugzilla 111 (appending a dchar to a char[]) This patch needs some work in the code generation, because of the runtime changes (functions "_d_arrayappendcd" and "_d_arrayappendwd" are added). This doesn't affect existing code though, it just makes with patch a little useless, because something like this: char [] s; s ~= '\u6211'; That failed to compile with a nice error message previously to this change, now fails with and ugly error message (a failed assertion). Apparently there is a regression introduced by this patch too, when compiling Dil I get this assertion message: ldc: /home/luca/tesis/ldc/gen/statements.cpp:132: virtual void ReturnStatement::toIR(IRState*): Assertion `p->topfunc()->getReturnType() == llvm::Type::getVoidTy(gIR->context())' failed. 0 ldc 0x08a91628 Thank god we have bisecting capabilities in VCSs now ;) --- dmd/expression.c | 47 +++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 41 insertions(+), 6 deletions(-)
author Leandro Lucarella <llucax@gmail.com>
date Wed, 06 Jan 2010 15:18:19 -0300
parents 0cc0c6b53372
children
line wrap: on
line source

enum fields 
{ 
    FIELD1, 
    FIELD2 
} 
 
fields find_field(fields f) { 
    with(fields) { 
        switch(f) { 
        case FIELD1:  
	  return FIELD1;
        default: 
	  return FIELD2;
        } 
    } 
} 
 
void main() { 
  assert(find_field(fields.FIELD1) == fields.FIELD1);
  assert(find_field(fields.FIELD2) == fields.FIELD2);
}