Skip to content

Commit 4a469fa

Browse files
committed
refactor(resolve): rename inference crate to resolve.
1 parent 2e8d2f2 commit 4a469fa

File tree

5 files changed

+30
-23
lines changed

5 files changed

+30
-23
lines changed

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ fuse_codegen = { version = "0.0.0", path = "crates/fuse-codegen" }
1717
fuse_common = { version = "0.0.0", path = "crates/fuse-common" }
1818
fuse_common_proc = { version = "0.0.0", path = "crates/fuse-common-proc" }
1919
fuse_parser = { version = "0.0.0", path = "crates/fuse-parser" }
20-
fuse_inference = { version = "0.0.0", path = "crates/fuse-inference" }
20+
fuse_resolve = { version = "0.0.0", path = "crates/fuse-resolve" }
2121
fuse_visitor = { version = "0.0.0", path = "crates/fuse-visitor" }
2222
fusec = { version = "0.0.0", path = "crates/fusec" }
2323

crates/fuse-inference/Cargo.toml crates/fuse-resolve/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[package]
2-
name = "fuse_inference"
2+
name = "fuse_resolve"
33
version = "0.0.0"
44
description.workspace = true
55
authors.workspace = true

crates/fuse-inference/src/lib.rs crates/fuse-resolve/src/lib.rs

+24-18
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
use std::collections::HashMap;
22

33
use fuse_ast::{
4-
Atom, BinaryOperator, BinaryOperatorKind, BindingPatternKind, CallExpression, Chunk, Function,
5-
Identifier, VariableDeclaration,
4+
Atom, BinaryOperator, BinaryOperatorKind, BindingPatternKind, CallExpression, Chunk,
5+
Expression, Function, Identifier, VariableDeclaration,
66
};
77
use fuse_common::ReferenceType;
88
use fuse_visitor::{
@@ -31,21 +31,19 @@ impl PartialEq<ReferenceType> for ScopeId {
3131
}
3232
}
3333

34-
struct IdentifierMap {
35-
map: HashMap<Atom, ReferenceType>,
36-
}
34+
struct IdentifierMap(HashMap<Atom, ReferenceType>);
3735

3836
impl IdentifierMap {
3937
fn new() -> Self {
40-
Self{ map: HashMap::new() }
38+
Self(HashMap::new())
4139
}
4240

4341
fn insert(&mut self, atom: Atom, ref_id: ReferenceType) -> Option<ReferenceType> {
44-
self.map.insert(atom, ref_id)
42+
self.0.insert(atom, ref_id)
4543
}
4644

4745
fn get(&self, atom: &Atom) -> Option<ReferenceType> {
48-
self.map.get(atom).map(|r| r.clone())
46+
self.0.get(atom).map(|r| r.clone())
4947
}
5048
}
5149

@@ -128,13 +126,13 @@ impl ScopeTree {
128126
}
129127
}
130128

131-
pub struct Inference<'ast> {
129+
pub struct Resolver<'ast> {
132130
source: &'ast str,
133131
scope: ScopeTree,
134132
last_reference: ReferenceType,
135133
}
136134

137-
impl<'ast> Inference<'ast> {
135+
impl<'ast> Resolver<'ast> {
138136
pub fn new(source: &'ast str) -> Self {
139137
Self {
140138
source,
@@ -143,9 +141,9 @@ impl<'ast> Inference<'ast> {
143141
}
144142
}
145143

146-
pub fn resolve(&mut self, chunk: &'ast mut Chunk) -> InferenceResult {
144+
pub fn resolve(&mut self, chunk: &'ast mut Chunk) -> ResolverResult {
147145
self.visit_chunk_mut(chunk);
148-
InferenceResult {
146+
ResolverResult {
149147
errors: Vec::default(),
150148
}
151149
}
@@ -163,7 +161,7 @@ impl<'ast> Inference<'ast> {
163161
}
164162
}
165163

166-
impl<'ast> VisitorMut<'ast> for Inference<'ast> {
164+
impl<'ast> VisitorMut<'ast> for Resolver<'ast> {
167165
fn visit_identifier_mut(&mut self, ident: &'ast mut Identifier) {
168166
if ident.reference.get_mut().is_none() {
169167
self.reference_identifier(ident);
@@ -191,14 +189,22 @@ impl<'ast> VisitorMut<'ast> for Inference<'ast> {
191189

192190
fn visit_binary_operator_mut(&mut self, op: &'ast mut BinaryOperator) {
193191
match &op.kind {
194-
BinaryOperatorKind::Member(_) => {}
192+
BinaryOperatorKind::Member(_) => {
193+
println!("{:?}", op);
194+
// let rhs = match &op.rhs {
195+
// Expression::Identifier(rhs) => rhs,
196+
// Expression::BinaryOperator(op) => match op {
197+
// },
198+
// _ => panic!("Right hand side of a member(.) operator should be an identifier"),
199+
// };
200+
}
195201
_ => {}
196202
}
197203
walk_binary_operator_mut(self, op)
198204
}
199205
}
200206

201-
impl<'ast> ScopeVisitor for Inference<'ast> {
207+
impl<'ast> ScopeVisitor for Resolver<'ast> {
202208
fn enter_scope(&mut self) {
203209
self.scope.push_stack();
204210
}
@@ -208,8 +214,8 @@ impl<'ast> ScopeVisitor for Inference<'ast> {
208214
}
209215
}
210216

211-
pub struct InferenceResult {
212-
pub errors: Vec<InferenceError>,
217+
pub struct ResolverResult {
218+
pub errors: Vec<ResolverError>,
213219
}
214220

215-
pub struct InferenceError {}
221+
pub struct ResolverError {}

crates/fusec/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@ edition.workspace = true
99

1010
[dependencies]
1111
fuse_parser = { workspace = true }
12-
fuse_inference = { workspace = true }
12+
fuse_resolve = { workspace = true }

crates/fusec/src/lib.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
use fuse_parser::Parser;
2-
use fuse_inference::Inference;
2+
use fuse_resolve::Resolver;
33

44
fn compile_chunk(source: &str) {
55
let parsed = Parser::new(source).parse();
66
assert!(!parsed.paniced);
77
assert!(parsed.errors.len() == 0);
88
let mut chunk = parsed.chunk.unwrap();
9-
let inference = Inference::new(source).resolve(&mut chunk);
9+
let resolution = Resolver::new(source).resolve(&mut chunk);
1010
// panic!("{:#?}", chunk)
1111
}
1212

@@ -15,6 +15,7 @@ fn manual_test() {
1515
compile_chunk(
1616
r#"
1717
let a = 0
18+
let c = 1
1819
let d = a.b.c
1920
"#,
2021
)

0 commit comments

Comments
 (0)