aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--builtin/builtin.odin8
-rw-r--r--src/server/analysis.odin2
-rw-r--r--src/server/references.odin7
3 files changed, 15 insertions, 2 deletions
diff --git a/builtin/builtin.odin b/builtin/builtin.odin
index 8a7c773..ec7f400 100644
--- a/builtin/builtin.odin
+++ b/builtin/builtin.odin
@@ -6,11 +6,17 @@ package ols_builtin
size_of :: proc($T: typeid) -> int ---
@builtin align_of :: proc($T: typeid) -> int ---
-@builtin offset_of :: proc($T: typeid) -> uintptr ---
@builtin type_of :: proc(x: expr) -> type ---
@builtin type_info_of :: proc($T: typeid) -> ^runtime.Type_Info ---
@builtin typeid_of :: proc($T: typeid) -> typeid ---
+offset_of_selector :: proc(selector: $T) -> uintptr ---
+offset_of_member :: proc($T: typeid, member: $M) -> uintptr ---
+
+@builtin offset_of :: proc{offset_of_selector, offset_of_member}
+
+@builtin offset_of_by_string :: proc($T: typeid, member: string) -> uintptr ---
+
@builtin swizzle :: proc(x: [N]T, indices: ..int) -> [len(indices)]T ---
complex :: proc(real, imag: Float) -> Complex_Type ---
diff --git a/src/server/analysis.odin b/src/server/analysis.odin
index db41ad7..98716ca 100644
--- a/src/server/analysis.odin
+++ b/src/server/analysis.odin
@@ -5285,6 +5285,6 @@ get_document_position_node :: proc(
case ^ast.Or_Return_Expr:
get_document_position(n.expr, position_context)
case:
- log.errorf("Unhandled node kind: %T", n)
+ log.warnf("Unhandled node kind: %T", n)
}
}
diff --git a/src/server/references.odin b/src/server/references.odin
index efa993d..4c08998 100644
--- a/src/server/references.odin
+++ b/src/server/references.odin
@@ -77,6 +77,11 @@ resolve_references :: proc(
nil,
)
+ for workspace in common.config.workspace_folders {
+ uri, _ := common.parse_uri(workspace.uri, context.temp_allocator)
+ filepath.walk(uri.path, walk_directories, nil)
+ }
+
reset_ast_context(ast_context)
if position_context.struct_type != nil &&
@@ -154,6 +159,8 @@ resolve_references :: proc(
for fullpath in fullpaths {
data, ok := os.read_entire_file(fullpath, context.allocator)
+ log.error("looking: ", fullpath, "\n")
+
if !ok {
log.errorf("failed to read entire file for indexing %v", fullpath)
continue