Example #1
0
        public ModuleDefinition GetModuleDefinitionFromContent(
            ModuleDescriptor moduleDescriptor,
            ModuleRepository moduleRepository)
        {
            if (m_nameResolutionSemantics == NameResolutionSemantics.ImplicitProjectReferences && moduleDescriptor.Name != PreludeName)
            {
                var moduleConfigurationPath = moduleRepository.RootDir.Combine(moduleRepository.PathTable, Names.ModuleConfigBm);

                return(ModuleDefinition.CreateModuleDefinitionWithImplicitReferences(
                           moduleDescriptor,
                           moduleRepository.RootDir,
                           moduleConfigurationPath,
                           moduleRepository.GetAllPathsForModule(moduleDescriptor),
                           allowedModuleDependencies: null,
                           cyclicalFriendModules: moduleRepository.GetAllModules().Select(
                               descriptor => ModuleReferenceWithProvenance.FromNameAndPath(descriptor.Name, moduleConfigurationPath.ToString(PathTable))),
                           mounts: null));
            }

            return(ModuleDefinition.CreateModuleDefinitionWithExplicitReferencesWithEmptyQualifierSpace(
                       moduleDescriptor,
                       moduleRepository.RootDir.Combine(moduleRepository.PathTable, "FakeMainFile.dsc"),
                       moduleRepository.RootDir.Combine(moduleRepository.PathTable, Names.ModuleConfigBm),
                       moduleRepository.GetAllPathsForModule(moduleDescriptor),
                       PathTable));
        }
Example #2
0
        public void TestUpdateExternalModuleReference()
        {
            var content = @"const x = 42";

            var parser            = new Parser();
            var sourceFile        = parser.ParseSourceFileContent(content);
            var referenceResolver = new ModuleReferenceResolver(PathTable);

            var module =
                ModuleDefinition.CreateModuleDefinitionWithExplicitReferencesWithEmptyQualifierSpace(
                    ModuleDescriptor.CreateForTesting("Test"), m_fakeMainFile, m_fakeModuleConfigFile, new[] { m_fakeMainFile }, PathTable);
            Failure failure;
            var     result = referenceResolver.TryUpdateExternalModuleReference(sourceFile, module, out failure);

            XAssert.IsTrue(result);
            XAssert.IsTrue(sourceFile.ResolvedModules.ContainsKey("Test"));
        }
Example #3
0
        public void TestInternalReferencesOutsideModuleAreNotAllowed()
        {
            var content = "import * as Foo from \"./DoesNotExist.dsc\";";

            var parser            = new Parser();
            var sourceFile        = parser.ParseSourceFileContent(m_fakeMainFile.ToString(PathTable), content);
            var referenceResolver = new ModuleReferenceResolver(PathTable);

            var module = ModuleDefinition.CreateModuleDefinitionWithExplicitReferencesWithEmptyQualifierSpace(
                ModuleDescriptor.CreateForTesting("Test"),
                m_fakeMainFile,
                m_fakeModuleConfigFile,
                new[] { m_fakeMainFile },
                PathTable);

            Failure[] failures;
            var       result = referenceResolver.TryUpdateAllInternalModuleReferences(sourceFile, module, out failures);

            XAssert.IsFalse(result);
            XAssert.AreEqual(1, failures.Length);
            XAssert.IsTrue(failures[0] is SpecNotUnderAModuleFailure);
        }
Example #4
0
        public void TestUpdateInternalModuleReferences(string internalReference)
        {
            var content = "import * as Foo from \"" + internalReference + "\";";

            // We create a module with a fake main file at the root and one project under SubDir
            var projectDir = AbsolutePath.Create(PathTable, A("c", "SubDir", "project.dsc"));

            var parser            = new Parser();
            var sourceFile        = parser.ParseSourceFileContent(projectDir.ToString(PathTable), content);
            var referenceResolver = new ModuleReferenceResolver(PathTable);

            var module =
                ModuleDefinition.CreateModuleDefinitionWithExplicitReferencesWithEmptyQualifierSpace(
                    ModuleDescriptor.CreateForTesting("Test"), m_fakeMainFile, m_fakeModuleConfigFile, new[] { m_fakeMainFile, projectDir },
                    PathTable);

            Failure[] failures;
            var       result = referenceResolver.TryUpdateAllInternalModuleReferences(sourceFile, module, out failures);

            XAssert.IsTrue(result);
            XAssert.IsTrue(sourceFile.ResolvedModules.ContainsKey(internalReference));
        }