Skip to content

Commit 77fda01

Browse files
committed
Finished basic namespace resolution for functions
1 parent c4dd3e6 commit 77fda01

File tree

3 files changed

+15
-6
lines changed

3 files changed

+15
-6
lines changed

Diff for: src/name.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ impl Display for ResolvedName {
5656
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
5757
match self {
5858
ResolvedName::Remote(name) => write!(f, "<remote>/{}", name),
59-
ResolvedName::Project(name) => write!(f, "<project>/{}", name),
59+
ResolvedName::Project(name) => write!(f, "{}", name),
6060
}
6161
}
6262
}

Diff for: src/resolve/expr/call.rs

+12-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,18 @@ pub fn resolve_call_expr(
2323
.at(source));
2424
}
2525

26-
let resolved_name = ResolvedName::Project(call.function_name.basename.clone().into_boxed_str());
26+
eprintln!("warning: function call name resolution not fully implemented yet");
27+
let resolved_name = if !call.function_name.namespace.is_empty() {
28+
ResolvedName::Project(
29+
format!(
30+
"{}{}",
31+
call.function_name.namespace, call.function_name.basename
32+
)
33+
.into_boxed_str(),
34+
)
35+
} else {
36+
ResolvedName::Project(call.function_name.basename.clone().into_boxed_str())
37+
};
2738

2839
let Some(function_ref) = ctx.function_search_ctx.find_function(&resolved_name) else {
2940
return Err(ResolveErrorKind::FailedToFindFunction {

Diff for: src/resolve/mod.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ pub fn resolve<'a>(
252252
};
253253

254254
let function_ref = resolved_ast.functions.insert(resolved::Function {
255-
name,
255+
name: name.clone(),
256256
parameters: resolve_parameters(
257257
type_search_ctx,
258258
source_files,
@@ -285,11 +285,9 @@ pub fn resolve<'a>(
285285
.function_search_ctxs
286286
.get_or_insert_with(file_id, || FunctionSearchCtx::new());
287287

288-
let resolved_name = ResolvedName::Project(function.name.clone().into_boxed_str());
289-
290288
function_search_context
291289
.available
292-
.entry(resolved_name)
290+
.entry(name)
293291
.or_insert_with(|| vec![function_ref]);
294292
}
295293
}

0 commit comments

Comments
 (0)