<https://lh3.googleusercontent.com/-da-baPJhxAc/WoPhVjtokuI/AAAAAAAAASo/INsw725AhSorxZ-BY4O4SWeBJ0xeK2mjQCLcBGAs/s1600/Screenshot%2Bfrom%2B2018-02-14%2B02-10-11.png>



I have a similar problem but I can't figure out a way to fix it yet :(

So, when I hover on `sum` on line 3, I get "no bound occurrences". That's 
definitely false since the program runs fine, and `sum` has a bound 
occurrence below (e.g., line 5).

I print the syntax objects passed into `#%module-begin` in the REPL. The 
srcloc seems right to me.

What baffles me further is that when I follow Robby's suggestion to insert 
a printf inside check-syntax code:

(printf "~a ~a ~a\n" stx-obj (syntax-source stx-obj) (syntax-line stx-obj))

I get the following result (only relevant lines shown)

#<syntax temp1> #f #f
#<syntax temp1> #f #f
#<syntax:3:20 s> string 3
#<syntax:3:23 id> string 3
#<syntax temp1> #f #f
#<syntax:3:9 id> string 3
#<syntax f3> #f #f
#<syntax:5:0 sum> string 5
#<syntax temp9> #f #f
#<syntax temp9> #f #f
#<syntax:7:16 sum> string 7
#<syntax:7:21 id> string 7
#<syntax:7:29 id> string 7
#<syntax temp9> #f #f
#<syntax:7:10 z> string 7
...

So: the sum on line 3 is either missing or somehow becomes `#<syntax temp1> 
#f #f` 

And sum on line 7 has a correct srcloc, except that the syntax-source 
somehow changes from `'unsaved-editor` to `string`?!?

FYI, I use megaparsack's `parse-syntax-string` like this:

(define (parse src in)
  (define len (string-length "#lang recursive-language"))
  (parse-result!
   (parse-syntax-string toplevel/p
                        (datum->syntax #f (port->string in)
                                       (list src 1 len (add1 len) 0))))

And this is my module reader

(module reader racket
  (require syntax/strip-context)
  (require "parser.rkt")
  (provide (rename-out [my-read-syntax read-syntax]
                       [my-read read]))
  (define (my-read in) (syntax->datum (my-read-syntax #f in)))
  (define (my-read-syntax _ in)
    (datum->syntax #f
      `(module src recursive-language
        ,@(parse (object-name in) in)))))

Any idea how to fix this? Also feel free to suggest anything that you find 
wrong -- this is the first time I touch the reader!

Thank you :)

On Saturday, May 7, 2016 at 5:18:21 AM UTC-4, Alexis King wrote:
>
> This is not the first time I have asked about the binding arrows on this 
> mailing list, but I seem to have run into a new problem that has me 
> completely stumped. I have written a #lang that uses an entirely custom 
> implementation of read-syntax (it does not wrap Racket’s read-syntax in 
> any way), and it seems to work alright. I can write some simple 
> programs, and they run properly. 
>
> However, I am not seeing any of the Check Syntax binding arrows at all. 
> Neither the arrows from imports nor arrows between definitions show up. 
> Inspecting the syntax objects at read-time and after expansion in the 
> macro stepper reveals quite clearly that the syntax objects I am 
> producing are syntax-original?, and adding the 
> 'original-for-check-syntax syntax property doesn’t affect things, 
> either. The bindings are clearly correct, since the program runs, and 
> comparing the scopes and syntax properties to an equivalent program in 
> #lang racket doesn’t reveal any meaningful differences. I have no idea 
> what I’m doing wrong. 
>
> Any ideas on how to diagnose this issue? I am using syntax/module-reader 
> along with the #:whole-body-readers? option, if that is meaningful (I’m 
> also not configuring #:language-info, if that matters). I can also post 
> the code I have somewhere if people think that would help, but it’s a 
> bit much without reducing it to a self-contained example, so I figured 
> I’d ask first to see if I’m forgetting something silly. 
>
> Alexis

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to