Skip to content

Commit be82b03

Browse files
authored
all: make defer{} scoped by default, use defer(fn){} to get the old behavior (part 3 of #25639) (#25665)
1 parent 0737af9 commit be82b03

File tree

12 files changed

+3
-26
lines changed

12 files changed

+3
-26
lines changed

vlib/v/gen/c/cgen.v

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2656,7 +2656,7 @@ fn (mut g Gen) stmt(node ast.Stmt) {
26562656
ast.DeferStmt {
26572657
mut defer_stmt := node
26582658
defer_stmt.ifdef = g.defer_ifdef
2659-
if defer_stmt.mode == .function || !g.pref.scoped_defer {
2659+
if defer_stmt.mode == .function {
26602660
g.writeln('${g.defer_flag_var(defer_stmt)} = true;')
26612661
}
26622662
g.defer_stmts << defer_stmt

vlib/v/gen/c/defer.v

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@ fn (mut g Gen) write_defer_stmts(scope &ast.Scope, lookup bool, pos token.Pos) {
2626
g.error('Gen.write_defer_stmts(): defer_stmt.scope is nil', pos)
2727
}
2828

29-
is_scoped := g.pref.scoped_defer && defer_stmt.mode == .scoped
30-
if is_scoped {
29+
if defer_stmt.mode == .scoped {
3130
if !((lookup && defer_stmt.scope.start_pos < scope.start_pos
3231
&& defer_stmt.scope.end_pos > scope.end_pos)
3332
|| defer_stmt.scope == scope) {

vlib/v/gen/c/fn.v

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -454,7 +454,7 @@ fn (mut g Gen) gen_fn_decl(node &ast.FnDecl, skip bool) {
454454
}
455455
g.indent++
456456
for defer_stmt in node.defer_stmts {
457-
if defer_stmt.mode != .function && g.pref.scoped_defer {
457+
if defer_stmt.mode != .function {
458458
continue
459459
}
460460
g.writeln('bool ${g.defer_flag_var(defer_stmt)} = false;')

vlib/v/pref/pref.v

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -260,8 +260,6 @@ pub mut:
260260
subsystem Subsystem // the type of the window app, that is going to be generated; has no effect on !windows
261261
is_vls bool
262262
json_errors bool // -json-errors, for VLS and other tools
263-
264-
scoped_defer bool // experimental support, is activated with `-scoped-defer`
265263
}
266264

267265
pub fn parse_args(known_external_commands []string, args []string) (&Preferences, string) {
@@ -764,10 +762,6 @@ pub fn parse_args_and_show_errors(known_external_commands []string, args []strin
764762
'-experimental' {
765763
res.experimental = true
766764
}
767-
'-scoped-defer' {
768-
// experimental, remove once defer is scoped by default
769-
res.scoped_defer = true
770-
}
771765
'-usecache' {
772766
res.use_cache = true
773767
}

vlib/v/tests/defer/defer_fixed_array_test.v

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
// vtest vflags: -scoped-defer
2-
31
fn foo() {
42
a := [u8(1), 2, 3]!
53
defer {

vlib/v/tests/defer/defer_if_comptime_test.v

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
// vtest vflags: -scoped-defer
2-
31
fn test_main() {
42
defer {
53
$if foo ? {

vlib/v/tests/defer/defer_return_test.v

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
// vtest vflags: -scoped-defer
2-
31
@[heap]
42
struct Hwe {
53
mut:

vlib/v/tests/defer/defer_static_test.v

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
// vtest vflags: -scoped-defer
2-
31
@[unsafe]
42
fn g() {
53
mut static levels := 0

vlib/v/tests/defer/defer_test.v

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
// vtest vflags: -scoped-defer
2-
31
fn foo() string {
42
println('foo()')
53
return 'foo'

vlib/v/tests/defer/defer_use_returned_value_test.v

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
// vtest vflags: -scoped-defer
2-
31
struct Test {
42
mut:
53
a int

0 commit comments

Comments
 (0)