diff options
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/analysis.odin | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/server/analysis.odin b/src/server/analysis.odin index e153cac..5755fac 100644 --- a/src/server/analysis.odin +++ b/src/server/analysis.odin @@ -1492,7 +1492,7 @@ expand_struct_usings :: proc(ast_context: ^AstContext, symbol: Symbol, value: Sy pkg := indexer.index.collection.packages[symbol.pkg] if obj_struct, ok := pkg.objc_structs[symbol.name]; ok { - for function, i in obj_struct.functions { + _objc_function: for function, i in obj_struct.functions { base := new_type(ast.Ident, {}, {}, context.temp_allocator) base.name = obj_struct.pkg @@ -1504,6 +1504,16 @@ expand_struct_usings :: proc(ast_context: ^AstContext, symbol: Symbol, value: Sy selector.field = field selector.expr = base + //Check if the base functions need to be overridden. Potentially look at some faster approach than a linear loop. + for name, j in names { + if name == function.logical_name { + names[j] = function.logical_name + types[j] = selector + ranges[j] = obj_struct.ranges[i] + continue _objc_function + } + } + append(&names, function.logical_name) append(&types, selector) append(&ranges, obj_struct.ranges[i]) |