comparison dmd/expression.h @ 1358:78038e540342

Fix overload resolution issue in dmd bug 313/314 fix.
author Christian Kamm <kamm incasoftware de>
date Sat, 16 May 2009 12:17:33 +0200
parents e961851fb8be
children 8026319762be
comparison
equal deleted inserted replaced
1357:48747003a5de 1358:78038e540342
71 void initPrecedence(); 71 void initPrecedence();
72 72
73 Expression *resolveProperties(Scope *sc, Expression *e); 73 Expression *resolveProperties(Scope *sc, Expression *e);
74 void accessCheck(Loc loc, Scope *sc, Expression *e, Declaration *d); 74 void accessCheck(Loc loc, Scope *sc, Expression *e, Declaration *d);
75 Dsymbol *search_function(AggregateDeclaration *ad, Identifier *funcid); 75 Dsymbol *search_function(AggregateDeclaration *ad, Identifier *funcid);
76 void inferApplyArgTypes(enum TOK op, Arguments *arguments, Expression *aggr); 76 void inferApplyArgTypes(enum TOK op, Arguments *arguments, Expression *aggr, Module* from);
77 void argExpTypesToCBuffer(OutBuffer *buf, Expressions *arguments, HdrGenState *hgs); 77 void argExpTypesToCBuffer(OutBuffer *buf, Expressions *arguments, HdrGenState *hgs);
78 void argsToCBuffer(OutBuffer *buf, Expressions *arguments, HdrGenState *hgs); 78 void argsToCBuffer(OutBuffer *buf, Expressions *arguments, HdrGenState *hgs);
79 void expandTuples(Expressions *exps); 79 void expandTuples(Expressions *exps);
80 FuncDeclaration *hasThis(Scope *sc); 80 FuncDeclaration *hasThis(Scope *sc);
81 Expression *fromConstInitializer(int result, Expression *e); 81 Expression *fromConstInitializer(int result, Expression *e);
632 632
633 struct SymOffExp : Expression 633 struct SymOffExp : Expression
634 { 634 {
635 Declaration *var; 635 Declaration *var;
636 unsigned offset; 636 unsigned offset;
637 Module* m; // starting point for overload resolution
637 638
638 SymOffExp(Loc loc, Declaration *var, unsigned offset); 639 SymOffExp(Loc loc, Declaration *var, unsigned offset);
639 Expression *semantic(Scope *sc); 640 Expression *semantic(Scope *sc);
640 void checkEscape(); 641 void checkEscape();
641 void toCBuffer(OutBuffer *buf, HdrGenState *hgs); 642 void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
967 }; 968 };
968 969
969 struct DelegateExp : UnaExp 970 struct DelegateExp : UnaExp
970 { 971 {
971 FuncDeclaration *func; 972 FuncDeclaration *func;
973 Module* m; // starting point for overload resolution
972 974
973 DelegateExp(Loc loc, Expression *e, FuncDeclaration *func); 975 DelegateExp(Loc loc, Expression *e, FuncDeclaration *func);
974 Expression *semantic(Scope *sc); 976 Expression *semantic(Scope *sc);
975 MATCH implicitConvTo(Type *t); 977 MATCH implicitConvTo(Type *t);
976 Expression *castTo(Scope *sc, Type *t); 978 Expression *castTo(Scope *sc, Type *t);
1034 #endif 1036 #endif
1035 }; 1037 };
1036 1038
1037 struct AddrExp : UnaExp 1039 struct AddrExp : UnaExp
1038 { 1040 {
1041 Module* m; // starting point for overload resolution
1042
1039 AddrExp(Loc loc, Expression *e); 1043 AddrExp(Loc loc, Expression *e);
1040 Expression *semantic(Scope *sc); 1044 Expression *semantic(Scope *sc);
1041 #if IN_DMD 1045 #if IN_DMD
1042 elem *toElem(IRState *irs); 1046 elem *toElem(IRState *irs);
1043 #endif 1047 #endif