Skip to content

Commit faa3f27

Browse files
committed
fix position context after question mark token
fixes #2611
1 parent 3008897 commit faa3f27

File tree

2 files changed

+28
-2
lines changed

2 files changed

+28
-2
lines changed

src/analysis.zig

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5054,8 +5054,9 @@ pub fn getPositionContext(
50545054
.test_doctest_name, .var_access, .field_access => |loc| .{ .field_access = tokenLocAppend(loc, tok) },
50555055
else => .{ .field_access = tokenLocAppend(curr_ctx.ctx.loc(tree) orelse tok.loc, tok) },
50565056
},
5057-
.question_mark, .period_asterisk => switch (curr_ctx.ctx) {
5058-
.var_access, .field_access => |loc| .{ .field_access = tokenLocAppend(loc, tok) },
5057+
.period_asterisk => .{ .field_access = tokenLocAppend(curr_ctx.ctx.loc(tree) orelse tok.loc, tok) },
5058+
.question_mark => switch (curr_ctx.ctx) {
5059+
.field_access => |loc| .{ .field_access = tokenLocAppend(loc, tok) },
50595060
else => .empty,
50605061
},
50615062
.colon => switch (curr_ctx.ctx) {

tests/utility/position_context.zig

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,31 @@ test "var_access.nested" {
105105
, .var_access, .{ .lookahead = true });
106106
}
107107

108+
test "var_access.optional" {
109+
try testContext(
110+
\\const foo = ?<cursor>
111+
, .empty, .{});
112+
try testContext(
113+
\\const foo = ?<loc>T<cursor></loc>
114+
, .var_access, .{});
115+
}
116+
117+
test "var_access.pointer" {
118+
try testContext(
119+
\\const foo = *<cursor>
120+
, .empty, .{});
121+
try testContext(
122+
\\const foo = *<loc>T<cursor></loc>
123+
, .var_access, .{});
124+
125+
try testContext(
126+
\\const foo = []<cursor>
127+
, .empty, .{});
128+
try testContext(
129+
\\const foo = []<loc>T<cursor></loc>
130+
, .var_access, .{});
131+
}
132+
108133
test "var_access no lookahead" {
109134
try testContext(
110135
\\const a_var =<cursor> identifier;

0 commit comments

Comments
 (0)