<div dir="ltr">You can put your helper code in a submodule that you require from the test module at phase 0 but from the actual module at phase 1.<br><br>Robby<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">
On Sun, Apr 7, 2013 at 1:47 AM, Eric Dobson <span dir="ltr">&lt;<a href="mailto:eric.n.dobson@gmail.com" target="_blank">eric.n.dobson@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
The issue with that is that it runs the code (compute) at phase1, when<br>
I need to run that code at phase 0, otherwise compiling the module<br>
runs the tests. I&#39;m willing to muck with eval and namespaces, so I<br>
believe what I want should be possible if difficult.<br>
<div class="HOEnZb"><div class="h5"><br>
<br>
On Sat, Apr 6, 2013 at 11:34 PM, Ryan Culpepper &lt;<a href="mailto:ryanc@ccs.neu.edu">ryanc@ccs.neu.edu</a>&gt; wrote:<br>
&gt; On 04/07/2013 01:24 AM, Eric Dobson wrote:<br>
&gt;&gt;<br>
&gt;&gt; I am trying to test a helper to a macro. It generates a syntax object<br>
&gt;&gt; with bindings at phase-1, this is then returned by the macro and it<br>
&gt;&gt; correctly evaluates. Is there a way to not go through the macro, but<br>
&gt;&gt; still evaluate the syntax-object with those bindings it has at phase-1<br>
&gt;&gt; relative to the helper and not phase 0 relative?<br>
&gt;&gt;<br>
&gt;&gt; Example code:<br>
&gt;&gt; #lang racket/load<br>
&gt;&gt;<br>
&gt;&gt; (module t racket<br>
&gt;&gt;    (provide (all-defined-out))<br>
&gt;&gt;    (define temp 7))<br>
&gt;&gt;<br>
&gt;&gt; (module stx-compute racket<br>
&gt;&gt;    (provide (all-defined-out))<br>
&gt;&gt;    (require (for-template &#39;t))<br>
&gt;&gt;    ;(require &#39;t)<br>
&gt;&gt;    (define (compute) #&#39;temp))<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; (module stx racket<br>
&gt;&gt;    (provide (all-defined-out))<br>
&gt;&gt;    (require (for-syntax &#39;stx-compute))<br>
&gt;&gt;    (define-syntax (use-compute stx)<br>
&gt;&gt;      (compute)))<br>
&gt;&gt;<br>
&gt;&gt; (require &#39;stx)<br>
&gt;&gt; (displayln (use-compute))<br>
&gt;&gt; (require &#39;stx-compute)<br>
&gt;&gt; (displayln (eval-syntax (compute)))<br>
&gt;&gt;<br>
&gt;&gt; This fails on the eval-syntax, but succeds if I uncomment the (require<br>
&gt;&gt; &#39;t).<br>
&gt;<br>
&gt;<br>
&gt; You might find phase1-eval from unstable/macro-testing helpful.<br>
&gt;<br>
&gt; (require (for-syntax &#39;stx-compute)<br>
&gt;          unstable/macro-testing))<br>
&gt;<br>
&gt; (phase1-eval (compute))<br>
&gt; ;; =&gt; &#39;temp<br>
&gt;<br>
&gt; (phase1-eval (compute) #:quote quote-syntax)<br>
&gt; ;; =&gt; #&lt;syntax temp&gt;<br>
&gt;<br>
&gt; (eval-syntax (phase1-eval (compute) #:quote quote-syntax))<br>
&gt; ;; =&gt; 7<br>
&gt;<br>
&gt; Ryan<br>
&gt;<br>
____________________<br>
  Racket Users list:<br>
  <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
</div></div></blockquote></div><br></div>