diff options
| author | DanielGavin <danielgavin5@hotmail.com> | 2024-11-16 21:28:31 +0100 |
|---|---|---|
| committer | DanielGavin <danielgavin5@hotmail.com> | 2024-11-16 21:28:31 +0100 |
| commit | 1791c96b37ff54e7865ab1637740d0ac93856c3d (patch) | |
| tree | aa2a149e8606754c59a40d45c947937e1af74893 /src/server | |
| parent | 1e68788100f2d97c359de39183faa02304090ab1 (diff) | |
Add signature for diverging function returns
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/analysis.odin | 1 | ||||
| -rw-r--r-- | src/server/collector.odin | 1 | ||||
| -rw-r--r-- | src/server/signature.odin | 2 | ||||
| -rw-r--r-- | src/server/symbol.odin | 1 |
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 { |