aboutsummaryrefslogtreecommitdiff
path: root/src/server/analysis.odin
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/analysis.odin')
-rw-r--r--src/server/analysis.odin25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/server/analysis.odin b/src/server/analysis.odin
index b1f00bd..2eef852 100644
--- a/src/server/analysis.odin
+++ b/src/server/analysis.odin
@@ -2198,6 +2198,31 @@ resolve_binary_expression :: proc(
return {}, false
}
+ if symbol, ok := symbol_a.value.(SymbolProcedureValue);
+ ok && len(symbol.return_types) > 0 {
+ symbol_a, ok_a = resolve_type_expression(
+ ast_context,
+ symbol.return_types[0].type != nil \
+ ? symbol.return_types[0].type \
+ : symbol.return_types[0].default_value,
+ )
+ }
+
+ if symbol, ok := symbol_b.value.(SymbolProcedureValue);
+ ok && len(symbol.return_types) > 0 {
+ symbol_b, ok_b = resolve_type_expression(
+ ast_context,
+ symbol.return_types[0].type != nil \
+ ? symbol.return_types[0].type \
+ : symbol.return_types[0].default_value,
+ )
+ }
+
+ if !ok_a || !ok_b {
+ return {}, false
+ }
+
+
matrix_value_a, is_matrix_a := symbol_a.value.(SymbolMatrixValue)
matrix_value_b, is_matrix_b := symbol_b.value.(SymbolMatrixValue)