1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

checker: check for module name duplicates

This commit is contained in:
Turiiya 2023-05-08 12:30:09 +02:00
parent 14db4a38a9
commit 22202ef680
2 changed files with 9 additions and 0 deletions

View File

@ -355,6 +355,9 @@ fn (mut c Checker) assign_stmt(mut node ast.AssignStmt) {
c.warn('duplicate of a const name `${full_name}`', left.pos) c.warn('duplicate of a const name `${full_name}`', left.pos)
} }
} }
if left.mod == left.name && !c.file.path.contains('vlib') {
c.error('duplicate of an module name `${left.name}`', left.pos)
}
// Check if variable name is already registered as imported module symbol // Check if variable name is already registered as imported module symbol
if c.check_import_sym_conflict(left.name) { if c.check_import_sym_conflict(left.name) {
c.error('duplicate of an import symbol `${left.name}`', left.pos) c.error('duplicate of an import symbol `${left.name}`', left.pos)

View File

@ -256,11 +256,17 @@ fn (mut c Checker) fn_decl(mut node ast.FnDecl) {
} }
} }
} }
if node.mod == param.name && !c.file.path.contains('vlib') {
c.error('duplicate of an module name `${param.name}`', param.pos)
}
// Check if parameter name is already registered as imported module symbol // Check if parameter name is already registered as imported module symbol
if c.check_import_sym_conflict(param.name) { if c.check_import_sym_conflict(param.name) {
c.error('duplicate of an import symbol `${param.name}`', param.pos) c.error('duplicate of an import symbol `${param.name}`', param.pos)
} }
} }
if node.mod == node.short_name && !c.file.path.contains('vlib') && node.mod != 'main' {
c.error('duplicate of an module name `${node.short_name}`', node.pos)
}
// Check if function name is already registered as imported module symbol // Check if function name is already registered as imported module symbol
if !node.is_method && c.check_import_sym_conflict(node.short_name) { if !node.is_method && c.check_import_sym_conflict(node.short_name) {
c.error('duplicate of an import symbol `${node.short_name}`', node.pos) c.error('duplicate of an import symbol `${node.short_name}`', node.pos)