Lines Matching defs:program
20 static void MergeExternalFilesIntoCompiledProgram(parser::Program *const program,
30 stmt->SetParent(program->Ast());
33 // source's import declaration certainly will be the same (and can be resolved) from the global program too
34 program->Ast()->Statements().emplace_back(stmt);
40 const parser::Program *const program)
60 for (const auto &srcIter : program->ExternalSources()) {
64 throwErrorIfPackagesConflict(program, extSrc);
66 for (const auto &srcIterCmp : program->ExternalSources()) {
89 static void ValidateNoImportComesFromSamePackage(const public_lib::Context *const ctx, parser::Program *const program,
95 packagePrograms.emplace_back(program);
109 bool PackageImplicitImport::Perform(public_lib::Context *const ctx, parser::Program *const program)
111 if (!program->IsPackageModule() || program->VarBinder()->IsGenStdLib()) {
116 ValidateFolderContainOnlySamePackageFiles(ctx, program);
118 auto &externalSources = program->ExternalSources();
119 if (externalSources.count(program->ModuleName()) == 0) {
124 auto &packagePrograms = externalSources.at(program->ModuleName());
132 MergeExternalFilesIntoCompiledProgram(program, packagePrograms);
133 ValidateNoImportComesFromSamePackage(ctx, program, packagePrograms);
135 // All entities were merged into the main program from the external sources of the same package,
137 externalSources.erase(program->ModuleName());