Skip to content

Commit cc05718

Browse files
committed
fix mut x2
1 parent a7342ed commit cc05718

File tree

9 files changed

+29
-18
lines changed

9 files changed

+29
-18
lines changed

lib/rivet/src/checker/builtin_call.ri

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ extend Checker {
4343
}
4444
if !arg_info.is_any {
4545
self.check_types(arg.type, arg_info.type) catch |err| {
46-
err2 := report.error_builder(err.to_string(), arg.pos);
46+
mut err2 := report.error_builder(err.to_string(), arg.pos);
4747
err2.add_note(
4848
"in argument `{}` of builtin function `{}`", arg_info.name,
4949
b_func.name
@@ -60,7 +60,7 @@ extend Checker {
6060
arg1 := builtin_call.args[at.arg1_idx];
6161
arg2 := builtin_call.args[at.arg2_idx];
6262
if arg2.type != arg1.type {
63-
err2 := report.error_builder(
63+
mut err2 := report.error_builder(
6464
"expected type `{}`, found `{}`".fmt(arg2.type, arg1.type),
6565
arg1.pos
6666
);

lib/rivet/src/checker/call_expr.ri

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ extend Checker {
272272
}
273273
},
274274
else -> {
275-
initted_fields := maps.MapStringBool();
275+
mut initted_fields := maps.MapStringBool();
276276
type_fields := type_sym.full_fields();
277277
if !call_expr.has_named_args() {
278278
expr_args_len := call_expr.args.len;

lib/rivet/src/checker/exprs.ri

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,7 @@ extend Checker {
361361
self.expected_type = value_type;
362362
} else {
363363
self.check_types(type, value_type) catch |err| {
364-
err_b := report.error_builder(err.to_string(), value.position());
364+
mut err_b := report.error_builder(err.to_string(), value.position());
365365
err_b.add_note(if array_lit.is_dyn {
366366
"in element {} of dynamic array literal"
367367
} else {

lib/rivet/src/checker/match_expr.ri

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ extend Checker {
6060
}
6161
}
6262

63-
branch_exprs := maps.MapStringUint();
63+
mut branch_exprs := maps.MapStringUint();
6464
match_expr.expected_type = self.expected_type;
6565
for ib, &mut branch in match_expr.branches {
6666
if !branch.is_else {

lib/rivet/src/checker/mod.ri

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ pub struct Checker {
164164
value_type := tuple_info.types[i];
165165
if vd.has_type {
166166
self.check_types(value_type, vd.type) catch |err| {
167-
errb := report.error_builder(
167+
mut errb := report.error_builder(
168168
err.to_string(), right.position()
169169
);
170170
errb.add_note("in element {} of tuple value", i);
@@ -201,7 +201,7 @@ pub struct Checker {
201201
for sym in scope.syms {
202202
if sym is ast.Var(var_info) {
203203
if !var_info.is_used && !var_info.name.starts_with("_") {
204-
warn_b := report.warn_builder(
204+
mut warn_b := report.warn_builder(
205205
if var_info.level == .Receiver {
206206
"receiver `self` is not used"
207207
} else {
@@ -219,7 +219,7 @@ pub struct Checker {
219219
);
220220
warn_b.emit();
221221
} else if var_info.is_mut && !var_info.is_changed {
222-
warn_b := report.warn_builder(
222+
mut warn_b := report.warn_builder(
223223
if var_info.level == .Receiver {
224224
"receiver `self` does not need to be mutable"
225225
} else {

lib/rivet/src/parser/decls.ri

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ extend Parser {
1414
}
1515

1616
pub func parse_attributes(^mut self, parse_mod_attributes: bool := false) -> ast.Attributes {
17-
attributes := ast.Attributes();
17+
mut attributes := ast.Attributes();
1818
while self.accept(.Hash) {
1919
if parse_mod_attributes {
2020
self.expect(.Bang);
@@ -477,9 +477,9 @@ extend Parser {
477477
sc.detached_from_parent = true;
478478
self.expect(.Lparen);
479479
if self.tok.kind != .Rparen {
480-
// receiver (`self`|`mut self`|`&self`|`&mut self`|`^self`|`^mut self`)
480+
// receiver (`self`|`&self`|`&mut self`|`^self`|`^mut self`)
481481
if self.tok.kind == .KwSelf || (
482-
self.tok.kind in [.Amp, .KwMut, .Xor]
482+
self.tok.kind in [.Amp, .Xor]
483483
&& self.peek_tok.kind in [.KwMut, .KwSelf]
484484
) {
485485
is_method = true;
@@ -488,7 +488,7 @@ extend Parser {
488488
self_is_boxed = !self_is_ptr && self.accept(.Xor);
489489
self_is_mut = self.accept(.KwMut);
490490
self.expect(.KwSelf);
491-
if self_is_mut || self_is_ptr || self_is_boxed {
491+
if self_is_ptr || self_is_boxed {
492492
self_pos += self.prev_tok.pos;
493493
}
494494
if self.tok.kind != .Rparen {

lib/rivet/src/parser/exprs.ri

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -712,7 +712,7 @@ extend Parser {
712712
);
713713
}
714714

715-
func parse_block_expr(^mut self) -> ^mut ast.Expr {
715+
func parse_block_expr(^mut self, accept_expr: bool := true) -> ^mut ast.Expr {
716716
// block expression
717717
self.open_scope();
718718
sc := self.scope;
@@ -726,7 +726,7 @@ extend Parser {
726726
mut expr := ^mut ast.Expr.Empty(self.tok.pos);
727727
while !self.accept(.Rbrace) {
728728
stmt := self.parse_stmt();
729-
if stmt is .Expr(stmt_expr) && self.prev_tok.kind != .Semicolon
729+
if accept_expr && stmt is .Expr(stmt_expr) && self.prev_tok.kind != .Semicolon
730730
&& self.tok.kind == .Rbrace {
731731
expr = stmt_expr;
732732
has_expr = true;

lib/rivet/src/parser/stmts.ri

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ extend Parser {
4444
mut has_else_stmt := false;
4545
else_stmt := if self.accept(.KwElse) {
4646
has_else_stmt = true;
47-
self.parse_stmt()
47+
self.parse_block_stmt()
4848
} else {
4949
^mut .Empty(self.tok.pos)
5050
};
@@ -81,7 +81,7 @@ extend Parser {
8181
}
8282
self.expect(.KwIn);
8383
iterable := self.parse_expr();
84-
stmt := self.parse_stmt();
84+
stmt := self.parse_block_stmt();
8585
self.close_scope();
8686
^mut .For(
8787
index: index, has_index: has_index, values: values,
@@ -108,7 +108,11 @@ extend Parser {
108108
self.expect(.Rparen);
109109
}
110110
pos := self.prev_tok.pos;
111-
expr := self.parse_expr();
111+
expr := if self.tok.kind == .Lbrace {
112+
self.parse_block_expr(false)
113+
} else {
114+
self.parse_expr()
115+
};
112116
if !(expr is .If || expr is .Match || expr is .Block) {
113117
self.expect(.Semicolon);
114118
}
@@ -148,4 +152,9 @@ extend Parser {
148152
}
149153
};
150154
}
155+
156+
func parse_block_stmt(^mut self) -> ^mut ast.Stmt {
157+
expr := self.parse_block_expr(false);
158+
return ^mut .Expr(expr, expr.position());
159+
}
151160
}

rivetc/src/parser.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -756,7 +756,7 @@ def parse_stmt(self):
756756
)
757757
pos = self.prev_tok.pos
758758
if self.tok.kind == Kind.Lbrace:
759-
expr = self.parse_block_expr()
759+
expr = self.parse_block_expr(False)
760760
else:
761761
expr = self.parse_expr()
762762
if expr.__class__ not in (ast.IfExpr, ast.MatchExpr, ast.Block):
@@ -1273,6 +1273,8 @@ def parse_block_expr(self, accept_expr = True):
12731273
expr = stmt.expr
12741274
else:
12751275
stmts.append(stmt)
1276+
else:
1277+
stmts.append(stmt)
12761278
self.close_scope()
12771279
self.inside_block = prev_inside_block
12781280
return ast.Block(sc, is_unsafe, stmts, expr, has_expr, pos)

0 commit comments

Comments
 (0)