mirror of
https://github.com/vlang/v.git
synced 2025-09-14 06:52:36 +03:00
compiler: fix #3973 by dealing with name mangling problem
This commit is contained in:
parent
d54843275f
commit
d8bcd13e86
5 changed files with 76 additions and 66 deletions
|
@ -366,7 +366,7 @@ fn (p mut Parser) name_expr() string {
|
|||
}
|
||||
// Unknown name, try prepending the module name to it
|
||||
// TODO perf
|
||||
else if !p.table.known_type(name) && !p.table.known_fn(name) && !p.table.known_const(name) && !is_c {
|
||||
else if !p.table.known_type(name) && !p.known_fn_in_mod(name) && !p.table.known_const(name) && !is_c {
|
||||
name = p.prepend_mod(name)
|
||||
}
|
||||
// re-check
|
||||
|
|
|
@ -384,6 +384,16 @@ fn (t &Table) known_fn(name string) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
fn (p &Parser) known_fn_in_mod(name string) bool {
|
||||
existing_fn := p.table.find_fn(name) or {
|
||||
return false
|
||||
}
|
||||
if (existing_fn.mod == p.mod || existing_fn.mod == 'builtin') {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
fn (t &Table) known_const(name string) bool {
|
||||
_ = t.find_const(name) or {
|
||||
return false
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue