Search in sources :

Example 81 with Module

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());
}
Also used : ErrorCollector(org.eclipse.ceylon.compiler.java.test.ErrorCollector) CompilerError(org.eclipse.ceylon.compiler.java.test.CompilerError) CeyloncTaskImpl(org.eclipse.ceylon.compiler.java.tools.CeyloncTaskImpl) Module(org.eclipse.ceylon.model.typechecker.model.Module) Test(org.junit.Test)

Example 82 with Module

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);
}
Also used : Module(org.eclipse.ceylon.model.typechecker.model.Module)

Example 83 with 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;
}
Also used : ReflectionModule(org.eclipse.ceylon.model.loader.impl.reflect.model.ReflectionModule) LazyModule(org.eclipse.ceylon.model.loader.model.LazyModule) ReflectionModule(org.eclipse.ceylon.model.loader.impl.reflect.model.ReflectionModule) Module(org.eclipse.ceylon.model.typechecker.model.Module) LazyModule(org.eclipse.ceylon.model.loader.model.LazyModule)

Example 84 with 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;
    }
}
Also used : RuntimeModelLoader(org.eclipse.ceylon.compiler.java.runtime.model.RuntimeModelLoader) LazyModule(org.eclipse.ceylon.model.loader.model.LazyModule) ReflectionModule(org.eclipse.ceylon.model.loader.impl.reflect.model.ReflectionModule) Module(org.eclipse.ceylon.model.typechecker.model.Module) Unit(org.eclipse.ceylon.model.typechecker.model.Unit) LazyModule(org.eclipse.ceylon.model.loader.model.LazyModule)

Example 85 with Module

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);
        }
    }
}
Also used : ModuleImport(org.eclipse.ceylon.model.typechecker.model.ModuleImport) LazyModule(org.eclipse.ceylon.model.loader.model.LazyModule) ReflectionModule(org.eclipse.ceylon.model.loader.impl.reflect.model.ReflectionModule) Module(org.eclipse.ceylon.model.typechecker.model.Module) ArtifactResult(org.eclipse.ceylon.model.cmr.ArtifactResult)

Aggregations

Module (org.eclipse.ceylon.model.typechecker.model.Module)113 LazyModule (org.eclipse.ceylon.model.loader.model.LazyModule)37 Package (org.eclipse.ceylon.model.typechecker.model.Package)26 ModuleImport (org.eclipse.ceylon.model.typechecker.model.ModuleImport)25 Declaration (org.eclipse.ceylon.model.typechecker.model.Declaration)20 TypeDeclaration (org.eclipse.ceylon.model.typechecker.model.TypeDeclaration)19 ArrayList (java.util.ArrayList)18 TypedDeclaration (org.eclipse.ceylon.model.typechecker.model.TypedDeclaration)16 File (java.io.File)14 Type (org.eclipse.ceylon.model.typechecker.model.Type)14 HashMap (java.util.HashMap)9 HashSet (java.util.HashSet)9 FunctionalInterfaceType (org.eclipse.ceylon.model.loader.mirror.FunctionalInterfaceType)9 UnknownType (org.eclipse.ceylon.model.typechecker.model.UnknownType)9 Test (org.junit.Test)9 Value (org.eclipse.ceylon.model.typechecker.model.Value)8 LinkedList (java.util.LinkedList)7 List (java.util.List)7 Backends (org.eclipse.ceylon.common.Backends)7 ClassMirror (org.eclipse.ceylon.model.loader.mirror.ClassMirror)7