Skip to content

Commit d1f69d4

Browse files
authored
refactor: Enforce facade pattern for query/ module (#294)
1 parent 054f62d commit d1f69d4

12 files changed

Lines changed: 25 additions & 30 deletions

File tree

crates/plotnik-lib/src/analyze/link.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@ use super::visitor::{Visitor, walk};
2626
use crate::diagnostics::{DiagnosticKind, Diagnostics};
2727
use crate::parser::ast::{self, Expr, NamedNode};
2828
use crate::parser::{SyntaxKind, SyntaxToken, token_src};
29-
use crate::query::query::AstMap;
30-
use crate::query::source_map::{SourceId, SourceMap};
29+
use crate::query::{AstMap, SourceId, SourceMap};
3130

3231
/// Link query against a language grammar.
3332
///

crates/plotnik-lib/src/analyze/recursion.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use super::visitor::{Visitor, walk_expr, walk_named_node};
1313
use crate::Diagnostics;
1414
use crate::diagnostics::DiagnosticKind;
1515
use crate::parser::{AnonymousNode, Def, Expr, NamedNode, Ref, Root, SeqExpr};
16-
use crate::query::source_map::SourceId;
16+
use crate::query::SourceId;
1717

1818
/// Validate recursion using the pre-computed dependency analysis.
1919
pub fn validate_recursion(

crates/plotnik-lib/src/analyze/symbol_table.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use crate::diagnostics::DiagnosticKind;
1111
use crate::parser::{Root, ast, token_src};
1212

1313
use super::visitor::Visitor;
14-
use crate::query::source_map::{SourceId, SourceMap};
14+
use crate::query::{SourceId, SourceMap};
1515

1616
/// Sentinel name for unnamed definitions (bare expressions at root level).
1717
/// Code generators can emit whatever name they want for this.

crates/plotnik-lib/src/analyze/type_check/infer.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ use crate::parser::{
2626
AltExpr, AltKind, AnonymousNode, CapturedExpr, Def, Expr, FieldExpr, NamedNode, QuantifiedExpr,
2727
Ref, Root, SeqExpr, SyntaxKind, is_truly_empty_scope,
2828
};
29-
use crate::query::source_map::SourceId;
29+
use crate::query::SourceId;
3030

3131
/// Type annotation kind from `@capture :: Type` syntax.
3232
///

crates/plotnik-lib/src/analyze/type_check/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ use crate::analyze::dependencies::DependencyAnalysis;
3232
use crate::analyze::symbol_table::{SymbolTable, UNNAMED_DEF};
3333
use crate::diagnostics::Diagnostics;
3434
use crate::parser::Root;
35-
use crate::query::source_map::SourceId;
35+
use crate::query::SourceId;
3636

3737
/// Run type inference on all definitions.
3838
///

crates/plotnik-lib/src/emit/emitter.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use crate::bytecode::{
1212
Entrypoint, FieldSymbol, Header, NodeSymbol, SECTION_ALIGN, TriviaEntry, TypeMetaHeader,
1313
};
1414
use crate::compile::Compiler;
15-
use crate::query::query::LinkedQuery;
15+
use crate::query::LinkedQuery;
1616

1717
use super::EmitError;
1818
use super::layout::CacheAligned;

crates/plotnik-lib/src/parser/tests/recovery/coverage_tests.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
use crate::Query;
2-
use crate::query::query::QueryBuilder;
1+
use crate::{Query, query::QueryBuilder};
32
use indoc::indoc;
43

54
#[test]
Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1+
//! Query facade for Plotnik compilation.
2+
13
mod dump;
24
mod printer;
3-
pub mod source_map;
4-
5-
pub use printer::QueryPrinter;
6-
pub use query::{Query, QueryBuilder, QueryContext};
7-
pub use source_map::{SourceId, SourceMap};
8-
9-
#[allow(clippy::module_inception)]
10-
pub mod query;
11-
12-
// Re-export from analyze/ for backwards compatibility
13-
pub use crate::analyze::SymbolTable;
5+
mod source_map;
6+
mod stages;
147

158
#[cfg(test)]
169
mod printer_tests;
1710
#[cfg(test)]
1811
mod query_tests;
1912
#[cfg(test)]
2013
mod source_map_tests;
14+
15+
// Public API
16+
pub use printer::QueryPrinter;
17+
pub use source_map::{Source, SourceId, SourceKind, SourceMap};
18+
pub use stages::{
19+
AstMap, LinkedQuery, Query, QueryAnalyzed, QueryBuilder, QueryConfig, QueryContext, QueryParsed,
20+
};

crates/plotnik-lib/src/query/printer.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
//! AST/CST pretty-printer for debugging and test snapshots.
22
3+
use std::collections::HashMap;
34
use std::fmt::Write;
45

56
use indexmap::IndexSet;
@@ -8,7 +9,7 @@ use rowan::NodeOrToken;
89
use crate::parser::{self as ast, SyntaxNode};
910

1011
use super::Query;
11-
use super::source_map::SourceKind;
12+
use super::SourceKind;
1213
use crate::analyze::type_check::Arity;
1314

1415
/// Returns indentation string for the given level.
@@ -111,8 +112,6 @@ impl<'q> QueryPrinter<'q> {
111112
}
112113

113114
fn format_symbols(&self, w: &mut impl Write) -> std::fmt::Result {
114-
use std::collections::HashMap;
115-
116115
let symbols = &self.query.symbol_table;
117116
if symbols.is_empty() {
118117
return Ok(());

crates/plotnik-lib/src/query/query_tests.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
use plotnik_langs::{Lang, from_name};
22

3-
use crate::{
4-
SourceMap,
5-
bytecode::Module,
6-
query::query::{LinkedQuery, QueryAnalyzed, QueryBuilder},
7-
};
3+
use crate::{SourceMap, bytecode::Module};
4+
5+
use super::{LinkedQuery, QueryAnalyzed, QueryBuilder};
86

97
fn javascript() -> Lang {
108
from_name("javascript").expect("javascript lang")

0 commit comments

Comments
 (0)