aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorDanielGavin <danielgavin5@hotmail.com>2021-03-22 22:52:19 +0100
committerDanielGavin <danielgavin5@hotmail.com>2021-03-22 22:52:19 +0100
commit7754c4ce36be910c83fda17a854407c86bd53de0 (patch)
treed9e71d0c8c34e7009bf09c6f4e692ee5f5a28898 /src/server
parent8b7fa052b40149d6023f4f23b07116a4f3813ebc (diff)
make sure to abort completion if '>' is used alone
Diffstat (limited to 'src/server')
-rw-r--r--src/server/analysis.odin3
-rw-r--r--src/server/completion.odin4
2 files changed, 7 insertions, 0 deletions
diff --git a/src/server/analysis.odin b/src/server/analysis.odin
index 62ab37c..b7dd0f9 100644
--- a/src/server/analysis.odin
+++ b/src/server/analysis.odin
@@ -56,6 +56,7 @@ DocumentPositionContext :: struct {
switch_type_stmt: ^ast.Type_Switch_Stmt, //used for completion
case_clause: ^ast.Case_Clause, //used for completion
value_decl: ^ast.Value_Decl, //used for completion
+ abort_completion: bool,
hint: DocumentPositionContextHint,
}
@@ -2216,8 +2217,10 @@ fallback_position_context_completion :: proc(document: ^Document, position: comm
e := parser.parse_expr(&p, true);
if e == nil {
+ position_context.abort_completion = true;
return;
} else if e, ok := e.derived.(ast.Bad_Expr); ok {
+ position_context.abort_completion = true;
return;
}
diff --git a/src/server/completion.odin b/src/server/completion.odin
index 1c49fd4..aafbc36 100644
--- a/src/server/completion.odin
+++ b/src/server/completion.odin
@@ -31,6 +31,10 @@ get_completion_list :: proc(document: ^Document, position: common.Position) -> (
position_context, ok := get_document_position_context(document, position, .Completion);
+ if !ok || position_context.abort_completion {
+ return list, true;
+ }
+
ast_context := make_ast_context(document.ast, document.imports, document.package_name);
get_globals(document.ast, &ast_context);