view dmd2/irstate.h @ 1625:79f64d5fee9e

Merge DMD r319: bugzilla 400 forward reference error... bugzilla 400 forward reference error; no propety X for type Y (struct within struct). --- dmd/class.c | 19 +++++++++++++++++-- dmd/struct.c | 16 ++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-)
author Leandro Lucarella <llucax@gmail.com>
date Wed, 06 Jan 2010 15:18:22 -0300
parents 638d16625da2
children
line wrap: on
line source


// Compiler implementation of the D programming language
// Copyright (c) 1999-2008 by Digital Mars
// All Rights Reserved
// written by Walter Bright
// http://www.digitalmars.com

#ifndef DMD_CONTEXT_H
#define DMD_CONTEXT_H

#ifdef __DMC__
#pragma once
#endif /* __DMC__ */

struct Module;
struct Statement;
struct block;
struct Dsymbol;
struct Identifier;
struct Symbol;
struct FuncDeclaration;
struct Blockx;
struct Array;
struct elem;

struct IRState
{
    IRState *prev;
    Statement *statement;
    Module *m;			// module
    Dsymbol *symbol;
    Identifier *ident;
    Symbol *shidden;		// hidden parameter to function
    Symbol *sthis;		// 'this' parameter to function (member and nested)
    Symbol *sclosure;		// pointer to closure instance
    Blockx *blx;
    Array *deferToObj;		// array of Dsymbol's to run toObjFile(int multiobj) on later
    elem *ehidden;		// transmit hidden pointer to CallExp::toElem()
    Symbol *startaddress;

    block *breakBlock;
    block *contBlock;
    block *switchBlock;
    block *defaultBlock;

    IRState(IRState *irs, Statement *s);
    IRState(IRState *irs, Dsymbol *s);
    IRState(Module *m, Dsymbol *s);

    block *getBreakBlock(Identifier *ident);
    block *getContBlock(Identifier *ident);
    block *getSwitchBlock();
    block *getDefaultBlock();
    FuncDeclaration *getFunc();
};

#endif /* DMD_CONTEXT_H */