V: Incorrect order of defer

Created on 10 Jan 2020  路  6Comments  路  Source: vlang/v

module main

fn main() {
    println('Hello World !')
    defer {
        println("deffer 1")
    }
    {
        defer {
            println("defer 0") 
            defer {
                println("defer inner")
            }
        }
    }
}

defer in defer should be build error.

Bug Compiler

All 6 comments

What's the current output of the code?

Hello World !
defer 0
defer inner
deffer 1

I'm not sure we should disable nested defers due to lambdas landing soon...

module main

fn main() {
println('Hello World !')
defer {
println("deffer 1")
}
{
defer {
println("defer 0")
defer {
println("defer inner")
}
}
}
}

we need nested defers but the run order is not right .i had saw that is implemented ,but in that case need is in defer and the result is not right ."println("defer inner") should run before println("defer 0").

The current (v 0.1.27) output is:

Hello World !
deffer 1
defer 0

Was this page helpful?
0 / 5 - 0 ratings

Related issues

lobotony picture lobotony  路  3Comments

clpo13 picture clpo13  路  3Comments

PavelVozenilek picture PavelVozenilek  路  3Comments

choleraehyq picture choleraehyq  路  3Comments

vtereshkov picture vtereshkov  路  3Comments