mirror of
https://github.com/vlang/v.git
synced 2025-09-13 14:32:26 +03:00
38 lines
1.2 KiB
V
38 lines
1.2 KiB
V
// Copyright (c) 2020-2024 Joe Conigliaro. All rights reserved.
|
|
// Use of this source code is governed by an MIT license
|
|
// that can be found in the LICENSE file.
|
|
module builder
|
|
|
|
import v2.ast
|
|
import v2.parser
|
|
|
|
fn (mut b Builder) parse_files(files []string) []ast.File {
|
|
mut parser_reused := parser.Parser.new(b.pref)
|
|
mut ast_files := []ast.File{}
|
|
// parse builtin
|
|
if !b.pref.skip_builtin {
|
|
ast_files << parser_reused.parse_files(get_v_files_from_dir(b.pref.get_vlib_module_path('builtin')), mut
|
|
b.file_set)
|
|
// ast_files << parser_reused.parse_files(get_v_files_from_dir(b.pref.get_vlib_module_path('sync')), mut b.file_set)
|
|
}
|
|
// parse user files
|
|
ast_files << parser_reused.parse_files(files, mut b.file_set)
|
|
if b.pref.skip_imports {
|
|
return ast_files
|
|
}
|
|
// parse imports
|
|
mut parsed_imports := []string{}
|
|
for afi := 0; afi < ast_files.len; afi++ {
|
|
ast_file := ast_files[afi]
|
|
for mod in ast_file.imports {
|
|
if mod.name in parsed_imports {
|
|
continue
|
|
}
|
|
mod_path := b.pref.get_module_path(mod.name, ast_file.name)
|
|
ast_files << parser_reused.parse_files(get_v_files_from_dir(mod_path), mut
|
|
b.file_set)
|
|
parsed_imports << mod.name
|
|
}
|
|
}
|
|
return ast_files
|
|
}
|