fmt: preserve local fn parameter, when a module const with the same name is declared
parent
bdf11d969a
commit
16455a7660
|
@ -46,6 +46,7 @@ pub mut:
|
|||
inside_lambda bool
|
||||
inside_const bool
|
||||
is_mbranch_expr bool // match a { x...y { } }
|
||||
fn_scope &ast.Scope = voidptr(0)
|
||||
}
|
||||
|
||||
pub fn fmt(file ast.File, table &ast.Table, pref &pref.Preferences, is_debug bool) string {
|
||||
|
@ -879,6 +880,11 @@ pub fn (mut f Fmt) anon_fn(node ast.AnonFn) {
|
|||
}
|
||||
|
||||
fn (mut f Fmt) fn_body(node ast.FnDecl) {
|
||||
prev_fn_scope := f.fn_scope
|
||||
f.fn_scope = node.scope
|
||||
defer {
|
||||
f.fn_scope = prev_fn_scope
|
||||
}
|
||||
if node.language == .v {
|
||||
if !node.no_body {
|
||||
f.write(' {')
|
||||
|
@ -1710,12 +1716,18 @@ pub fn (mut f Fmt) ident(node ast.Ident) {
|
|||
} else if node.kind == .blank_ident {
|
||||
f.write('_')
|
||||
} else {
|
||||
mut is_local := false
|
||||
if !isnil(f.fn_scope) {
|
||||
if _ := f.fn_scope.find_var(node.name) {
|
||||
is_local = true
|
||||
}
|
||||
}
|
||||
if !is_local && !node.name.contains('.') && !f.inside_const {
|
||||
// Force usage of full path to const in the same module:
|
||||
// `println(minute)` => `println(time.minute)`
|
||||
// This makes it clear that a module const is being used
|
||||
// (since V's consts are no longer ALL_CAP).
|
||||
// ^^^ except for `main`, where consts are allowed to not have a `main.` prefix.
|
||||
if !node.name.contains('.') && !f.inside_const {
|
||||
mod := f.cur_mod
|
||||
full_name := mod + '.' + node.name
|
||||
if obj := f.file.global_scope.find(full_name) {
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
module xyz
|
||||
|
||||
const params = []string{}
|
||||
|
||||
pub fn abc(params []string) {
|
||||
if params.len > 5 {
|
||||
println('more')
|
||||
}
|
||||
for x in params {
|
||||
println(x)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue