Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

No current-load-relative-directory in expander

Abierto
#712 6 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
38/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado

Línea de trabajo

Empieza con el reproducer de require/phantom y la llamada a current-load-relative-directory; después compara su valor durante la expansión en segundo plano de DrRacket, en el REPL de Racket y con raco make. Se considera terminado cuando el caso de DrRacket ya no produce #f para este uso o evita de otro modo la violación de contrato indicada.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

enhancement

It seems like (current-load-relative-directory) is unavailable during background expansion and no working REPL loaded, while the code runs and compiles just fine from the command line:

#lang racket

(require (for-syntax syntax/parse/pre
                     compiler/cm-accomplice))

(define-syntax (require/phantom stx)
  (syntax-parse stx
    [(_ relpath:string)
     (register-external-module (path->complete-path (syntax-e #'relpath)
                               (current-load-relative-directory)))
     #'(begin)]))

(require/phantom "test.rkt")

#|
Welcome to DrRacket, version 8.15.0.12 [cs].
Language: racket, with debugging [custom]; memory limit: 128 MB.
. . ../../racket/gitdev/racket/collects/syntax/wrap-modbeg.rkt:46:4: path->complete-path: contract violation
  expected: (and/c (or/c path-string? path-for-some-system?) complete-path?)
  given: #f
> 
|#

Here, (current-load-relative-directory) returns #f in DrRacket but not in Racket REPL:

● [Jan10 20:47:44] $ racket
Welcome to Racket v8.15.0.12 [cs].
> (enter! "phantom-require.rkt")
"phantom-require.rkt"> 

During compilation, (current-load-relative-directory) also returns the load path:

● [Jan10 20:47:54] $ raco make -v phantom-require.rkt 
"phantom-require.rkt":
  making #<path:....../phantom-require.rkt>
 [output to "compiled/phantom-require_rkt.zo"]
● [Jan10 20:48:04] $ raco make -v phantom-require.rkt
"phantom-require.rkt":
  making #<path:....../test.rkt>
test.rkt:(syntax-local-phase-level 0)
  making #<path:....../phantom-require.rkt>
 [output to "compiled/phantom-require_rkt.zo"]
● [Jan10 20:48:06] $ 
Lenguaje dominante
Racket
Estrellas
517
Forks
102
Merge medio
8 h 52 min
PR fusionados (30 d)
1

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de racket/drracket

Todos los issues de racket/drracket

Issues similares

Más issues de DevTools

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.