mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-04-01 17:49:03 +02:00
First merge of 2.064 beta.
This corresponds to DMD commit a913ce4bc59a94a022a27e390fc841f4aededffb. Doesn't build Phobos yet.
This commit is contained in:
committed by
Kai Nacke
parent
c400d180d2
commit
cb341586e3
43
dmd2/init.h
43
dmd2/init.h
@@ -16,17 +16,17 @@
|
||||
#include "mars.h"
|
||||
#include "arraytypes.h"
|
||||
|
||||
struct Identifier;
|
||||
struct Expression;
|
||||
class Identifier;
|
||||
class Expression;
|
||||
struct Scope;
|
||||
struct Type;
|
||||
class Type;
|
||||
struct dt_t;
|
||||
struct AggregateDeclaration;
|
||||
struct ErrorInitializer;
|
||||
struct VoidInitializer;
|
||||
struct StructInitializer;
|
||||
struct ArrayInitializer;
|
||||
struct ExpInitializer;
|
||||
class AggregateDeclaration;
|
||||
class ErrorInitializer;
|
||||
class VoidInitializer;
|
||||
class StructInitializer;
|
||||
class ArrayInitializer;
|
||||
class ExpInitializer;
|
||||
struct HdrGenState;
|
||||
|
||||
#if IN_LLVM
|
||||
@@ -37,8 +37,9 @@ namespace llvm {
|
||||
|
||||
enum NeedInterpret { INITnointerpret, INITinterpret };
|
||||
|
||||
struct Initializer : Object
|
||||
class Initializer : public RootObject
|
||||
{
|
||||
public:
|
||||
Loc loc;
|
||||
|
||||
Initializer(Loc loc);
|
||||
@@ -63,8 +64,9 @@ struct Initializer : Object
|
||||
virtual ExpInitializer *isExpInitializer() { return NULL; }
|
||||
};
|
||||
|
||||
struct VoidInitializer : Initializer
|
||||
class VoidInitializer : public Initializer
|
||||
{
|
||||
public:
|
||||
Type *type; // type that this will initialize to
|
||||
|
||||
VoidInitializer(Loc loc);
|
||||
@@ -80,8 +82,9 @@ struct VoidInitializer : Initializer
|
||||
virtual VoidInitializer *isVoidInitializer() { return this; }
|
||||
};
|
||||
|
||||
struct ErrorInitializer : Initializer
|
||||
class ErrorInitializer : public Initializer
|
||||
{
|
||||
public:
|
||||
ErrorInitializer();
|
||||
Initializer *syntaxCopy();
|
||||
Initializer *semantic(Scope *sc, Type *t, NeedInterpret needInterpret);
|
||||
@@ -91,19 +94,18 @@ struct ErrorInitializer : Initializer
|
||||
virtual ErrorInitializer *isErrorInitializer() { return this; }
|
||||
};
|
||||
|
||||
struct StructInitializer : Initializer
|
||||
class StructInitializer : public Initializer
|
||||
{
|
||||
public:
|
||||
Identifiers field; // of Identifier *'s
|
||||
Initializers value; // parallel array of Initializer *'s
|
||||
|
||||
VarDeclarations vars; // parallel array of VarDeclaration *'s
|
||||
AggregateDeclaration *ad; // which aggregate this is for
|
||||
|
||||
StructInitializer(Loc loc);
|
||||
Initializer *syntaxCopy();
|
||||
void addInit(Identifier *field, Initializer *value);
|
||||
Initializer *semantic(Scope *sc, Type *t, NeedInterpret needInterpret);
|
||||
Expression *toExpression(Type *t = NULL);
|
||||
Expression *fill(Scope *sc, Type *t, NeedInterpret needInterpret);
|
||||
void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
|
||||
|
||||
#if IN_DMD
|
||||
@@ -111,13 +113,11 @@ struct StructInitializer : Initializer
|
||||
#endif
|
||||
|
||||
StructInitializer *isStructInitializer() { return this; }
|
||||
#if IN_LLVM
|
||||
llvm::StructType *ltype;
|
||||
#endif
|
||||
};
|
||||
|
||||
struct ArrayInitializer : Initializer
|
||||
class ArrayInitializer : public Initializer
|
||||
{
|
||||
public:
|
||||
Expressions index; // indices
|
||||
Initializers value; // of Initializer *'s
|
||||
size_t dim; // length of array being initialized
|
||||
@@ -141,8 +141,9 @@ struct ArrayInitializer : Initializer
|
||||
ArrayInitializer *isArrayInitializer() { return this; }
|
||||
};
|
||||
|
||||
struct ExpInitializer : Initializer
|
||||
class ExpInitializer : public Initializer
|
||||
{
|
||||
public:
|
||||
Expression *exp;
|
||||
int expandTuples;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user