ChangeLog 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831
  1. 2010-07-26 Jb Evain <[email protected]>
  2. * EmitContext.cs: Properly call methods on enumerations.
  3. Fixes #625367.
  4. 2010-05-19 Jb Evain <[email protected]>
  5. * ConstantExpression.cs: fix emission of nullable constants.
  6. 2010-01-08 Jb Evain <[email protected]>
  7. * Expression.cs (Call): properly deal with zero length array
  8. of type arguments for non generic methods. Fixes #568989.
  9. 2009-12-02 Gonzalo Paniagua Javier <[email protected]>
  10. * Expression.cs: expression can be null for static getters. Patch from
  11. Miguel de Icaza ([email protected]).
  12. 2009-11-15 Jb Evain <[email protected]>
  13. * Expression (Call): deal with lambda expression <> delegate
  14. comparison when filtering methods.
  15. Fixes #536637.
  16. 2009-11-15 Jb Evain <[email protected]>
  17. * Expression (Call): better filtering of generic methods.
  18. Fixes #537768.
  19. 2009-11-14 Jb Evain <[email protected]>
  20. * UnaryExpression.cs: isolate quoted expressions.
  21. * EmitContext.cs (ParameterReplacer): new helper type
  22. to replace the parameters of isolated expressions.
  23. Fix #550722.
  24. 2009-11-14 Jb Evain <[email protected]>
  25. * ExpressionTransformer.cs: adjust return type of all
  26. tranformation methods to make the transformer actually
  27. useful.
  28. 2009-10-08 Jb Evain <[email protected]>
  29. * LambdaExpression.cs (Compile): use the interpreter on MonoTouch.
  30. 2009-09-03 Jb Evain <[email protected]>
  31. * ConstantExpression.cs (Emit): add support to emit DBNull values.
  32. 2009-09-03 Jb Evain <[email protected]>
  33. * ConstantExpression.cs (Emit): add support for emitting
  34. DateTime constants.
  35. 2009-03-05 Jb Evain <[email protected]>
  36. * EmitContext.cs
  37. * ParameterExpression.cs:
  38. add support for hoisted locals.
  39. 2009-02-24 Jb Evain <[email protected]>
  40. * Expression.cs (BinaryCoreCheck): fix comparison of enums
  41. 2009-02-23 Jb Evain <[email protected]>
  42. * Expression.cs (IsNumber): actually decimal is rather a special
  43. case, and not a primitive number.
  44. 2009-02-23 Jb Evain <[email protected]>
  45. * Expression.cs (BinaryCoreCheck): add decimal operations
  46. are provided by custom operators.
  47. 2008-12-17 Jb Evain <[email protected]>
  48. * ExpressionTransformer.cs: fix VisitList.
  49. 2008-11-19 Jb Evain <[email protected]>
  50. * Expression.cs: protect against open generic methods.
  51. 2008-10-08 Atsushi Enomoto <[email protected]>
  52. * Expression.cs : give us information about which type does not
  53. implement Emit().
  54. 2008-10-03 Jb Evain <[email protected]>
  55. * Expression.cs: make sure we properly test complex generic methods
  56. as a Call candidate.
  57. 2008-09-22 Jb Evain <[email protected]>
  58. * TypeBinaryExpression.cs: protect against testing void expressions.
  59. Fixes bug #428309.
  60. 2008-09-01 Jb Evain <[email protected]>
  61. * MemberBinding.cs: make .ctor protected instead of public.
  62. 2008-09-01 Jb Evain <[email protected]>
  63. * Expression.cs: guard against null parameters passed to Lambda.
  64. 2008-08-30 Marek Safar <[email protected]>
  65. * MemberBinding.cs: Made MemberBinding ctor public
  66. 2008-08-07 Jb Evain <[email protected]>
  67. * Expression.cs (GetAssociatedProperty): strengthen accessors
  68. comparisons.
  69. 2008-08-02 Zoltan Varga <[email protected]>
  70. * BinaryExpression.cs (EmitBinaryOperator): Mask out the upper bits of the
  71. shift amount like mcs compiled code does.
  72. 2008-07-19 Jb Evain <[email protected]>
  73. * Expression.cs (Call, Field, Property): disallow instance arguments
  74. on static members. See ms connect #339351.
  75. 2008-07-18 Jb Evain <[email protected]>
  76. * Expression.cs, BinaryExpression.cs: fix retrieval of true and false
  77. operators.
  78. 2008-06-20 Jb Evain <[email protected]>
  79. * LambdaExpression.cs, EmitContext.cs: refactor the emit context to
  80. handle the fact that lambdas are compiled in a general context where
  81. they share globals but are also able to use parameters from parent lambdas.
  82. (Although parameter sharing is not implemented yet).
  83. * BinaryExpression.cs (fix converted coalesce case to use the lambda
  84. compilation code).
  85. 2008-06-09 Jb Evain <[email protected]>
  86. * Extensions.cs (Type.IsExpression): add
  87. * Expression.cs (CheckMethodArguments): modify the argument list
  88. to quote arguments when if necessary.
  89. 2008-06-09 Jb Evain <[email protected]>
  90. * Expression.cs (CheckLambda): quote body if required.
  91. 2008-06-07 Jb Evain <[email protected]>
  92. * BinaryExpression.cs (EmitConvertedCoalesce): implement.
  93. 2008-06-05 Jb Evain <[email protected]>
  94. * Expression.cs (GetUserConversionMethod): check for convertion
  95. operators on both types.
  96. 2008-06-05 Jb Evain <[email protected]>
  97. * Expression.cs (ConditionalBinaryCheck): if a method is passed,
  98. checked that the operators true and false are also defined.
  99. 2008-06-05 Jb Evain <[email protected]>
  100. * BinaryExpression.cs (Emit): deal with binary expressions
  101. where only the left is lifted.
  102. 2008-06-05 Jb Evain <[email protected]>
  103. * Extensions.cs: Add Type.MakeNullableType helper.
  104. * Expression.cs (MakeSimpleBinary, MakeBoolBinar): Properly
  105. creat lifted/lifted to null/not lifted
  106. user defined binary expressions.
  107. * BinaryExpression.cs (Emit): implement compilation of
  108. lifted and lifted to null user defined binary operators.
  109. 2008-06-05 Jb Evain <[email protected]>
  110. * Expression.cs (MakeSimpleUnary): properly create lifted/not lifted
  111. unary expressions with user defined operators.
  112. * UnaryExpression.cs (Emit): fix compilation of lifted user operators.
  113. 2008-05-30 Jb Evain <[email protected]>
  114. * UnaryExpression.cs (Emit): fix convertion from nullable
  115. to nullable types.
  116. 2008-05-29 Jb Evain <[email protected]>
  117. * Expression.cs (Power): allow bool?.
  118. * BinaryExpression.cs: properly deal with lifted power expression.
  119. 2008-05-29 Jb Evain <[email protected]>
  120. * BinaryExpression.cs (Emit): fix lifted andalso and orelse.
  121. 2008-05-29 Jb Evain <[email protected]>
  122. * BinaryExpression.cs (Emit): properly emit lifted to null
  123. relational binary expressions.
  124. 2008-05-28 Jb Evain <[email protected]>
  125. * BinaryExpression.cs (Emit): rework compilation of
  126. arithmetic and relational lifted binary expressions.
  127. 2008-05-28 Jb Evain <[email protected]>
  128. * UnaryExpression.cs (Emit): implement support for compiling
  129. lifted unary expressions.
  130. 2008-05-27 Jb Evain <[email protected]>
  131. * UnaryExpression.cs (EmitConvert): implement nullable to nullable
  132. convert.
  133. 2008-05-20 Roei Erez <[email protected]>
  134. * Extensions.cs: Add 'IsGenericImplementationOf' extension method
  135. 2008-05-15 Jb Evain <[email protected]>
  136. * UnaryExpression.cs, EmitContext.cs: emit convert from and
  137. to nullable types.
  138. 2008-05-15 Jb Evain <[email protected]>
  139. * Extensions.cs: add a few useful extensions such as
  140. IsGenericInstanceOf and MakeGenericFrom.
  141. 2008-05-15 Roei Erez <[email protected]>
  142. * ExpressionTransformer.cs: Add a base class for transforming Expressions.
  143. In use at AsQueryable() implementation.
  144. 2008-05-14 Jb Evain <[email protected]>
  145. * EmitContext.cs: only generate a new lambda name if we're in
  146. a debug context.
  147. 2008-05-14 Jb Evain <[email protected]>
  148. * LambdaExpression.cs, EmitContext.cs: When encountering a lambda
  149. inside an ET, compile it as a read of a global. Based on a patch
  150. by Roei Erez <[email protected]>
  151. 2008-05-08 Jb Evain <[email protected]>
  152. * Expression.cs, EmitContext.cs: deal with call to methods
  153. with byref parameters.
  154. 2008-05-07 Roei Erez <[email protected]>
  155. * Add ifdef TARGET_JVM
  156. 2008-05-03 Jb Evain <[email protected]>
  157. * LambdaExpression.cs: move checks to Expression
  158. * Expression.cs: apply check for both typed and untyped lambda
  159. creation, so that the constructor does not throws exception.
  160. Needed to create instances of Expression<> for untyped lambda
  161. factory method. Fixes #386322.
  162. 2008-05-02 Jb Evain <[email protected]>
  163. * Expression.cs: make Emit virtual instead of abstract,
  164. to allow externals libraries to extend Expression.
  165. Patch by Jan Oravec <[email protected]>. Fixes #386097.
  166. 2008-04-29 Jb Evain <[email protected]>
  167. * UnaryExpression.cs (EmitPrimitiveConversion): implement.
  168. 2008-04-28 Jb Evain <[email protected]>
  169. * EmitContext.cs: deal with globals when encountering them while
  170. compiling, and not ahead of time with a dedicated visitor.
  171. 2008-04-27 Jb Evain <[email protected]>
  172. * ConstantExpression.cs (Emit): emit properly null nullable types.
  173. 2008-04-27 Jb Evain <[email protected]>
  174. * Expression.cs: improve method finder.
  175. 2008-04-24 Jb Evain <[email protected]>
  176. * UnaryExpression.cs, EmitContext.cs: implement compilation
  177. of Quote as a global load.
  178. 2008-04-23 Jb Evain <[email protected]>
  179. * UnaryExpression.cs: start implementing EmitConvert.
  180. 2008-04-23 Jb Evain <[email protected]>
  181. * ConstantExpression.cs (Emit): properly Emit null constants.
  182. 2008-04-23 Jb Evain <[email protected]>
  183. * Expression.cs (Constant): check for assignability, not for type
  184. equality, when a type is passed.
  185. 2008-04-23 Jb Evain <[email protected]>
  186. * ExpressionPrinter.cs: ToString convert properly.
  187. 2008-04-22 Jb Evain <[email protected]>
  188. * UnaryExpression.cs: implement IsLiftedToNull properly.
  189. * Expression.cs (Convert, ConvertChecked): implemented computing
  190. of IsLifted and IsLiftedToNull for conversions.
  191. 2008-04-22 Jb Evain <[email protected]>
  192. * Expression.cs (Convert, ConvertChecked): implement.
  193. 2008-04-21 Jb Evain <[email protected]>
  194. * Expression.cs (Call): don't rely on the fact that if the
  195. instance expression is null, then it's a static call. Explicitely
  196. check on the MethodInfo for that.
  197. * EmitContext.cs (EmitCall): same pattern.
  198. 2008-04-20 Jb Evain <[email protected]>
  199. * MemberMemberBinding.cs (Emit): implement.
  200. 2008-04-19 Jb Evain <[email protected]>
  201. * EmitContext.cs: infrastructure work to attach a compiled
  202. lambda expression to an execution scope, and to detect and store
  203. external globals in the scope.
  204. * ConstantExpression.cs: load globals from the scope.
  205. 2008-04-19 Jb Evain <[email protected]>
  206. * ExpressionVisitor.cs (Visit): don't die because of Power.
  207. 2008-04-09 Jb Evain <[email protected]>
  208. * Expression.cs: check for illegal booleab unary expressions.
  209. 2008-04-09 Jb Evain <[email protected]>
  210. * UnaryExpression.cs: implement compilation of negate.
  211. 2008-04-09 Jb Evain <[email protected]>
  212. * UnaryExpression.cs, Expression.cs: implement IsLifted and IsLifted
  213. to null for simple unary operators. Implement Not compilation.
  214. 2008-04-08 Jb Evain <[email protected]>
  215. * ElementInit.cs: emit pop if the add method doesn't return void.
  216. 2008-03-20 Jb Evain <[email protected]>
  217. * Expression.cs: use the new and more complete IsAssignableTo
  218. instead of IsAssignableFrom.
  219. 2008-03-19 Jb Evain <[email protected]>
  220. * LambdaExpression.cs: use the new standardified IsAssignableTo,
  221. fixes ExpressionTest_NewArrayBounds.TestArrayAssignability.
  222. 2008-03-19 Jb Evain <[email protected]>
  223. * Extensions.cs (Type.IsAssignableTo): deal with arrays.
  224. 2008-03-13 Jb Evain <[email protected]>
  225. * NewArrayExpression.cs (EmitNewArrayBounds): implement.
  226. 2008-03-12 Jb Evain <[email protected]>
  227. * NewArrayExpression.cs (Emit): naive implementation of emit support
  228. for array initialization.
  229. 2008-03-11 Jb Evain <[email protected]>
  230. * BinaryExpression.cs: very naive implementation of emitting
  231. array accesses.
  232. 2008-03-11 Jb Evain <[email protected]>
  233. * *.cs: Move the different Emit* helpers to EmitContext,
  234. so that they get used more naturally by the non Expression
  235. types.
  236. 2008-03-10 Jb Evain <[email protected]>
  237. * TypeBinaryExpression.cs, Expression.cs: refactor an EmitIsInst.
  238. * UnaryExpression.cs: implement TypeAs using the EmitIsInst.
  239. 2008-03-10 Jb Evain <[email protected]>
  240. * TypeBinaryExpression.cs (Emit): implement.
  241. 2008-03-08 Jb Evain <[email protected]>
  242. * MemberListBinding.cs (Emit): implement.
  243. * MemberBinding.cs (EmitLoadMember): add helper.
  244. 2008-03-08 Jb Evain <[email protected]>
  245. * MemberAssignment.cs (Emit): implement.
  246. 2008-03-08 Jb Evain <[email protected]>
  247. * ElementInit.cs (Emit): implement.
  248. 2008-03-06 Jb Evain <[email protected]>
  249. * EmitContext.cs: the DebugContext delegate the CreateDelegate
  250. to a DynamicContext to avoid visibility issues in debug mode.
  251. 2008-03-06 Jb Evain <[email protected]>
  252. * EmitContext.cs: Lambda methods bypass JIT visibility checks.
  253. 2008-03-06 Jb Evain <[email protected]>
  254. * MethodCallExpression.cs, Expression.cs: refactor method calling
  255. into a more sophisticated EmitCall in Expression.
  256. * InvocationExpression.cs (Emit): implement using the previous EmitCall.
  257. 2008-03-06 Jb Evain <[email protected]>
  258. * Expression.cs: add a EmitCall helper.
  259. * MemberExpression.cs: implement property access.
  260. 2008-03-06 Jb Evain <[email protected]>
  261. * MethodCallExpression.cs, Expression.cs: refactor a EmitLoad in Expression.
  262. * MemberExpression.cs: use EmitLoad to load the instance field if needed.
  263. 2008-03-06 Jb Evain <[email protected]>
  264. * BinaryExpression.cs, Expression.cs: move EmitStored from
  265. BinaryExpression to Expression.
  266. * MethodCallExpression.cs: allow method calls on structs.
  267. 2008-03-05 Jb Evain <[email protected]>
  268. * Expression.cs: Fix the Call method which takes an array
  269. of type arguments.
  270. 2008-03-05 Jb Evain <[email protected]>
  271. * Expression.cs: fix for a good chunk of lifted/liftToNull tests.
  272. 2008-02-26 Jb Evain <[email protected]>
  273. * Expression.cs (Call): Guess the parameters type from the argument
  274. types if needed.
  275. 2008-02-25 Jb Evain <[email protected]>
  276. * NewExpression.cs (Emit): deal with value types construction.
  277. 2008-02-25 Jb Evain <[email protected]>
  278. * Expression.cs, NewExpression.cs: deal with the fact that value types
  279. don't have a parameterless constructor.
  280. 2008-02-24 Jb Evain <[email protected]>
  281. * LambdaExpression.cs, EmitContext.cs: make compilation
  282. of delegate returning void work.
  283. 2008-02-24 Jb Evain <[email protected]>
  284. * MethodCallExpression.cs: emit call or callvirt depending
  285. on the virtuality of the method.
  286. 2008-02-24 Jb Evain <[email protected]>
  287. * LambdaExpression.cs: properly format error message.
  288. 2008-02-21 Jb Evain <[email protected]>
  289. * BinaryExpression.cs (EmitCoalesce): fix setup_null.
  290. 2008-02-21 Jb Evain <[email protected]>
  291. * BinaryExpression.cs (Emit): fix the both_are_null case.
  292. 2008-02-20 Jb Evain <[email protected]>
  293. * Expression.cs, ExpressionPrinter.cs: implement MemberBind.
  294. 2008-02-20 Jb Evain <[email protected]>
  295. * Expression.cs, ExpressionPrinter.cs: implement ListInit.
  296. 2008-02-19 Jb Evain <[email protected]>
  297. * Expression.cs, ExpressionPrinter.cs: implement MemberInit.
  298. 2008-02-19 Jb Evain <[email protected]>
  299. * Expression.cs, ExpressionPrinter.cs: implement last New
  300. overload for anonymous types.
  301. 2008-02-08 Jb Evain <[email protected]>
  302. * Expression.cs, InvocationExpression.cs, ExpressionPrinter.cs
  303. add support for Invoke.
  304. 2008-02-04 Jb Evain <[email protected]>
  305. * ExpressionPrinter.cs: fix printing of MemberListBinding.
  306. 2008-02-04 Jb Evain <[email protected]>
  307. * Expression.cs, NewExpression.cs: make New(Type) test pass.
  308. 2008-02-04 Jb Evain <[email protected]>
  309. * ExpressionPrinter.cs: fix and clean printing of ElementInit.
  310. 2008-02-02 Jb Evain <[email protected]>
  311. * Expression.cs: fix ListBind(MemberInfo,IEnumerable<ElementInit>).
  312. 2008-02-02 Jb Evain <[email protected]>
  313. * Expression.cs: fix ListBind(MethodInfo,IEnumerable<ElementInit>).
  314. 2008-02-01 Olivier Dufour <[email protected]>
  315. * Expression.cs, ExpressionPrinter.cs:Add ListBind
  316. 2008-02-01 Olivier Dufour <[email protected]>
  317. * Expression.cs, ExpressionPrinter.cs:Add Elementinit
  318. 2008-01-31 Jb Evain <[email protected]>
  319. * UnaryExpression.cs: emit array length.
  320. 2008-01-31 Jb Evain <[email protected]>
  321. * MemberExpression.cs: Simple support for emitting fields.
  322. 2008-01-30 Jb Evain <[email protected]>
  323. * MethodCallExpression.cs: very naive implementation of Emit.
  324. 2008-01-30 Jb Evain <[email protected]>
  325. * NewExpression.cs: add Emit support for reference types.
  326. 2008-01-30 Jb Evain <[email protected]>
  327. * LambdaExpression.cs, EmitContext.cs: small refactoring.
  328. Extract the different EmitContexts to their own file.
  329. 2008-01-29 Jb Evain <[email protected]>
  330. * MethodCallExpression.cs, Expression.cs: complete Calls.
  331. 2008-01-29 Jb Evain <[email protected]>
  332. * Expression.cs, NewExpression.cs, ExpressionPrinter.cs:
  333. implement the first flavors of New.
  334. 2008-01-27 Jb Evain <[email protected]>
  335. * ConditionalExpression.cs: implement Emit.
  336. 2008-01-27 Jb Evain <[email protected]>
  337. * Expression.cs: implement the last Lambda method.
  338. 2008-01-27 Jb Evain <[email protected]>
  339. * LambdaExpression.cs: fix the Type of the LambdaExpressions.
  340. 2008-01-27 Olivier Dufour <[email protected]>
  341. * Expression.cs, InvocationExpession.cs,
  342. ListInitExpression.cs, MemberInitExpression.cs
  343. NewExpression.cs : Add all missing
  344. constructor in Expressions and remove the base one
  345. 2008-01-25 Jb Evain <[email protected]>
  346. * Expression.cs, ExpressionPrinter.cs: implement Bind.
  347. 2008-01-25 Jb Evain <[email protected]>
  348. * MemberMemberBinding.cs, MemberListBinding.cs,
  349. MemberAssignment.cs, MemberBinding.cs:
  350. add constructors.
  351. 2008-01-25 Jb Evain <[email protected]>
  352. * Expression.cs: implement PropertyOrField.
  353. 2008-01-24 Jb Evain <[email protected]>
  354. * Expression.cs, MemberExpression.cs, ExpressionPrinter.cs:
  355. implement Field and Property.
  356. 2008-01-22 Miguel de Icaza <[email protected]>
  357. * BinaryExpression.cs: Unleash the power of cut and paste.
  358. Bring a bunch of operatros from mcs/expression.cs
  359. * Expression.cs: There is no op_LogicalAnd or op_LogicalOr, I just
  360. used those from mcs, that was wrong. use the proper ones, clean
  361. up the result.
  362. * BinaryExpression.cs: Add method invocations for binary methods.
  363. 2008-01-22 Jb Evain <[email protected]>
  364. * Expression.cs, ExpressionPrinter.cs: implement NewArrayList.
  365. 2008-01-22 Jb Evain <[email protected]>
  366. * Expression.cs, ExpressionPrinter.cs, NewArrayExpression.cs:
  367. implement Expression.NewArrayBounds.
  368. 2008-01-22 Jb Evain <[email protected]>
  369. * ExpressionPrinter.cs: fix Lambda and Equal.
  370. 2008-01-22 Miguel de Icaza <[email protected]>
  371. * BinaryExpression.cs (EmitCoalesce): Add support for emitting
  372. code for Coalesce.
  373. TODO: this does not use the "Conversion" Lambda, which am not sure
  374. who generates this or what it is used for.
  375. (EmitLogical): Fix a couple of bugs in AndAlso, OrElse.
  376. * Expression.cs: Add support for Coalesce.
  377. (BinaryCoreCheck): Move more checking here, instead of the helper
  378. routines, will remove them next.
  379. * LambdaExpression.cs (Compile): Create the delegate last, so we
  380. manage to save the assembly while debugging in case of error
  381. 2008-01-21 Miguel de Icaza <[email protected]>
  382. * Expression.cs (BinaryCoreCheck): Add checking for a few
  383. operators here (to avoid doing a second pass, handles AndAlso and
  384. OrElse).
  385. (AndAlso, OrElse): Add some code.
  386. * BinaryExpression.cs: Instead of using GetValueOrDefault use
  387. get_Value, as we already probed for the lack of value.
  388. Split out support for And/Or to a separate routine as the code is
  389. not very easy to share with the arithmetics code.
  390. 2008-01-21 Marek Safar <[email protected]>
  391. * BinaryExpression.cs: Fixed initobj initialization.
  392. 2008-01-21 Jb Evain <[email protected]>
  393. * Expression.cs, UnaryExpression.cs, BinaryExpression.cs:
  394. Move the IsUnsigned helper from BinaryExpression to Expression,
  395. so it can be used in UnaryExpression.
  396. 2008-01-21 Miguel de Icaza <[email protected]>
  397. * Start code generation for nullables, currently this generates
  398. incorrect code for things like:
  399. Expression<Func<int?, int?, int?>> e2 = (a, b) => a + b;
  400. e2.Compile ().Invoke (null, 3))
  401. This should return null, but returns something else.
  402. * Introduce LINQ_DBG env variable, which generates a linq file in
  403. /tmp; It currently does not work as well as it should, as the
  404. Func<> parameters do not mwatch the generated method.
  405. Investigate.
  406. 2008-01-20 Miguel de Icaza <[email protected]>
  407. Introduce support for Nullable arguments, no code is generated for
  408. these yet, its only tests + node creation behavior at this point.
  409. * Expression.cs (BinaryCoreCheck): Do not allow "int?" and "int"
  410. as operators, they must both be nullable.
  411. NullableTypes in the arguments are transformed into the underlying
  412. values when doing the method validation.
  413. 2008-01-18 Miguel de Icaza <[email protected]>
  414. * ParameterExpression.cs: Add emit support.
  415. 2008-01-18 Jb Evain <[email protected]>
  416. * Expression[Printer|Visitor].cs: implement UnaryPlus, Not, Negate.
  417. 2008-01-18 Miguel de Icaza <[email protected]>
  418. * BinaryExpression.cs: Add support for emitting code for some
  419. operators (ported from the Mono C# compiler).
  420. Add tests.
  421. 2008-01-17 Miguel de Icaza <[email protected]>
  422. Beginning of code generation framework for Linq.Expressions.
  423. Some code was borrowed by from the C# compiler
  424. * Expression_T.cs: Fill in the blanks.
  425. * LambdaExpression.cs: Validation of parameters mostly, a tiny bit
  426. of codegen.
  427. * ConstantExpression.cs: Mostly done, need to write tests for
  428. non-fundamental types and other ValueType initializations.
  429. 2008-01-17 Jb Evain <[email protected]>
  430. * Expression.cs: implement MakeMemberAccess.
  431. 2008-01-17 Jb Evain <[email protected]>
  432. * Expression.cs, ExpressionPrinter.cs, BinaryExpression.cs:
  433. implement ArrayIndex.
  434. 2008-01-17 Jb Evain <[email protected]>
  435. * Expression.cs: Use TypeCode for IsInt and IsNumber.
  436. 2008-01-16 Miguel de Icaza <[email protected]>
  437. * Expression.cs: Add support for user-defined operators.
  438. Put back various binary operator tests.
  439. 2008-01-16 Jb Evain <[email protected]>
  440. * Expression.cs, ExpressionPrinter.cs: fix call for static methods.
  441. 2008-01-15 Miguel de Icaza <[email protected]>
  442. * Expression.cs: Do validation on the method parameters and use
  443. the return type if provided.
  444. 2008-01-15 Jb Evain <[email protected]>
  445. * MethodCallExpression.cs, Expression.cs
  446. ExpressionPrinter.cs: Implement Call (Expression, ...)
  447. 2008-01-15 Jb Evain <[email protected]>
  448. * Expression.cs, ConditionalExpressionExpression.cs
  449. ExpressionPrinter.cs : implement Expression.Condition.
  450. 2008-01-15 Jb Evain <[email protected]>
  451. * Expression.cs,
  452. ParameterExpression.cs,
  453. ExpressionPrinter.cs: implement Expression.Parameter
  454. 2008-01-15 Jb Evain <[email protected]>
  455. * ExpressionPrinter.cs (VisitBinaryExpression): simple
  456. implementation (probably misses a few cases).
  457. 2008-01-14 Miguel de Icaza <[email protected]>
  458. * Expression.cs: Bring back the (most) of binary operators. Added
  459. type checking as well and reorganized the source file by topic
  460. instead of alphabetical sorting.
  461. 2008-01-14 Jb Evain <[email protected]>
  462. * ExpressionPrinter.cs: print ArrayLength.
  463. 2008-01-14 Jb Evain <[email protected]>
  464. * Expression.cs: TypeAs can't take value types.
  465. * ExpressionPrinter.cs: implement TypeAs.
  466. 2008-01-14 Jb Evain <[email protected]>
  467. * Expression.cs: implement TypeIs.
  468. * ExpressionPrinter.cs: implement VisitTypeBinaryExpression.
  469. * TypeBinaryExpression.cs: add proper ctor.
  470. 2008-01-14 Jb Evain <[email protected]>
  471. * Expression.cs, ExpressionPrinter.cs: fix for Quote's type.
  472. 2008-01-14 Jb Evain <[email protected]>
  473. * BinaryExpression.cs,
  474. * Expression.cs: revert part of Miguel's last patch.
  475. MakeBinary is expected to call the appropriate factory
  476. methods. Whose methods that are responsible for creating
  477. the good BinaryExpression, wether they use a custom method
  478. or not.
  479. 2008-01-14 Jb Evain <[email protected]>
  480. * Expression.cs: MakeUnary is expected to call the appropriate
  481. factory methods.
  482. 2008-01-14 Miguel de Icaza <[email protected]>
  483. * Expression.cs (Constant, MakeBinary and consumers of it): Some
  484. more fill-up changes.
  485. MakeBinary will need much more work to support user-provided
  486. types.
  487. 2008-01-13 Jb Evain <[email protected]>
  488. * *.cs: fresh implementation.