Can't access members of objects other than the function parameter #209
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Some attempts to access a member of an object in a LINQ expression tree, other than the parameter, don't work. In particular, using the new regex match operator from #107 and then accessing fields on the result don't work. This seems to be caused by BaseExpression.cs only supporting static members, not any random expression type for which a IObjectDatumConverter is available.
First attempt to fix this caused an issue where anonymous types that could & should be evaluated client-side are turning into server-side serialized objects. In particular, variables referenced from the function scope by a delegate. Was able to address this with a hack in the AnonymousTypeDatumConverterFactory, but that doesn't fix the same problem on the newtonsoft converters.
Was able to address the problem in the first approach by identifying that the expression nodes referenced a constant, and using client-side conversion for the constants. The hack disappeared, tests passed. Fixed up some code duplication and this PR is good to go.