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.
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.
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.
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.
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.
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 ¶
DefaultResolver returns a resolver chain suitable for most projects. extensions should be the set of file extensions the project's parsers handle.
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.