ModuleResolver – Resolución de Módulos y Paquetes

Archivo: src/module.rs

¿Por qué existe?

Gestiona la carga y composición de módulos de código Forja, permitiendo que los archivos .fa se importen entre sí y que dependencias externas provengan de paquetes publicados.

Cómo funciona

  1. Normaliza la ruta solicitada, evitando traversals (../) y rutas absolutas.
  2. Intenta resolver la ruta dentro del directorio raíz del proyecto.
    • Si el archivo existe, lo lee, tokeniza, parsea y resuelve recursivamente cualquier Importar interno.
    • Almacena el resultante Programa en cache para reutilización.
  3. Si no está presente localmente, delega al PackageResolver (si está configurado) para buscar el módulo en paquetes externos.
  4. En caso de error, devuelve ErrorForja explicando la causa (ruta inválida, archivo inexistente, paquete no encontrado).

Estructuras clave

Estructuras clave

El módulo define ModuleResolver con los campos root_dir, cache y package_resolver. Proporciona los métodos new y resolver para crear y resolver módulos.

Relación con otras partes del compilador