Esempio n. 1
0
        /// <summary>
        /// Checking if the namespace definition name is unique per module/ module member.
        /// </summary>
        /// <param name="namespaceDefinition"></param>
        private void CheckNsDefDuplicates(NamespaceDefinition namespaceDefinition)
        {
            if (namespaceDefinition.Parent is Module parentModule)
            {
                var sameNsDefs = parentModule.NamespaceDefinitions.Where(n => n.Name == namespaceDefinition.Name);
                if (sameNsDefs.Count() > 1)
                {
                    Context.AddError(CompilerErrorFactory.DuplicateNsDefName(namespaceDefinition,
                                                                             _currentModule.FileName));
                }
                return;
            }

            if (namespaceDefinition.Parent is ModuleMember parentModuleMember)
            {
                var sameNsDefs = parentModuleMember.NamespaceDefinitions.Where(n => n.Name == namespaceDefinition.Name);
                if (sameNsDefs.Count() > 1)
                {
                    Context.AddError(CompilerErrorFactory.DuplicateNsDefName(namespaceDefinition,
                                                                             _currentModule.FileName));
                }
                return;
            }
            //var sameNsDefs =
            //    _namespaceResolver.ModuleMembersNsInfo.FindAll(
            //        n => (n.ModuleMember is DOM.Document && ((DOM.Document)n.ModuleMember).Name == document.Name)
            //             &&
            //             ((Module)document.Module).TargetFormat ==
            //             ((Module)((DOM.Document)n.ModuleMember).Module).TargetFormat
            //    );
            //if (sameNameDocuments.Count <= 1) return;
            //if (((Document)document).Module.ModuleDocument != document) //don't report error for module document
            //    Context.AddError(CompilerErrorFactory.DuplicateDocumentName((Document)document, _currentModule.FileName));
        }