diff --git a/src/analysis.zig b/src/analysis.zig index 904b6f0b6..27735ca6b 100644 --- a/src/analysis.zig +++ b/src/analysis.zig @@ -3482,6 +3482,7 @@ pub fn getPositionContext( .enum_literal => curr_ctx.ctx = .{ .enum_literal = tokenLocAppend(curr_ctx.ctx.loc().?, tok), }, + .parens_expr => curr_ctx.ctx = .{ .var_access = tok.loc }, else => {}, }, .builtin => curr_ctx.ctx = .{ .builtin = tok.loc }, diff --git a/src/features/completions.zig b/src/features/completions.zig index 804ec023d..0b96ce1f1 100644 --- a/src/features/completions.zig +++ b/src/features/completions.zig @@ -876,7 +876,7 @@ pub fn completionAtIndex( switch (pos_context) { .builtin => try completeBuiltin(&builder), - .var_access, .empty => try completeGlobal(&builder), + .var_access, .empty, .parens_expr => try completeGlobal(&builder), .field_access => |loc| try completeFieldAccess(&builder, loc), .global_error_set => try globalSetCompletions(&builder, .error_set), .enum_literal => |loc| try completeDot(&builder, loc), diff --git a/tests/lsp_features/completion.zig b/tests/lsp_features/completion.zig index 1e0464d9f..7c66e954a 100644 --- a/tests/lsp_features/completion.zig +++ b/tests/lsp_features/completion.zig @@ -817,6 +817,14 @@ test "if/for/while/catch scopes" { , &.{ .{ .label = "T", .kind = .Constant, .detail = "u32" }, }); + try testCompletion( + \\const S = struct { pub const T = u32; }; + \\test { + \\ if (true) S. + \\} + , &.{ + .{ .label = "T", .kind = .Constant, .detail = "u32" }, + }); try testCompletion( \\const S = struct { pub const T = u32; }; \\test {