﻿<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Ayende @ Rahien</title><link>http://ayende.com</link><description>Ayende @ Rahien</description><copyright>Copyright (C) Ayende Rahien  2004 - 2021 (c) 2026</copyright><ttl>60</ttl><item><title>Andrey Shchekin commented on Inline Anonymous Visitors</title><description>I just understood what it reminds me of:
  
Mock&lt;DepthFirstVisitor&gt;(mock =&gt; {
  
    mock.Expect(x =&gt; x.OnReferenceExpression(...))
  
              .Callback(re =&gt; references.Add(re.Name))
  
}).Visit(condition)
  
which is much uglier than what you propose, bt is not limited to visitors. Just rename Mock to something fitting, like Inline&lt;&gt;.
  
  
As for uglyness,
  
new Inline&lt;DepthFirstVisitor&gt; {
  
     { x =&gt; x.OnReferenceExpression(null),  re =&gt; references.Add(re.Name) }
  
};
  
I think with a ton of overloads for Add(,) it may be viable.
</description><link>http://ayende.com/3574/inline-anonymous-visitors#comment7</link><guid>http://ayende.com/3574/inline-anonymous-visitors#comment7</guid><pubDate>Fri, 05 Sep 2008 20:04:32 GMT</pubDate></item><item><title>Ayende Rahien commented on Inline Anonymous Visitors</title><description>Just like your code is doing, by the actual DepthFirstVisitor
</description><link>http://ayende.com/3574/inline-anonymous-visitors#comment6</link><guid>http://ayende.com/3574/inline-anonymous-visitors#comment6</guid><pubDate>Tue, 02 Sep 2008 22:46:49 GMT</pubDate></item><item><title>configurator commented on Inline Anonymous Visitors</title><description>How is this used, if you don't mind me asking?
  
I mean, who calls that OnReferenceExpression method?
</description><link>http://ayende.com/3574/inline-anonymous-visitors#comment5</link><guid>http://ayende.com/3574/inline-anonymous-visitors#comment5</guid><pubDate>Tue, 02 Sep 2008 22:42:38 GMT</pubDate></item><item><title>Ayende Rahien commented on Inline Anonymous Visitors</title><description>That is exactly what I was referring to.
  
  
</description><link>http://ayende.com/3574/inline-anonymous-visitors#comment4</link><guid>http://ayende.com/3574/inline-anonymous-visitors#comment4</guid><pubDate>Tue, 02 Sep 2008 22:35:36 GMT</pubDate></item><item><title>configurator commented on Inline Anonymous Visitors</title><description>[NOTE: I have no idea what you are talking about. I have not built compilers (yet) and I do now know what visitors are. But...]
  
  
I don't see why you can't make such a class:
  
  
public class InlineVisitor : DepthFirstVisitor
  
{
  
     public Action&lt;ReferenceExpression&gt; OnReferenceExpressionHandler { private get; set; }
  
  
     public void OnReferenceExpression(ReferenceExpression re)
  
     {
  
            OnReferenceExpressionHandler(re);
  
     }
  
}
  
  
which you would use exactly as you specified.
  
  
Or is that exactly what you intended to do?
</description><link>http://ayende.com/3574/inline-anonymous-visitors#comment3</link><guid>http://ayende.com/3574/inline-anonymous-visitors#comment3</guid><pubDate>Tue, 02 Sep 2008 22:22:07 GMT</pubDate></item><item><title>Ayende Rahien commented on Inline Anonymous Visitors</title><description>Not really, this would work if and only if I wanted to run only over ReferenceExpression, and I want this over the entire AST.
</description><link>http://ayende.com/3574/inline-anonymous-visitors#comment2</link><guid>http://ayende.com/3574/inline-anonymous-visitors#comment2</guid><pubDate>Tue, 02 Sep 2008 20:00:21 GMT</pubDate></item><item><title>ceilidhboy commented on Inline Anonymous Visitors</title><description>To make it even more concise, add a static utility method:
  
  
  ...
  
  InlineVisitor.Visit(condition, re =&gt; references.Add(re.Name));
</description><link>http://ayende.com/3574/inline-anonymous-visitors#comment1</link><guid>http://ayende.com/3574/inline-anonymous-visitors#comment1</guid><pubDate>Tue, 02 Sep 2008 19:41:40 GMT</pubDate></item></channel></rss>