36#include <gtest/gtest.h>
82 Compiler_Module_Resolution_Issue_Kind::Missing_Dependency);
83 EXPECT_EQ(result.issues.access(0).module_name,
"main.aw");
84 EXPECT_EQ(result.issues.access(0).dependency_name,
"missing.aw");
94 modules.
append(std::move(a));
99 modules.
append(std::move(b));
105 Compiler_Module_Resolution_Issue_Kind::Cyclic_Dependency);
106 EXPECT_EQ(result.issues.access(0).module_name,
"b.aw");
107 EXPECT_EQ(result.issues.access(0).dependency_name,
"a.aw");
116 a.
imports.append({
"b.aw", {}});
117 modules.
append(std::move(a));
121 b.
imports.append({
"a.aw", {}});
122 modules.
append(std::move(b));
137 Compiler_Module_Resolution_Issue_Kind::Cyclic_Dependency);
157 Compiler_Module_Resolution_Issue_Kind::Cyclic_Dependency);
158 EXPECT_EQ(result.issues.access(0).module_name,
"self.aw");
159 EXPECT_EQ(result.issues.access(0).dependency_name,
"self.aw");
Reusable source-name module dependency resolution helpers.
T & access(const size_t i) const noexcept
Fast access without checking allocation and bound_min_clock checking.
T & append()
Allocate a new entry to the end of array.
size_t blossom_maximum_cardinality_matching(const GT &g, DynDlist< typename GT::Arc * > &matching, SA sa=SA())
Alias of compute_maximum_cardinality_general_matching().
Main namespace for Aleph-w library functions.
std::string compiler_render_module_order(const DynArray< size_t > &order, const DynArray< Compiler_Module_Descriptor > &modules)
Renders one deterministic text artifact for a module order.
Compiler_Module_Resolution_Result compiler_resolve_module_order(const DynArray< Compiler_Module_Descriptor > &modules)
Resolves one dependency-first order for exact-name module imports.
One module descriptor consumed by the reusable resolver.
DynArray< Compiler_Module_Dependency > imports
Ordered dependency list.
std::string name
Stable module/source name.