perl-symbol-surface 0.12.2

Projection layer: derives stable symbol-bearing views from the Perl AST
Documentation
//! Projection layer: derives stable, reusable symbol-bearing views from the Perl AST.
//!
//! This crate sits at the seam between the *syntax model* (`perl-ast`) and *IDE
//! features* (semantic analyzer, workspace index, navigation, rename, workspace
//! symbols, call hierarchy).  It converts raw AST nodes into well-typed
//! projection structs that consumers can work with without re-implementing
//! per-node pattern matching.
//!
//! # Design goals
//!
//! - **No `perl-parser-core`** dependency — depends only on `perl-ast`,
//!   `perl-position-tracking`, and `perl-symbol-types`.
//! - **Single extraction pass** — `extract_symbol_decls` walks the entire tree
//!   once and returns all declaration sites.
//! - **MVP scope** — Phase 2a ships `SymbolDecl` only.  `SymbolRef` and
//!   `CallSite` will follow in later phases.
//!
//! # Quick start
//!
//! ```rust,ignore
//! use perl_symbol_surface::extract_symbol_decls;
//!
//! // `ast` is a `perl_ast::Node` produced by the parser
//! let decls = extract_symbol_decls(&ast, Some("MyPackage"));
//! for d in &decls {
//!     println!("{} {:?} @ {:?}", d.qualified_name, d.kind, d.full_span);
//! }
//! ```

pub mod decl;

pub use decl::{SymbolDecl, extract_symbol_decls};