fmt,parser: prevent unknown module error (#10004)
parent
99a2fd76c8
commit
8c44873674
|
@ -3,6 +3,7 @@ module module_fmt
|
||||||
pub struct MyStruct {
|
pub struct MyStruct {
|
||||||
mut:
|
mut:
|
||||||
value int
|
value int
|
||||||
|
foo mod.Foo
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (m MyStruct) foo() bool {
|
pub fn (m MyStruct) foo() bool {
|
||||||
|
|
|
@ -342,7 +342,7 @@ pub fn (mut p Parser) parse_any_type(language ast.Language, is_ptr bool, check_d
|
||||||
p.next()
|
p.next()
|
||||||
p.check(.dot)
|
p.check(.dot)
|
||||||
}
|
}
|
||||||
if !p.known_import(mod) {
|
if !p.known_import(mod) && !p.pref.is_fmt {
|
||||||
mut msg := 'unknown module `$mod`'
|
mut msg := 'unknown module `$mod`'
|
||||||
if mod.len > mod_last_part.len && p.known_import(mod_last_part) {
|
if mod.len > mod_last_part.len && p.known_import(mod_last_part) {
|
||||||
msg += '; did you mean `$mod_last_part`?'
|
msg += '; did you mean `$mod_last_part`?'
|
||||||
|
@ -352,9 +352,10 @@ pub fn (mut p Parser) parse_any_type(language ast.Language, is_ptr bool, check_d
|
||||||
}
|
}
|
||||||
if mod in p.imports {
|
if mod in p.imports {
|
||||||
p.register_used_import(mod)
|
p.register_used_import(mod)
|
||||||
|
mod = p.imports[mod]
|
||||||
}
|
}
|
||||||
// prefix with full module
|
// prefix with full module
|
||||||
name = '${p.imports[mod]}.$p.tok.lit'
|
name = '${mod}.$p.tok.lit'
|
||||||
if p.tok.lit.len > 0 && !p.tok.lit[0].is_capital() {
|
if p.tok.lit.len > 0 && !p.tok.lit[0].is_capital() {
|
||||||
p.error('imported types must start with a capital letter')
|
p.error('imported types must start with a capital letter')
|
||||||
return 0
|
return 0
|
||||||
|
|
Loading…
Reference in New Issue