aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorDaniel Gavin <danielgavin5@hotmail.com>2022-11-01 17:31:59 +0100
committerDaniel Gavin <danielgavin5@hotmail.com>2022-11-01 17:31:59 +0100
commitb38f19df29776d3f2ba68bf5e08bccc35b569fcc (patch)
tree0c372c0aa4a889f136b7768820d176c976168f0a /src/server
parent61bc1ec0e6a7be1435df97aa4fe1d502bbe59ef5 (diff)
Fix issue with binary expression having call expressionsuse-recursion-map
Diffstat (limited to 'src/server')
-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)