use of org.eclipse.ceylon.model.typechecker.model.Module in project ceylon by eclipse.
the class CMRTests method testOverridesCeylonModuleInSourceImport.
@Test
public void testOverridesCeylonModuleInSourceImport() {
setupBinaryModulesForOverridesCeylonModuleTests();
ErrorCollector collector = new ErrorCollector();
CeyloncTaskImpl compilerTask = getCompilerTask(Arrays.asList("-continue", "-src", getPackagePath() + "/modules", "-overrides", getPackagePath() + "modules/overridesCeylonModule/overrides-a-version.xml"), collector, "modules/overridesCeylonModule/module.ceylon");
ModulesRetriever modulesRetriever = new ModulesRetriever(compilerTask.getContext());
compilerTask.setTaskListener(modulesRetriever);
Boolean result = compilerTask.call();
Assert.assertEquals(Boolean.TRUE, result);
compareErrors(collector.get(Diagnostic.Kind.WARNING), new CompilerError(Kind.WARNING, null, 1, "all-lowercase ASCII module names are recommended"), new CompilerError(Kind.WARNING, null, 2, "project source module import is overridden in module overrides file: 'a/2' overrides 'a/1'"));
assert (modulesRetriever.modules != null);
Module a = modulesRetriever.modules.get("a");
Module b = modulesRetriever.modules.get("b");
Module c = modulesRetriever.modules.get("c");
assert (a != null);
assert (b != null);
assert (c != null);
assertEquals("The version override should not be applied to modules imported in source code", "2", a.getVersion());
assertEquals("The version override should not be applied to modules imported in source code", "2", b.getVersion());
assertEquals("The version override should not be applied to modules imported in source code", "2", c.getVersion());
}
use of org.eclipse.ceylon.model.typechecker.model.Module in project ceylon by eclipse.
the class CeylonDocToolTests method getOutputDir.
private File getOutputDir(CeylonDocTool tool, String moduleName, String moduleVersion) {
Module module = new Module();
module.setName(Arrays.asList(moduleName));
module.setVersion(moduleVersion);
return getOutputDir(tool, module);
}
use of org.eclipse.ceylon.model.typechecker.model.Module in project ceylon by eclipse.
the class RuntimeModuleManager method createModule.
@Override
protected Module createModule(List<String> moduleName, String version) {
Module module;
module = new ReflectionModule(this);
module.setName(moduleName);
module.setVersion(version);
if (module instanceof ReflectionModule)
setupIfJDKModule((LazyModule) module);
return module;
}
use of org.eclipse.ceylon.model.typechecker.model.Module in project ceylon by eclipse.
the class RuntimeModuleManager method loadModule.
public boolean loadModule(String name, String version, ArtifactResult artifact, ClassLoader classLoader, boolean staticMetamodel) {
RuntimeModelLoader modelLoader = getModelLoader();
synchronized (modelLoader.getLock()) {
manualMetamodelSetup = true;
Module module = getOrCreateModule(splitModuleName(name), version);
// ones setting the module's Unit
if (module.isDefaultModule() ? module.getUnit() != null : module.isAvailable())
return false;
modelLoader.addModuleToClassPath(module, artifact);
modelLoader.addModuleClassLoader(module, classLoader);
module.setAvailable(true);
Unit u = new Unit();
u.setFilename(artifact.name());
if (artifact.artifact() != null) {
u.setFullPath(artifact.artifact().getAbsolutePath());
}
module.setUnit(u);
if (module.isLanguageModule())
modelLoader.loadPackageDescriptors();
if (!module.isDefaultModule()) {
// FIXME: dependencies of Ceylon modules?
if (!modelLoader.loadCompiledModule(module, !staticMetamodel)) {
// we didn't find module.class so it must be a java module if it's not the default module
((LazyModule) module).setJava(true);
module.setNativeBackends(Backend.Java.asSet());
// Java modules must have their dependencies set by the artifact result, as there is no module info in the jar
loadModuleImportsFromArtifact(module, artifact);
} else if (staticMetamodel) {
// for a static metamodel we get the dependencies from the artifact too
loadModuleImportsFromArtifact(module, artifact);
}
}
return true;
}
}
use of org.eclipse.ceylon.model.typechecker.model.Module in project ceylon by eclipse.
the class RuntimeModuleManager method loadModuleImportsFromArtifact.
private void loadModuleImportsFromArtifact(Module module, ArtifactResult artifact) {
for (ArtifactResult dep : artifact.dependencies()) {
Module dependency = getOrCreateModule(splitModuleName(dep.name()), dep.version());
ModuleImport depImport = findImport(module, dependency);
// FIXME: exclude optionals and TEST deps?
if (depImport == null) {
ModuleImport moduleImport = new ModuleImport(dep.namespace(), dependency, dep.optional(), dep.exported(), Backend.Java);
module.addImport(moduleImport);
}
}
}
Aggregations