# HG changeset patch # User korDen # Date 1286661335 -14400 # Node ID d237b38b585805bc37a5af5c9d575373ee79eb0b # Parent 5a9a88e919f9af10bbd9ba527373e835f0cbc28f Small changes diff -r 5a9a88e919f9 -r d237b38b5858 dmd/ArrayLengthExp.d --- a/dmd/ArrayLengthExp.d Fri Oct 08 20:23:30 2010 +0400 +++ b/dmd/ArrayLengthExp.d Sun Oct 10 01:55:35 2010 +0400 @@ -28,6 +28,7 @@ import dmd.AddrExp; import dmd.expression.ArrayLength; +import dmd.expression.Util; import dmd.backend.Util; import dmd.backend.OPER; diff -r 5a9a88e919f9 -r d237b38b5858 dmd/Global.d --- a/dmd/Global.d Fri Oct 08 20:23:30 2010 +0400 +++ b/dmd/Global.d Sun Oct 10 01:55:35 2010 +0400 @@ -22,7 +22,7 @@ { string mars_ext = "d"; string sym_ext = "d"; - + version (TARGET_WINDOS) { string obj_ext = "obj"; } else version (POSIX) { // TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS @@ -49,7 +49,7 @@ ///version (TARGET_NET) { /// "\nMSIL back-end (alpha release) by Cristian L. Vlasceanu and associates."; ///} - + string[] path; // Array of char*'s which form the import lookup path string[] filePath; // Array of char*'s which form the file import lookup path int structalign = 8; @@ -58,28 +58,28 @@ Param params; uint errors; // number of errors reported so far uint gag; // !=0 means gag reporting of errors - + ClassDeclaration object; ClassDeclaration classinfo; - + // Used in FuncDeclaration.genCfunc() DsymbolTable st; - + // Used in Lexer.uniqueId() int num; - + // Used in Identifier.generateId() size_t i; - + // Used in Lexer StringTable stringtable; OutBuffer stringbuffer; Token* freelist; - + char date[11+1]; char time[8+1]; char timestamp[24+1]; - + // Used in Module Module rootModule; DsymbolTable modules; // symbol table of all modules @@ -89,35 +89,37 @@ int nested; Classsym* scc; ClassDeclaration moduleinfo; - + // Used in PowExp bool importMathChecked = false; - + // Used in Scope Scope scope_freelist; - + // Used in TemplateMixin int nest; - + this() { params.versionids = new Array(); + params.imppath = new Array(); + st = new DsymbolTable(); stringtable = new StringTable(); stringbuffer = new OutBuffer(); - + modules = new DsymbolTable(); amodules = new Array(); deferred = new Array(); - + init_time(); } - + void initClasssym() { scc = fake_classsym(Id.ClassInfo); } - + void init_time() { time_t tm; @@ -132,4 +134,4 @@ } } -Global global; +__gshared Global global; diff -r 5a9a88e919f9 -r d237b38b5858 dmd/expression/ArrayLength.d --- a/dmd/expression/ArrayLength.d Fri Oct 08 20:23:30 2010 +0400 +++ b/dmd/expression/ArrayLength.d Sun Oct 10 01:55:35 2010 +0400 @@ -48,26 +48,4 @@ e = EXP_CANT_INTERPRET; return e; -} - -Expression opAssignToOp(Loc loc, TOK op, Expression e1, Expression e2) -{ - Expression e; - - switch (op) - { - case TOK.TOKaddass: e = new AddExp(loc, e1, e2); break; - case TOK.TOKminass: e = new MinExp(loc, e1, e2); break; - case TOK.TOKmulass: e = new MulExp(loc, e1, e2); break; - case TOK.TOKdivass: e = new DivExp(loc, e1, e2); break; - case TOK.TOKmodass: e = new ModExp(loc, e1, e2); break; - case TOK.TOKandass: e = new AndExp(loc, e1, e2); break; - case TOK.TOKorass: e = new OrExp (loc, e1, e2); break; - case TOK.TOKxorass: e = new XorExp(loc, e1, e2); break; - case TOK.TOKshlass: e = new ShlExp(loc, e1, e2); break; - case TOK.TOKshrass: e = new ShrExp(loc, e1, e2); break; - case TOK.TOKushrass: e = new UshrExp(loc, e1, e2); break; - default: assert(0); - } - return e; } \ No newline at end of file diff -r 5a9a88e919f9 -r d237b38b5858 dmd/expression/Util.d --- a/dmd/expression/Util.d Fri Oct 08 20:23:30 2010 +0400 +++ b/dmd/expression/Util.d Sun Oct 10 01:55:35 2010 +0400 @@ -12,6 +12,17 @@ import dmd.SymOffExp; import dmd.ExpInitializer; import dmd.Lexer; +import dmd.AddExp; +import dmd.MinExp; +import dmd.MulExp; +import dmd.DivExp; +import dmd.ModExp; +import dmd.AndExp; +import dmd.OrExp; +import dmd.ShlExp; +import dmd.ShrExp; +import dmd.UshrExp; +import dmd.XorExp; import dmd.TypeSArray; import dmd.TypeArray; import dmd.VarDeclaration; @@ -1845,4 +1856,26 @@ if (t.isimaginary()) buf.writeByte('i'); } +} + +Expression opAssignToOp(Loc loc, TOK op, Expression e1, Expression e2) +{ + Expression e; + + switch (op) + { + case TOK.TOKaddass: e = new AddExp(loc, e1, e2); break; + case TOK.TOKminass: e = new MinExp(loc, e1, e2); break; + case TOK.TOKmulass: e = new MulExp(loc, e1, e2); break; + case TOK.TOKdivass: e = new DivExp(loc, e1, e2); break; + case TOK.TOKmodass: e = new ModExp(loc, e1, e2); break; + case TOK.TOKandass: e = new AndExp(loc, e1, e2); break; + case TOK.TOKorass: e = new OrExp (loc, e1, e2); break; + case TOK.TOKxorass: e = new XorExp(loc, e1, e2); break; + case TOK.TOKshlass: e = new ShlExp(loc, e1, e2); break; + case TOK.TOKshrass: e = new ShrExp(loc, e1, e2); break; + case TOK.TOKushrass: e = new UshrExp(loc, e1, e2); break; + default: assert(0); + } + return e; } \ No newline at end of file