Test for import attributes.
auto visitor = visitImports(q{ public import foo; public static import bar; }); auto ids = visitor.importGroups[0]; assert(ids[0].name == "foo"); assert(equal(ids[0].attrs, ["public"])); assert(ids[1].name == "bar"); assert(equal(ids[1].attrs, ["public", "static"]));
Test for multiple modules and binding.
auto visitor = visitImports(q{ import foo, bar : aa, bb, cc; }); auto ids = visitor.importGroups[0]; assert(ids[0].name == "foo"); assert(ids[0].bindNames.empty); assert(ids[1].name == "bar"); assert(equal(ids[1].bindNames, ["aa", "bb", "cc"])); // Test opCmp in sort. sort(ids); assert(ids[0].name == "bar"); assert(ids[1].name == "foo");
Test for merging redundant modules.
auto visitor = visitImports(q{ import foo : bar; import foo : baz, bar; }); assert(visitor.outputImports(visitor.importGroups[0]) == "import foo : bar, baz;");
Test for modules with attributes.
auto visitor = visitImports(q{ import foo : bar; static import foo; public import foo : bar; public import foo : baz; import bar; }); writeln(visitor.outputImports(visitor.importGroups[0])); assert(visitor.outputImports(visitor.importGroups[0]) == q{ import bar; import foo : bar; public import foo : bar, baz; static import foo; }.strip);
Decomposes multi module import decl to a list of single module with binds.