ChangeLog 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465
  1. 2008-03-19 Jb Evain <[email protected]>
  2. * LambdaExpression.cs: use the new standardified IsAssignableTo,
  3. fixes ExpressionTest_NewArrayBounds.TestArrayAssignability.
  4. 2008-03-19 Jb Evain <[email protected]>
  5. * Extensions.cs (Type.IsAssignableTo): deal with arrays.
  6. 2008-03-13 Jb Evain <[email protected]>
  7. * NewArrayExpression.cs (EmitNewArrayBounds): implement.
  8. 2008-03-12 Jb Evain <[email protected]>
  9. * NewArrayExpression.cs (Emit): naive implementation of emit support
  10. for array initialization.
  11. 2008-03-11 Jb Evain <[email protected]>
  12. * BinaryExpression.cs: very naive implementation of emitting
  13. array accesses.
  14. 2008-03-11 Jb Evain <[email protected]>
  15. * *.cs: Move the different Emit* helpers to EmitContext,
  16. so that they get used more naturally by the non Expression
  17. types.
  18. 2008-03-10 Jb Evain <[email protected]>
  19. * TypeBinaryExpression.cs, Expression.cs: refactor an EmitIsInst.
  20. * UnaryExpression.cs: implement TypeAs using the EmitIsInst.
  21. 2008-03-10 Jb Evain <[email protected]>
  22. * TypeBinaryExpression.cs (Emit): implement.
  23. 2008-03-08 Jb Evain <[email protected]>
  24. * MemberListBinding.cs (Emit): implement.
  25. * MemberBinding.cs (EmitLoadMember): add helper.
  26. 2008-03-08 Jb Evain <[email protected]>
  27. * MemberAssignment.cs (Emit): implement.
  28. 2008-03-08 Jb Evain <[email protected]>
  29. * ElementInit.cs (Emit): implement.
  30. 2008-03-06 Jb Evain <[email protected]>
  31. * EmitContext.cs: the DebugContext delegate the CreateDelegate
  32. to a DynamicContext to avoid visibility issues in debug mode.
  33. 2008-03-06 Jb Evain <[email protected]>
  34. * EmitContext.cs: Lambda methods bypass JIT visibility checks.
  35. 2008-03-06 Jb Evain <[email protected]>
  36. * MethodCallExpression.cs, Expression.cs: refactor method calling
  37. into a more sophisticated EmitCall in Expression.
  38. * InvocationExpression.cs (Emit): implement using the previous EmitCall.
  39. 2008-03-06 Jb Evain <[email protected]>
  40. * Expression.cs: add a EmitCall helper.
  41. * MemberExpression.cs: implement property access.
  42. 2008-03-06 Jb Evain <[email protected]>
  43. * MethodCallExpression.cs, Expression.cs: refactor a EmitLoad in Expression.
  44. * MemberExpression.cs: use EmitLoad to load the instance field if needed.
  45. 2008-03-06 Jb Evain <[email protected]>
  46. * BinaryExpression.cs, Expression.cs: move EmitStored from
  47. BinaryExpression to Expression.
  48. * MethodCallExpression.cs: allow method calls on structs.
  49. 2008-03-05 Jb Evain <[email protected]>
  50. * Expression.cs: Fix the Call method which takes an array
  51. of type arguments.
  52. 2008-03-05 Jb Evain <[email protected]>
  53. * Expression.cs: fix for a good chunk of lifted/liftToNull tests.
  54. 2008-02-26 Jb Evain <[email protected]>
  55. * Expression.cs (Call): Guess the parameters type from the argument
  56. types if needed.
  57. 2008-02-25 Jb Evain <[email protected]>
  58. * NewExpression.cs (Emit): deal with value types construction.
  59. 2008-02-25 Jb Evain <[email protected]>
  60. * Expression.cs, NewExpression.cs: deal with the fact that value types
  61. don't have a parameterless constructor.
  62. 2008-02-24 Jb Evain <[email protected]>
  63. * LambdaExpression.cs, EmitContext.cs: make compilation
  64. of delegate returning void work.
  65. 2008-02-24 Jb Evain <[email protected]>
  66. * MethodCallExpression.cs: emit call or callvirt depending
  67. on the virtuality of the method.
  68. 2008-02-24 Jb Evain <[email protected]>
  69. * LambdaExpression.cs: properly format error message.
  70. 2008-02-21 Jb Evain <[email protected]>
  71. * BinaryExpression.cs (EmitCoalesce): fix setup_null.
  72. 2008-02-21 Jb Evain <[email protected]>
  73. * BinaryExpression.cs (Emit): fix the both_are_null case.
  74. 2008-02-20 Jb Evain <[email protected]>
  75. * Expression.cs, ExpressionPrinter.cs: implement MemberBind.
  76. 2008-02-20 Jb Evain <[email protected]>
  77. * Expression.cs, ExpressionPrinter.cs: implement ListInit.
  78. 2008-02-19 Jb Evain <[email protected]>
  79. * Expression.cs, ExpressionPrinter.cs: implement MemberInit.
  80. 2008-02-19 Jb Evain <[email protected]>
  81. * Expression.cs, ExpressionPrinter.cs: implement last New
  82. overload for anonymous types.
  83. 2008-02-08 Jb Evain <[email protected]>
  84. * Expression.cs, InvocationExpression.cs, ExpressionPrinter.cs
  85. add support for Invoke.
  86. 2008-02-04 Jb Evain <[email protected]>
  87. * ExpressionPrinter.cs: fix printing of MemberListBinding.
  88. 2008-02-04 Jb Evain <[email protected]>
  89. * Expression.cs, NewExpression.cs: make New(Type) test pass.
  90. 2008-02-04 Jb Evain <[email protected]>
  91. * ExpressionPrinter.cs: fix and clean printing of ElementInit.
  92. 2008-02-02 Jb Evain <[email protected]>
  93. * Expression.cs: fix ListBind(MemberInfo,IEnumerable<ElementInit>).
  94. 2008-02-02 Jb Evain <[email protected]>
  95. * Expression.cs: fix ListBind(MethodInfo,IEnumerable<ElementInit>).
  96. 2008-02-01 Olivier Dufour <[email protected]>
  97. * Expression.cs, ExpressionPrinter.cs:Add ListBind
  98. 2008-02-01 Olivier Dufour <[email protected]>
  99. * Expression.cs, ExpressionPrinter.cs:Add Elementinit
  100. 2008-01-31 Jb Evain <[email protected]>
  101. * UnaryExpression.cs: emit array length.
  102. 2008-01-31 Jb Evain <[email protected]>
  103. * MemberExpression.cs: Simple support for emitting fields.
  104. 2008-01-30 Jb Evain <[email protected]>
  105. * MethodCallExpression.cs: very naive implementation of Emit.
  106. 2008-01-30 Jb Evain <[email protected]>
  107. * NewExpression.cs: add Emit support for reference types.
  108. 2008-01-30 Jb Evain <[email protected]>
  109. * LambdaExpression.cs, EmitContext.cs: small refactoring.
  110. Extract the different EmitContexts to their own file.
  111. 2008-01-29 Jb Evain <[email protected]>
  112. * MethodCallExpression.cs, Expression.cs: complete Calls.
  113. 2008-01-29 Jb Evain <[email protected]>
  114. * Expression.cs, NewExpression.cs, ExpressionPrinter.cs:
  115. implement the first flavors of New.
  116. 2008-01-27 Jb Evain <[email protected]>
  117. * ConditionalExpression.cs: implement Emit.
  118. 2008-01-27 Jb Evain <[email protected]>
  119. * Expression.cs: implement the last Lambda method.
  120. 2008-01-27 Jb Evain <[email protected]>
  121. * LambdaExpression.cs: fix the Type of the LambdaExpressions.
  122. 2008-01-27 Olivier Dufour <[email protected]>
  123. * Expression.cs, InvocationExpession.cs,
  124. ListInitExpression.cs, MemberInitExpression.cs
  125. NewExpression.cs : Add all missing
  126. constructor in Expressions and remove the base one
  127. 2008-01-25 Jb Evain <[email protected]>
  128. * Expression.cs, ExpressionPrinter.cs: implement Bind.
  129. 2008-01-25 Jb Evain <[email protected]>
  130. * MemberMemberBinding.cs, MemberListBinding.cs,
  131. MemberAssignment.cs, MemberBinding.cs:
  132. add constructors.
  133. 2008-01-25 Jb Evain <[email protected]>
  134. * Expression.cs: implement PropertyOrField.
  135. 2008-01-24 Jb Evain <[email protected]>
  136. * Expression.cs, MemberExpression.cs, ExpressionPrinter.cs:
  137. implement Field and Property.
  138. 2008-01-22 Miguel de Icaza <[email protected]>
  139. * BinaryExpression.cs: Unleash the power of cut and paste.
  140. Bring a bunch of operatros from mcs/expression.cs
  141. * Expression.cs: There is no op_LogicalAnd or op_LogicalOr, I just
  142. used those from mcs, that was wrong. use the proper ones, clean
  143. up the result.
  144. * BinaryExpression.cs: Add method invocations for binary methods.
  145. 2008-01-22 Jb Evain <[email protected]>
  146. * Expression.cs, ExpressionPrinter.cs: implement NewArrayList.
  147. 2008-01-22 Jb Evain <[email protected]>
  148. * Expression.cs, ExpressionPrinter.cs, NewArrayExpression.cs:
  149. implement Expression.NewArrayBounds.
  150. 2008-01-22 Jb Evain <[email protected]>
  151. * ExpressionPrinter.cs: fix Lambda and Equal.
  152. 2008-01-22 Miguel de Icaza <[email protected]>
  153. * BinaryExpression.cs (EmitCoalesce): Add support for emitting
  154. code for Coalesce.
  155. TODO: this does not use the "Conversion" Lambda, which am not sure
  156. who generates this or what it is used for.
  157. (EmitLogical): Fix a couple of bugs in AndAlso, OrElse.
  158. * Expression.cs: Add support for Coalesce.
  159. (BinaryCoreCheck): Move more checking here, instead of the helper
  160. routines, will remove them next.
  161. * LambdaExpression.cs (Compile): Create the delegate last, so we
  162. manage to save the assembly while debugging in case of error
  163. 2008-01-21 Miguel de Icaza <[email protected]>
  164. * Expression.cs (BinaryCoreCheck): Add checking for a few
  165. operators here (to avoid doing a second pass, handles AndAlso and
  166. OrElse).
  167. (AndAlso, OrElse): Add some code.
  168. * BinaryExpression.cs: Instead of using GetValueOrDefault use
  169. get_Value, as we already probed for the lack of value.
  170. Split out support for And/Or to a separate routine as the code is
  171. not very easy to share with the arithmetics code.
  172. 2008-01-21 Marek Safar <[email protected]>
  173. * BinaryExpression.cs: Fixed initobj initialization.
  174. 2008-01-21 Jb Evain <[email protected]>
  175. * Expression.cs, UnaryExpression.cs, BinaryExpression.cs:
  176. Move the IsUnsigned helper from BinaryExpression to Expression,
  177. so it can be used in UnaryExpression.
  178. 2008-01-21 Miguel de Icaza <[email protected]>
  179. * Start code generation for nullables, currently this generates
  180. incorrect code for things like:
  181. Expression<Func<int?, int?, int?>> e2 = (a, b) => a + b;
  182. e2.Compile ().Invoke (null, 3))
  183. This should return null, but returns something else.
  184. * Introduce LINQ_DBG env variable, which generates a linq file in
  185. /tmp; It currently does not work as well as it should, as the
  186. Func<> parameters do not mwatch the generated method.
  187. Investigate.
  188. 2008-01-20 Miguel de Icaza <[email protected]>
  189. Introduce support for Nullable arguments, no code is generated for
  190. these yet, its only tests + node creation behavior at this point.
  191. * Expression.cs (BinaryCoreCheck): Do not allow "int?" and "int"
  192. as operators, they must both be nullable.
  193. NullableTypes in the arguments are transformed into the underlying
  194. values when doing the method validation.
  195. 2008-01-18 Miguel de Icaza <[email protected]>
  196. * ParameterExpression.cs: Add emit support.
  197. 2008-01-18 Jb Evain <[email protected]>
  198. * Expression[Printer|Visitor].cs: implement UnaryPlus, Not, Negate.
  199. 2008-01-18 Miguel de Icaza <[email protected]>
  200. * BinaryExpression.cs: Add support for emitting code for some
  201. operators (ported from the Mono C# compiler).
  202. Add tests.
  203. 2008-01-17 Miguel de Icaza <[email protected]>
  204. Beginning of code generation framework for Linq.Expressions.
  205. Some code was borrowed by from the C# compiler
  206. * Expression_T.cs: Fill in the blanks.
  207. * LambdaExpression.cs: Validation of parameters mostly, a tiny bit
  208. of codegen.
  209. * ConstantExpression.cs: Mostly done, need to write tests for
  210. non-fundamental types and other ValueType initializations.
  211. 2008-01-17 Jb Evain <[email protected]>
  212. * Expression.cs: implement MakeMemberAccess.
  213. 2008-01-17 Jb Evain <[email protected]>
  214. * Expression.cs, ExpressionPrinter.cs, BinaryExpression.cs:
  215. implement ArrayIndex.
  216. 2008-01-17 Jb Evain <[email protected]>
  217. * Expression.cs: Use TypeCode for IsInt and IsNumber.
  218. 2008-01-16 Miguel de Icaza <[email protected]>
  219. * Expression.cs: Add support for user-defined operators.
  220. Put back various binary operator tests.
  221. 2008-01-16 Jb Evain <[email protected]>
  222. * Expression.cs, ExpressionPrinter.cs: fix call for static methods.
  223. 2008-01-15 Miguel de Icaza <[email protected]>
  224. * Expression.cs: Do validation on the method parameters and use
  225. the return type if provided.
  226. 2008-01-15 Jb Evain <[email protected]>
  227. * MethodCallExpression.cs, Expression.cs
  228. ExpressionPrinter.cs: Implement Call (Expression, ...)
  229. 2008-01-15 Jb Evain <[email protected]>
  230. * Expression.cs, ConditionalExpressionExpression.cs
  231. ExpressionPrinter.cs : implement Expression.Condition.
  232. 2008-01-15 Jb Evain <[email protected]>
  233. * Expression.cs,
  234. ParameterExpression.cs,
  235. ExpressionPrinter.cs: implement Expression.Parameter
  236. 2008-01-15 Jb Evain <[email protected]>
  237. * ExpressionPrinter.cs (VisitBinaryExpression): simple
  238. implementation (probably misses a few cases).
  239. 2008-01-14 Miguel de Icaza <[email protected]>
  240. * Expression.cs: Bring back the (most) of binary operators. Added
  241. type checking as well and reorganized the source file by topic
  242. instead of alphabetical sorting.
  243. 2008-01-14 Jb Evain <[email protected]>
  244. * ExpressionPrinter.cs: print ArrayLength.
  245. 2008-01-14 Jb Evain <[email protected]>
  246. * Expression.cs: TypeAs can't take value types.
  247. * ExpressionPrinter.cs: implement TypeAs.
  248. 2008-01-14 Jb Evain <[email protected]>
  249. * Expression.cs: implement TypeIs.
  250. * ExpressionPrinter.cs: implement VisitTypeBinaryExpression.
  251. * TypeBinaryExpression.cs: add proper ctor.
  252. 2008-01-14 Jb Evain <[email protected]>
  253. * Expression.cs, ExpressionPrinter.cs: fix for Quote's type.
  254. 2008-01-14 Jb Evain <[email protected]>
  255. * BinaryExpression.cs,
  256. * Expression.cs: revert part of Miguel's last patch.
  257. MakeBinary is expected to call the appropriate factory
  258. methods. Whose methods that are responsible for creating
  259. the good BinaryExpression, wether they use a custom method
  260. or not.
  261. 2008-01-14 Jb Evain <[email protected]>
  262. * Expression.cs: MakeUnary is expected to call the appropriate
  263. factory methods.
  264. 2008-01-14 Miguel de Icaza <[email protected]>
  265. * Expression.cs (Constant, MakeBinary and consumers of it): Some
  266. more fill-up changes.
  267. MakeBinary will need much more work to support user-provided
  268. types.
  269. 2008-01-13 Jb Evain <[email protected]>
  270. * *.cs: fresh implementation.