resolve

package
v0.8.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 23, 2026 License: MIT Imports: 7 Imported by: 0

Documentation

Overview

Package resolve turns raw import strings into absolute file paths.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CppResolver added in v0.7.1

type CppResolver struct{}

CppResolver resolves `#include` directives to absolute file paths using a layered strategy: (1) same-directory relative; (2) an `include/` sibling directory discovered by walking up toward rootDir; (3) best-effort literal parse of any ancestor `CMakeLists.txt` (`include_directories` / `target_include_directories`) and `Makefile` (`-I`) include flags. System headers (`<vector>`) and any non-header-shaped paths are treated as external (nil).

func NewCppResolver added in v0.7.1

func NewCppResolver() *CppResolver

NewCppResolver creates a new C++ include resolver.

func (*CppResolver) Resolve added in v0.7.1

func (r *CppResolver) Resolve(importPath, fromFile, rootDir string) ([]string, error)

type GoModResolver

type GoModResolver struct {
	// contains filtered or unexported fields
}

GoModResolver resolves Go module-internal imports using go.mod. It expands package imports to the individual .go files in the directory.

func NewGoModResolver

func NewGoModResolver(rootDir string) (*GoModResolver, error)

NewGoModResolver creates a resolver that uses go.mod for module path resolution.

func (*GoModResolver) Resolve

func (r *GoModResolver) Resolve(importPath, fromFile, rootDir string) ([]string, error)

type JavaResolver added in v0.7.1

type JavaResolver struct{}

JavaResolver resolves Java package-qualified imports (e.g. `com.foo.Bar`) to absolute file paths by walking up from the importing file to the nearest classpath root (`src/main/java/`, `src/`, or an ancestor containing `pom.xml` / `build.gradle` / `build.gradle.kts`).

func NewJavaResolver added in v0.7.1

func NewJavaResolver() *JavaResolver

NewJavaResolver creates a new Java import resolver.

func (*JavaResolver) Resolve added in v0.7.1

func (r *JavaResolver) Resolve(importPath, fromFile, rootDir string) ([]string, error)

type PhpResolver added in v0.7.1

type PhpResolver struct{}

PhpResolver resolves PHP namespace-qualified imports (e.g. `Foo\Bar`) to absolute file paths using PSR-4 and PSR-0 autoloader entries declared in the nearest ancestor `composer.json`. `vendor/`-rooted namespaces are treated as external and return nil.

func NewPhpResolver added in v0.7.1

func NewPhpResolver() *PhpResolver

NewPhpResolver creates a new PHP import resolver.

func (*PhpResolver) Resolve added in v0.7.1

func (r *PhpResolver) Resolve(importPath, fromFile, rootDir string) ([]string, error)

type RelativeResolver

type RelativeResolver struct {
	Extensions []string
}

RelativeResolver resolves relative imports (./foo, ../bar) by trying various file extensions.

func NewRelativeResolver

func NewRelativeResolver(extensions []string) *RelativeResolver

NewRelativeResolver creates a resolver for relative imports.

func (*RelativeResolver) Resolve

func (r *RelativeResolver) Resolve(importPath, fromFile, rootDir string) ([]string, error)

type Resolver

type Resolver interface {
	// Resolve attempts to resolve importPath to absolute file path(s).
	// fromFile is the absolute path of the importing file.
	// rootDir is the project root.
	// Returns nil if the import cannot be resolved (e.g., external package).
	Resolve(importPath string, fromFile string, rootDir string) ([]string, error)
}

Resolver turns raw import strings into absolute file paths.

func DefaultResolver

func DefaultResolver(rootDir string, extensions []string) Resolver

DefaultResolver returns a resolver chain suitable for most projects. extensions should be the set of file extensions the project's parsers handle.

func Multi

func Multi(resolvers ...Resolver) Resolver

Multi chains resolvers, returning the first successful resolution.

type RustResolver added in v0.7.1

type RustResolver struct{}

RustResolver resolves Rust `use` declarations to absolute file paths by walking the crate's module tree (following `mod <name>;` declarations using the `foo.rs`, `foo/mod.rs`, and nested-directory conventions). It honours Cargo workspaces: when the nearest ancestor `Cargo.toml` declares `[workspace]`, the resolver descends to find the crate that owns the importing file. External crates and std/core/alloc imports return nil.

func NewRustResolver added in v0.7.1

func NewRustResolver() *RustResolver

NewRustResolver creates a new Rust import resolver.

func (*RustResolver) Resolve added in v0.7.1

func (r *RustResolver) Resolve(importPath, fromFile, rootDir string) ([]string, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL