mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
fmt: handle "it" in lambdas
This commit is contained in:
parent
2c75b1397c
commit
791fda16d3
@ -45,6 +45,7 @@ pub mut:
|
||||
mod2alias map[string]string // for `import time as t`, will contain: 'time'=>'t'
|
||||
use_short_fn_args bool
|
||||
it_name string // the name to replace `it` with
|
||||
inside_lambda bool
|
||||
}
|
||||
|
||||
pub fn fmt(file ast.File, table &table.Table, is_debug bool) string {
|
||||
@ -799,7 +800,7 @@ pub fn (mut f Fmt) expr(node ast.Expr) {
|
||||
if true {
|
||||
} else {
|
||||
}
|
||||
if node.name == 'it' && f.it_name != '' {
|
||||
if node.name == 'it' && f.it_name != '' && !f.inside_lambda { // allow `it` in lambdas
|
||||
f.write(f.it_name)
|
||||
} else if node.kind == .blank_ident {
|
||||
f.write('_')
|
||||
@ -1414,6 +1415,12 @@ pub fn (mut f Fmt) call_expr(node ast.CallExpr) {
|
||||
}
|
||||
}
|
||||
*/
|
||||
if node.name in ['map', 'filter'] {
|
||||
f.inside_lambda = true
|
||||
defer {
|
||||
f.inside_lambda = false
|
||||
}
|
||||
}
|
||||
if node.left is ast.Ident {
|
||||
left := node.left as ast.Ident
|
||||
// `time.now()` without `time imported` is processed as a method call with `time` being
|
||||
|
@ -5,6 +5,9 @@ struct Foo {
|
||||
y int = 5
|
||||
}
|
||||
|
||||
fn (f Foo) foo() {}
|
||||
|
||||
|
||||
struct Bar {
|
||||
Foo
|
||||
}
|
||||
@ -12,6 +15,7 @@ struct Bar {
|
||||
fn test_embed() {
|
||||
b := Bar{}
|
||||
assert b.x == 0
|
||||
//b.foo() // TODO methods
|
||||
}
|
||||
|
||||
fn test_embed_direct_access() {
|
||||
@ -54,4 +58,6 @@ struct BarGenericContainer {
|
||||
fn test_generic_embed() {
|
||||
b := BarGenericContainer{}
|
||||
assert b.BarGeneric.foo == 0
|
||||
assert b.foo == 0
|
||||
println('ok')
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user