aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDanielGavin <danielgavin5@hotmail.com>2025-07-19 19:26:49 +0200
committerGitHub <noreply@github.com>2025-07-19 19:26:49 +0200
commit18619caa29afb5435c6cfe1e63739db51299ff72 (patch)
tree6b27eb8e3d59905c85d36032b30cab7c6afbc345 /src
parent0ab1503c0460e41856b113ed641d1c843282cc83 (diff)
parent898af0add1435f6481e3713462c21f395a4fd60e (diff)
Merge pull request #760 from BradLewis/feat/resolve-proc-where
Resolve where clauses in procs
Diffstat (limited to 'src')
-rw-r--r--src/server/analysis.odin7
-rw-r--r--src/server/file_resolve.odin4
2 files changed, 11 insertions, 0 deletions
diff --git a/src/server/analysis.odin b/src/server/analysis.odin
index 3583a64..27b8f5c 100644
--- a/src/server/analysis.odin
+++ b/src/server/analysis.odin
@@ -4779,6 +4779,13 @@ get_document_position_node :: proc(node: ^ast.Node, position_context: ^DocumentP
} else if position_in_node(n.type, position_context.position) {
position_context.function = cast(^Proc_Lit)node
get_document_position(n.type, position_context)
+ } else {
+ for clause in n.where_clauses {
+ if position_in_node(clause, position_context.position) {
+ position_context.function = cast(^Proc_Lit)node
+ get_document_position(clause, position_context)
+ }
+ }
}
case ^Comp_Lit:
//only set this for the parent comp literal, since we will need to walk through it to infer types.
diff --git a/src/server/file_resolve.odin b/src/server/file_resolve.odin
index e930f9d..27ad013 100644
--- a/src/server/file_resolve.odin
+++ b/src/server/file_resolve.odin
@@ -248,6 +248,10 @@ resolve_node :: proc(node: ^ast.Node, data: ^FileResolveData) {
resolve_node(n.type, data)
+ for clause in n.where_clauses {
+ resolve_node(clause, data)
+ }
+
data.position_context.function = cast(^Proc_Lit)node
append(&data.position_context.functions, data.position_context.function)