First merge of 2.064 beta.

This corresponds to DMD commit a913ce4bc59a94a022a27e390fc841f4aededffb.

Doesn't build Phobos yet.
This commit is contained in:
David Nadlinger
2013-10-19 23:21:53 +02:00
committed by Kai Nacke
parent c400d180d2
commit cb341586e3
130 changed files with 13566 additions and 9190 deletions

View File

@@ -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;