diff options
| author | DanielGavin <danielgavin5@hotmail.com> | 2021-05-17 23:35:55 +0200 |
|---|---|---|
| committer | DanielGavin <danielgavin5@hotmail.com> | 2021-05-17 23:35:55 +0200 |
| commit | 63feccd209b69b913f3a2fe33fa993dbe0af909f (patch) | |
| tree | b5fc2788fd29b90a9feb13c8b3b5017ee6d6d483 | |
| parent | 98609fccd73cb464dd4659702319dab2fe1c61c1 (diff) | |
handle the parser changes in core + linux still not working
| -rw-r--r-- | src/common/ast.odin | 2 | ||||
| -rw-r--r-- | src/common/position.odin | 10 | ||||
| -rw-r--r-- | src/index/build.odin | 2 | ||||
| -rw-r--r-- | src/server/documents.odin | 2 | ||||
| -rw-r--r-- | src/server/requests.odin | 2 | ||||
| -rw-r--r-- | src/server/semantic_tokens.odin | 14 | ||||
| -rw-r--r-- | src/testing/testing.odin | 2 | ||||
| -rw-r--r-- | tests/completions_test.odin | 3 |
8 files changed, 20 insertions, 17 deletions
diff --git a/src/common/ast.odin b/src/common/ast.odin index 96e5151..9c24f03 100644 --- a/src/common/ast.odin +++ b/src/common/ast.odin @@ -143,7 +143,7 @@ collect_globals :: proc(file: ast.File, skip_private := false) -> []GlobalExpr { return exprs[:]; } -get_ast_node_string :: proc(node: ^ast.Node, src: []byte) -> string { +get_ast_node_string :: proc(node: ^ast.Node, src: string) -> string { return string(src[node.pos.offset:node.end.offset]); } diff --git a/src/common/position.odin b/src/common/position.odin index d410ce6..41bf00a 100644 --- a/src/common/position.odin +++ b/src/common/position.odin @@ -91,7 +91,7 @@ get_relative_token_position :: proc(offset: int, document_text: []u8, current_st /* Get the range of a token in utf16 space */ -get_token_range :: proc(node: ast.Node, document_text: []u8) -> Range { +get_token_range :: proc(node: ast.Node, document_text: string) -> Range { range: Range; go_backwards_to_endline :: proc(offset: int, document_text: []u8) -> int { @@ -112,15 +112,15 @@ get_token_range :: proc(node: ast.Node, document_text: []u8) -> Range { pos_offset := min(len(document_text) - 1, node.pos.offset); end_offset := min(len(document_text) - 1, node.end.offset); - offset := go_backwards_to_endline(pos_offset, document_text); + offset := go_backwards_to_endline(pos_offset, transmute([]u8)document_text); range.start.line = node.pos.line - 1; - range.start.character = get_character_offset_u8_to_u16(node.pos.column - 1, document_text[offset:]); + range.start.character = get_character_offset_u8_to_u16(node.pos.column - 1, transmute([]u8)document_text[offset:]); - offset = go_backwards_to_endline(end_offset, document_text); + offset = go_backwards_to_endline(end_offset, transmute([]u8)document_text); range.end.line = node.end.line - 1; - range.end.character = get_character_offset_u8_to_u16(node.end.column - 1, document_text[offset:]); + range.end.character = get_character_offset_u8_to_u16(node.end.column - 1, transmute([]u8)document_text[offset:]); return range; } diff --git a/src/index/build.odin b/src/index/build.odin index b464ce9..c45fa36 100644 --- a/src/index/build.odin +++ b/src/index/build.odin @@ -115,7 +115,7 @@ build_static_index :: proc(allocator := context.allocator, config: ^common.Confi file := ast.File { fullpath = fullpath, - src = data, + src = string(data), pkg = pkg, }; diff --git a/src/server/documents.odin b/src/server/documents.odin index 70569f4..8b33f66 100644 --- a/src/server/documents.odin +++ b/src/server/documents.odin @@ -367,7 +367,7 @@ parse_document :: proc(document: ^Document, config: ^common.Config) -> ([]Parser document.ast = ast.File { fullpath = document.uri.path, - src = document.text[:document.used_text], + src = string(document.text[:document.used_text]), pkg = pkg, }; diff --git a/src/server/requests.odin b/src/server/requests.odin index 528f709..26b26d4 100644 --- a/src/server/requests.odin +++ b/src/server/requests.odin @@ -867,7 +867,7 @@ notification_did_save :: proc (task: ^common.Task) { file := ast.File { fullpath = fullpath, - src = transmute([]u8)save_params.text, + src = save_params.text, pkg = pkg, }; diff --git a/src/server/semantic_tokens.odin b/src/server/semantic_tokens.odin index c9fde74..c36755b 100644 --- a/src/server/semantic_tokens.odin +++ b/src/server/semantic_tokens.odin @@ -114,9 +114,9 @@ get_semantic_tokens :: proc(document: ^Document, range: common.Range) -> Semanti return get_tokens(builder); } -write_semantic_node :: proc(builder: ^SemanticTokenBuilder, node: ^ast.Node, src: []byte, type: SemanticTokenTypes, modifier: SemanticTokenModifiers) { +write_semantic_node :: proc(builder: ^SemanticTokenBuilder, node: ^ast.Node, src: string, type: SemanticTokenTypes, modifier: SemanticTokenModifiers) { - position := common.get_relative_token_position(node.pos.offset, src, builder.current_start); + position := common.get_relative_token_position(node.pos.offset, transmute([]u8)src, builder.current_start); name := common.get_ast_node_string(node, src); @@ -125,18 +125,18 @@ write_semantic_node :: proc(builder: ^SemanticTokenBuilder, node: ^ast.Node, src builder.current_start = node.pos.offset; } -write_semantic_token :: proc(builder: ^SemanticTokenBuilder, token: tokenizer.Token, src: []byte, type: SemanticTokenTypes, modifier: SemanticTokenModifiers) { +write_semantic_token :: proc(builder: ^SemanticTokenBuilder, token: tokenizer.Token, src: string, type: SemanticTokenTypes, modifier: SemanticTokenModifiers) { - position := common.get_relative_token_position(token.pos.offset, src, builder.current_start); + position := common.get_relative_token_position(token.pos.offset, transmute([]u8)src, builder.current_start); append(&builder.tokens, cast(u32)position.line, cast(u32)position.character, cast(u32)len(token.text), cast(u32)type, 0); builder.current_start = token.pos.offset; } -write_semantic_token_pos :: proc(builder: ^SemanticTokenBuilder, pos: tokenizer.Pos, name: string, src: []byte, type: SemanticTokenTypes, modifier: SemanticTokenModifiers) { +write_semantic_token_pos :: proc(builder: ^SemanticTokenBuilder, pos: tokenizer.Pos, name: string, src: string, type: SemanticTokenTypes, modifier: SemanticTokenModifiers) { - position := common.get_relative_token_position(pos.offset, src, builder.current_start); + position := common.get_relative_token_position(pos.offset, transmute([]u8)src, builder.current_start); append(&builder.tokens, cast(u32)position.line, cast(u32)position.character, cast(u32)len(name), cast(u32)type, 0); @@ -453,7 +453,7 @@ write_semantic_tokens_value_decl :: proc(value_decl: ast.Value_Decl, builder: ^S } } -write_semantic_token_op :: proc(builder: ^SemanticTokenBuilder, token: tokenizer.Token, src: []byte) { +write_semantic_token_op :: proc(builder: ^SemanticTokenBuilder, token: tokenizer.Token, src: string) { if token.text == "=" { write_semantic_token_pos(builder, token.pos, token.text, src, .Operator, .None); diff --git a/src/testing/testing.odin b/src/testing/testing.odin index ebaf4fc..6f01229 100644 --- a/src/testing/testing.odin +++ b/src/testing/testing.odin @@ -99,7 +99,7 @@ setup :: proc(src: ^Source) { file := ast.File { fullpath = fullpath, - src = transmute([]u8)src_pkg.source, + src = src_pkg.source, pkg = pkg, }; diff --git a/tests/completions_test.odin b/tests/completions_test.odin index 47f9e5a..2a9b5ae 100644 --- a/tests/completions_test.odin +++ b/tests/completions_test.odin @@ -304,6 +304,9 @@ index_package_completion :: proc(t: ^testing.T) { test.expect_completion_details(t, &source, ".", {"my_package.My_Struct: struct"}); } +import "core:odin/ast" +import "core:odin/parser" + @(test) ast_generic_make_slice :: proc(t: ^testing.T) { |