diff options
| author | Daniel Gavin <danielgavin5@hotmail.com> | 2021-12-09 16:02:38 +0100 |
|---|---|---|
| committer | Daniel Gavin <danielgavin5@hotmail.com> | 2021-12-09 16:02:38 +0100 |
| commit | d62becfcbc03ac303620d9bb9044042e899459dd (patch) | |
| tree | 7c3fd45a59c2519c0348660b0744078c7c390824 | |
| parent | 57075ecc636e31960230029f144eb454f7263c08 (diff) | |
odinfmt fixes, and have signature retrigger with `,`
| -rw-r--r-- | src/common/ast.odin | 30 | ||||
| -rw-r--r-- | src/odin/printer/visit.odin | 40 | ||||
| -rw-r--r-- | src/server/requests.odin | 2 |
3 files changed, 52 insertions, 20 deletions
diff --git a/src/common/ast.odin b/src/common/ast.odin index 840d73b..2d8c898 100644 --- a/src/common/ast.odin +++ b/src/common/ast.odin @@ -16,6 +16,7 @@ keyword_map: map[string]bool = { "f32" = true, "f64" = true, "i64" = true, + "i128" = true, "i32" = true, "i16" = true, "u16" = true, @@ -23,6 +24,7 @@ keyword_map: map[string]bool = { "rawptr" = true, "any" = true, "u32" = true, + "u128" = true, "b32" = true, "b64" = true, "true" = true, @@ -32,6 +34,34 @@ keyword_map: map[string]bool = { "u8" = true, "i8" = true, "rune" = true, + "f16be" = true, + "f16le" = true, + "f32be" = true, + "f32le" = true, + "f64be" = true, + "f64le" = true, + "i16be" = true, + "i16le" = true, + "i32be" = true, + "i32le" = true, + "i64be" = true, + "i64le" = true, + "u16be" = true, + "u16le" = true, + "u32be" = true, + "u32le" = true, + "u64be" = true, + "u64le" = true, + "i128be" = true, + "i128le" = true, + "u128be" = true, + "u128le" = true, + "complex32" = true, + "complex64" = true, + "complex128" = true, + "quaternion64" = true, + "quaternion128" = true, + "quaternion256" = true, }; GlobalExpr :: struct { diff --git a/src/odin/printer/visit.odin b/src/odin/printer/visit.odin index 44d6aff..d0e83d7 100644 --- a/src/odin/printer/visit.odin +++ b/src/odin/printer/visit.odin @@ -327,9 +327,9 @@ visit_exprs :: proc(p: ^Printer, list: []^ast.Expr, options := List_Options{}, c for expr, i in list { if (.Enforce_Newline in options) { - document = cons(document, visit_expr(p, expr, called_from, options)) + document = cons(document, .Group in options ? group(visit_expr(p, expr, called_from, options)) : visit_expr(p, expr, called_from, options)) } else { - document = cons_with_opl(document, visit_expr(p, expr, called_from, options)) + document = cons_with_opl(document, .Group in options ? group(visit_expr(p, expr, called_from, options)) : visit_expr(p, expr, called_from, options)) } if (i != len(list) - 1 || .Trailing in options) && .Add_Comma in options { @@ -635,14 +635,14 @@ visit_stmt :: proc(p: ^Printer, stmt: ^ast.Stmt, block_type: Block_Type = .Gener if v.init != nil { set_source_position(p, v.init.pos); - for_document = cons_with_nopl(for_document, cons(group(visit_stmt(p, v.init)), cons(text(";"), break_with("")))) + for_document = cons_with_nopl(for_document, cons(group(visit_stmt(p, v.init)), text(";"))) } else if v.post != nil { for_document = cons_with_nopl(for_document, text(";")) } if v.cond != nil { set_source_position(p, v.cond.pos); - for_document = cons_with_nopl(for_document, fill_group(visit_expr(p, v.cond))) + for_document = cons_with_opl(for_document, fill_group(visit_expr(p, v.cond))) } if v.post != nil { @@ -759,19 +759,19 @@ visit_stmt :: proc(p: ^Printer, stmt: ^ast.Stmt, block_type: Block_Type = .Gener document = cons(document, text("return")) if v.results != nil { - document = cons_with_opl(document, visit_exprs(p, v.results, {.Add_Comma})) + document = cons_with_nopl(document, visit_exprs(p, v.results, {.Add_Comma})) } return document case Defer_Stmt: document := move_line(p, v.pos) document = cons(document, text("defer")) - document = cons_with_opl(document, visit_stmt(p, v.stmt)) + document = cons_with_nopl(document, visit_stmt(p, v.stmt)) return document case When_Stmt: document := move_line(p, v.pos) - document = cons(document, cons_with_opl(text("when"), visit_expr(p, v.cond))) + document = cons(document, cons_with_nopl(text("when"), visit_expr(p, v.cond))) document = cons_with_nopl(document, visit_stmt(p, v.body)) @@ -782,7 +782,7 @@ visit_stmt :: proc(p: ^Printer, stmt: ^ast.Stmt, block_type: Block_Type = .Gener set_source_position(p, v.else_stmt.pos) - document = cons(document, cons_with_opl(text("else"), visit_stmt(p, v.else_stmt))) + document = cons_with_nopl(document, cons_with_nopl(text("else"), visit_stmt(p, v.else_stmt))) } return document case Branch_Stmt: @@ -869,17 +869,17 @@ visit_expr :: proc(p: ^Printer, expr: ^ast.Expr, called_from: Expr_Called_Type = return cons_with_nopl(text_token(p, v.op), visit_expr(p, v.expr)) case Ternary_If_Expr: document := visit_expr(p, v.cond) - document = cons_with_opl(document, text_token(p, v.op1)) - document = cons_with_opl(document, visit_expr(p, v.x)) - document = cons_with_opl(document, text_token(p, v.op2)) - document = cons_with_opl(document, visit_expr(p, v.y)) + document = cons_with_nopl(document, text_token(p, v.op1)) + document = cons_with_nopl(document, visit_expr(p, v.x)) + document = cons_with_nopl(document, text_token(p, v.op2)) + document = cons_with_nopl(document, visit_expr(p, v.y)) return document case Ternary_When_Expr: document := visit_expr(p, v.cond) - document = cons_with_opl(document, text_token(p, v.op1)) - document = cons_with_opl(document, visit_expr(p, v.x)) - document = cons_with_opl(document, text_token(p, v.op2)) - document = cons_with_opl(document, visit_expr(p, v.y)) + document = cons_with_nopl(document, text_token(p, v.op1)) + document = cons_with_nopl(document, visit_expr(p, v.x)) + document = cons_with_nopl(document, text_token(p, v.op2)) + document = cons_with_nopl(document, visit_expr(p, v.y)) return document case Or_Else_Expr: document := visit_expr(p, v.x) @@ -895,7 +895,7 @@ visit_expr :: proc(p: ^Printer, expr: ^ast.Expr, called_from: Expr_Called_Type = document = cons(document, text(")")) return document case Ellipsis: - return cons_with_opl(text("..."), visit_expr(p, v.expr)) + return cons_with_opl(text(".."), visit_expr(p, v.expr)) case Relative_Type: return cons_with_opl(visit_expr(p, v.tag), visit_expr(p, v.type)) case Slice_Expr: @@ -1105,7 +1105,7 @@ visit_expr :: proc(p: ^Printer, expr: ^ast.Expr, called_from: Expr_Called_Type = document = cons(document, visit_end_brace(p, v.end, 1)) } else { document = cons(document, text("{")) - document = cons(document, nest(p.indentation_count, cons(break_with(""), visit_exprs(p, v.elems, {.Add_Comma})))) + document = cons(document, nest(p.indentation_count, cons(break_with(""), visit_exprs(p, v.elems, {.Add_Comma, .Group})))) document = cons(document, cons(cons(if_break(","), break_with("")), text("}"))) document = group(document) } @@ -1371,7 +1371,7 @@ visit_call_exprs :: proc(p: ^Printer, list: []^ast.Expr, ellipsis := false) -> ^ for expr, i in list { if i == len(list) - 1 && ellipsis { - document = cons(document, text("...")) + document = cons(document, text("..")) } document = cons(document, visit_expr(p, expr)) @@ -1454,6 +1454,8 @@ get_node_length :: proc(node: ^ast.Node) -> int { return len(v.name) case ast.Basic_Lit: return len(v.tok.text) + case ast.Implicit_Selector_Expr: + return len(v.field.name) + 1 case ast.Binary_Expr: return 0 case: diff --git a/src/server/requests.odin b/src/server/requests.odin index 1c9ea13..754af8d 100644 --- a/src/server/requests.odin +++ b/src/server/requests.odin @@ -497,7 +497,7 @@ request_initialize :: proc (task: ^common.Task) { config.signature_offset_support = initialize_params.capabilities.textDocument.signatureHelp.signatureInformation.parameterInformation.labelOffsetSupport; completionTriggerCharacters := []string {".", ">", "#", "\"", "/", ":"}; - signatureTriggerCharacters := []string {"("}; + signatureTriggerCharacters := []string {"(", ","}; signatureRetriggerCharacters := []string {","}; token_type := type_info_of(SemanticTokenTypes).variant.(runtime.Type_Info_Named).base.variant.(runtime.Type_Info_Enum); |