Skip to content

Latest commit

 

History

History
46 lines (35 loc) · 2.09 KB

README.md

File metadata and controls

46 lines (35 loc) · 2.09 KB

Build Status, Coverage Status, Build Stats, Online Documentation, Maintained as of 2021, License: CC0 v1.0.

debug-scopes

Some utilities which help debugging scope-related issues with Racket unhygienic macros (hygienic macros in Racket will likely not need these utilities).

First, run:

raco pkg install debug-scopes

Then, require one or several of the following modules:

(require debug-scopes)
  • (+scopes stx) returns a string with a succinct representation of which scopes are present on each identifier.
  • (print-full-scopes) prints the long version of the scope information for the scopes used in preceeding calls to +scopes.
(require debug-scopes/named-scopes)
  • (make-named-scope string-or-symbol) creates a scope similarly to make-syntax-introducer, but annotates it with a name. This is a hack which creates a module with that name, and extracts the module scope (since these scopes have names attached to them in Racket). As a result, with the current implementation, this returns a module scope instead of a macro scope like make-syntax-introducer.
(require debug-scopes/named-scopes/override)
  • Overrides define-syntax and syntax-local-introduce. The overridden syntax-local-introduce works with the overridden define-syntax to flip a named scope instead of the usual macro scope. The use-site scope which may be flipped by syntax-local-introduce is left unchanged.