aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/analysis.odin1
-rw-r--r--src/server/collector.odin1
-rw-r--r--src/server/signature.odin2
-rw-r--r--src/server/symbol.odin1
4 files changed, 5 insertions, 0 deletions
diff --git a/src/server/analysis.odin b/src/server/analysis.odin
index 0417620..630f4a1 100644
--- a/src/server/analysis.odin
+++ b/src/server/analysis.odin
@@ -2329,6 +2329,7 @@ make_symbol_procedure_from_ast :: proc(
arg_types = arg_types[:],
orig_arg_types = arg_types[:],
generic = v.generic,
+ diverging = v.diverging,
}
if _, ok := common.get_attribute_objc_name(attributes); ok {
diff --git a/src/server/collector.odin b/src/server/collector.odin
index da98f6a..643f212 100644
--- a/src/server/collector.odin
+++ b/src/server/collector.odin
@@ -131,6 +131,7 @@ collect_procedure_fields :: proc(
arg_types = args[:],
orig_arg_types = args[:],
generic = is_procedure_generic(proc_type),
+ diverging = proc_type.diverging,
}
return value
diff --git a/src/server/signature.odin b/src/server/signature.odin
index f6a277c..5cc4c05 100644
--- a/src/server/signature.odin
+++ b/src/server/signature.odin
@@ -80,6 +80,8 @@ build_procedure_symbol_signature :: proc(symbol: ^Symbol) {
if len(value.orig_return_types) > 1 {
strings.write_string(&builder, ")")
}
+ } else if value.diverging {
+ strings.write_string(&builder, " -> !")
}
symbol.signature = strings.to_string(builder)
} else if value, ok := symbol.value.(SymbolAggregateValue); ok {
diff --git a/src/server/symbol.odin b/src/server/symbol.odin
index 1bed406..8a3f4ab 100644
--- a/src/server/symbol.odin
+++ b/src/server/symbol.odin
@@ -41,6 +41,7 @@ SymbolProcedureValue :: struct {
orig_return_types: []^ast.Field, //When generics have overloaded the types, we store the original version here.
orig_arg_types: []^ast.Field, //When generics have overloaded the types, we store the original version here.
generic: bool,
+ diverging: bool,
}
SymbolProcedureGroupValue :: struct {