Mercurial > projects > ldc
diff dmd/template.h @ 875:330f999ade44
Merged DMD 1.038
author | Tomas Lindquist Olsen <tomas.l.olsen@gmail.com> |
---|---|
date | Tue, 06 Jan 2009 16:33:51 +0100 |
parents | eef8ac26c66c |
children | 39519a1ff603 |
line wrap: on
line diff
--- a/dmd/template.h Tue Jan 06 15:54:48 2009 +0100 +++ b/dmd/template.h Tue Jan 06 16:33:51 2009 +0100 @@ -1,6 +1,6 @@ // Compiler implementation of the D programming language -// Copyright (c) 1999-2006 by Digital Mars +// Copyright (c) 1999-2008 by Digital Mars // All Rights Reserved // written by Walter Bright // http://www.digitalmars.com @@ -54,7 +54,9 @@ TemplateParameters *parameters; // array of TemplateParameter's TemplateParameters *origParameters; // originals for Ddoc - +#if DMDV2 + Expression *constraint; +#endif Array instances; // array of TemplateInstance's TemplateDeclaration *overnext; // next overloaded TemplateDeclaration @@ -63,7 +65,11 @@ Scope *scope; Dsymbol *onemember; // if !=NULL then one member of this template - TemplateDeclaration(Loc loc, Identifier *id, TemplateParameters *parameters, Array *decldefs); + TemplateDeclaration(Loc loc, Identifier *id, TemplateParameters *parameters, +#if DMDV2 + Expression *constraint, +#endif + Array *decldefs); Dsymbol *syntaxCopy(Dsymbol *); void semantic(Scope *sc); int overloadInsert(Dsymbol *s); @@ -77,8 +83,8 @@ MATCH matchWithInstance(TemplateInstance *ti, Objects *atypes, int flag); int leastAsSpecialized(TemplateDeclaration *td2); - MATCH deduceFunctionTemplateMatch(Objects *targsi, Expressions *fargs, Objects *dedargs); - FuncDeclaration *deduceFunctionTemplate(Scope *sc, Loc loc, Objects *targsi, Expressions *fargs); + MATCH deduceFunctionTemplateMatch(Loc loc, Objects *targsi, Expression *ethis, Expressions *fargs, Objects *dedargs); + FuncDeclaration *deduceFunctionTemplate(Scope *sc, Loc loc, Objects *targsi, Expression *ethis, Expressions *fargs, int flags = 0); void declareParameter(Scope *sc, TemplateParameter *tp, Object *o); TemplateDeclaration *isTemplateDeclaration() { return this; } @@ -112,6 +118,9 @@ virtual TemplateTypeParameter *isTemplateTypeParameter(); virtual TemplateValueParameter *isTemplateValueParameter(); virtual TemplateAliasParameter *isTemplateAliasParameter(); +#if DMDV2 + virtual TemplateThisParameter *isTemplateThisParameter(); +#endif virtual TemplateTupleParameter *isTemplateTupleParameter(); virtual TemplateParameter *syntaxCopy() = 0; @@ -120,7 +129,7 @@ virtual void print(Object *oarg, Object *oded) = 0; virtual void toCBuffer(OutBuffer *buf, HdrGenState *hgs) = 0; virtual Object *specialization() = 0; - virtual Object *defaultArg(Scope *sc) = 0; + virtual Object *defaultArg(Loc loc, Scope *sc) = 0; /* If TemplateParameter's match as far as overloading goes. */ @@ -152,7 +161,7 @@ void print(Object *oarg, Object *oded); void toCBuffer(OutBuffer *buf, HdrGenState *hgs); Object *specialization(); - Object *defaultArg(Scope *sc); + Object *defaultArg(Loc loc, Scope *sc); int overloadMatch(TemplateParameter *); MATCH matchArg(Scope *sc, Objects *tiargs, int i, TemplateParameters *parameters, Objects *dedtypes, Declaration **psparam); void *dummyArg(); @@ -196,7 +205,7 @@ void print(Object *oarg, Object *oded); void toCBuffer(OutBuffer *buf, HdrGenState *hgs); Object *specialization(); - Object *defaultArg(Scope *sc); + Object *defaultArg(Loc loc, Scope *sc); int overloadMatch(TemplateParameter *); MATCH matchArg(Scope *sc, Objects *tiargs, int i, TemplateParameters *parameters, Objects *dedtypes, Declaration **psparam); void *dummyArg(); @@ -224,7 +233,7 @@ void print(Object *oarg, Object *oded); void toCBuffer(OutBuffer *buf, HdrGenState *hgs); Object *specialization(); - Object *defaultArg(Scope *sc); + Object *defaultArg(Loc loc, Scope *sc); int overloadMatch(TemplateParameter *); MATCH matchArg(Scope *sc, Objects *tiargs, int i, TemplateParameters *parameters, Objects *dedtypes, Declaration **psparam); void *dummyArg(); @@ -245,7 +254,7 @@ void print(Object *oarg, Object *oded); void toCBuffer(OutBuffer *buf, HdrGenState *hgs); Object *specialization(); - Object *defaultArg(Scope *sc); + Object *defaultArg(Loc loc, Scope *sc); int overloadMatch(TemplateParameter *); MATCH matchArg(Scope *sc, Objects *tiargs, int i, TemplateParameters *parameters, Objects *dedtypes, Declaration **psparam); void *dummyArg();