From a4e9681c79095d6c10a851cfefe64cf1a3570ec5 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 16 Jul 2020 18:13:43 +0200 Subject: [PATCH] Better module structure --- crates/ra_ide/src/display.rs | 6 +-- .../structure.rs => file_structure.rs} | 0 crates/ra_ide/src/lib.rs | 43 ++++++++++--------- crates/rust-analyzer/src/cli.rs | 8 ++-- 4 files changed, 30 insertions(+), 27 deletions(-) rename crates/ra_ide/src/{display/structure.rs => file_structure.rs} (100%) diff --git a/crates/ra_ide/src/display.rs b/crates/ra_ide/src/display.rs index b59d4bbdf5b1..1ec9463690f0 100644 --- a/crates/ra_ide/src/display.rs +++ b/crates/ra_ide/src/display.rs @@ -3,7 +3,6 @@ pub(crate) mod function_signature; mod navigation_target; -mod structure; mod short_label; use ra_syntax::{ @@ -11,12 +10,11 @@ use ra_syntax::{ SyntaxKind::{ATTR, COMMENT}, }; -pub use navigation_target::NavigationTarget; -pub use structure::{file_structure, StructureNode}; - pub(crate) use navigation_target::{ToNav, TryToNav}; pub(crate) use short_label::ShortLabel; +pub use navigation_target::NavigationTarget; + pub(crate) fn function_label(node: &ast::FnDef) -> String { function_signature::FunctionSignature::from(node).to_string() } diff --git a/crates/ra_ide/src/display/structure.rs b/crates/ra_ide/src/file_structure.rs similarity index 100% rename from crates/ra_ide/src/display/structure.rs rename to crates/ra_ide/src/file_structure.rs diff --git a/crates/ra_ide/src/lib.rs b/crates/ra_ide/src/lib.rs index 6810c1c6afa7..d3b20f371b99 100644 --- a/crates/ra_ide/src/lib.rs +++ b/crates/ra_ide/src/lib.rs @@ -19,29 +19,31 @@ pub mod mock_analysis; mod markup; mod prime_caches; -mod status; -mod completion; -mod runnables; -mod goto_definition; -mod goto_type_definition; -mod goto_implementation; -mod extend_selection; -mod hover; +mod display; + mod call_hierarchy; mod call_info; -mod syntax_highlighting; +mod completion; +mod diagnostics; +mod expand_macro; +mod extend_selection; +mod file_structure; +mod folding_ranges; +mod goto_definition; +mod goto_implementation; +mod goto_type_definition; +mod hover; +mod inlay_hints; +mod join_lines; +mod matching_brace; mod parent_module; mod references; -mod diagnostics; -mod syntax_tree; -mod folding_ranges; -mod join_lines; -mod typing; -mod matching_brace; -mod display; -mod inlay_hints; -mod expand_macro; +mod runnables; mod ssr; +mod status; +mod syntax_highlighting; +mod syntax_tree; +mod typing; use std::sync::Arc; @@ -65,8 +67,9 @@ pub use crate::{ CompletionConfig, CompletionItem, CompletionItemKind, CompletionScore, InsertTextFormat, }, diagnostics::Severity, - display::{file_structure, NavigationTarget, StructureNode}, + display::NavigationTarget, expand_macro::ExpandedMacro, + file_structure::StructureNode, folding_ranges::{Fold, FoldKind}, hover::{HoverAction, HoverConfig, HoverGotoTypeData, HoverResult}, inlay_hints::{InlayHint, InlayHintsConfig, InlayKind}, @@ -323,7 +326,7 @@ impl Analysis { /// Returns a tree representation of symbols in the file. Useful to draw a /// file outline. pub fn file_structure(&self, file_id: FileId) -> Cancelable> { - self.with_db(|db| file_structure(&db.parse(file_id).tree())) + self.with_db(|db| file_structure::file_structure(&db.parse(file_id).tree())) } /// Returns a list of the places in the file where type hints can be displayed. diff --git a/crates/rust-analyzer/src/cli.rs b/crates/rust-analyzer/src/cli.rs index 6863f100b640..753001949e2a 100644 --- a/crates/rust-analyzer/src/cli.rs +++ b/crates/rust-analyzer/src/cli.rs @@ -10,7 +10,7 @@ mod ssr; use std::io::Read; use anyhow::Result; -use ra_ide::{file_structure, Analysis}; +use ra_ide::Analysis; use ra_prof::profile; use ra_syntax::{AstNode, SourceFile}; @@ -48,8 +48,10 @@ pub fn parse(no_dump: bool) -> Result<()> { } pub fn symbols() -> Result<()> { - let file = file()?; - for s in file_structure(&file) { + let text = read_stdin()?; + let (analysis, file_id) = Analysis::from_single_file(text); + let structure = analysis.file_structure(file_id).unwrap(); + for s in structure { println!("{:?}", s); } Ok(())