Skip to content

Commit fc27684

Browse files
committed
Handle duplicate set of global_token_order in ill-formed cases, closes #1130
1 parent e9ab30c commit fc27684

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

source/lex.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -314,11 +314,13 @@ class token
314314
}
315315
}
316316

317-
auto set_global_token_order(index_t fp) const
317+
auto set_global_token_order(index_t& counter) const
318318
-> void
319319
{
320-
assert(global_token_order == 0); // we only expect to set this once
321-
global_token_order = fp;
320+
// In a well-formed program we only expect to set this once
321+
if (global_token_order == 0) {
322+
global_token_order = ++counter;
323+
}
322324
}
323325

324326
auto get_global_token_order() const

source/sema.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2439,7 +2439,7 @@ class sema
24392439
{
24402440
// By giving tokens an order during sema
24412441
// generated code can be equally checked
2442-
t.set_global_token_order( global_token_counter++ );
2442+
t.set_global_token_order( global_token_counter );
24432443

24442444
auto guard = finally([&]() {
24452445
prev2_token = prev_token;

0 commit comments

Comments
 (0)