fmt: handle "it" in lambdas
parent
2c75b1397c
commit
791fda16d3
|
@ -45,6 +45,7 @@ pub mut:
|
||||||
mod2alias map[string]string // for `import time as t`, will contain: 'time'=>'t'
|
mod2alias map[string]string // for `import time as t`, will contain: 'time'=>'t'
|
||||||
use_short_fn_args bool
|
use_short_fn_args bool
|
||||||
it_name string // the name to replace `it` with
|
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 {
|
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 {
|
if true {
|
||||||
} else {
|
} 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)
|
f.write(f.it_name)
|
||||||
} else if node.kind == .blank_ident {
|
} else if node.kind == .blank_ident {
|
||||||
f.write('_')
|
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 {
|
if node.left is ast.Ident {
|
||||||
left := node.left as ast.Ident
|
left := node.left as ast.Ident
|
||||||
// `time.now()` without `time imported` is processed as a method call with `time` being
|
// `time.now()` without `time imported` is processed as a method call with `time` being
|
||||||
|
|
|
@ -5,6 +5,9 @@ struct Foo {
|
||||||
y int = 5
|
y int = 5
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn (f Foo) foo() {}
|
||||||
|
|
||||||
|
|
||||||
struct Bar {
|
struct Bar {
|
||||||
Foo
|
Foo
|
||||||
}
|
}
|
||||||
|
@ -12,6 +15,7 @@ struct Bar {
|
||||||
fn test_embed() {
|
fn test_embed() {
|
||||||
b := Bar{}
|
b := Bar{}
|
||||||
assert b.x == 0
|
assert b.x == 0
|
||||||
|
//b.foo() // TODO methods
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_embed_direct_access() {
|
fn test_embed_direct_access() {
|
||||||
|
@ -54,4 +58,6 @@ struct BarGenericContainer {
|
||||||
fn test_generic_embed() {
|
fn test_generic_embed() {
|
||||||
b := BarGenericContainer{}
|
b := BarGenericContainer{}
|
||||||
assert b.BarGeneric.foo == 0
|
assert b.BarGeneric.foo == 0
|
||||||
|
assert b.foo == 0
|
||||||
|
println('ok')
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue