/// <summary> /// Checking if the document's name is unique in project. /// </summary> /// <param name="document"></param> private void CheckDocumentNameDuplicates(DOM.Document document) { var sameNameDocuments = _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 && ((DOM.Document)n.ModuleMember).Entities.Any(e => !(e is DOM.Comment)) ); 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)); } }
public override void OnDocument(Document node) { _blockStart = true; _blockState = new Stack <JsonGenerator.BlockState>(); //Checking if the document's name is unique per format (json/xml) var sameNameDocuments = _context.NamespaceResolver.ModuleMembersNsInfo.FindAll(n => (n.ModuleMember is DOM.Document && ((DOM.Document)n.ModuleMember).Name == node.Name) && ((DOM.Antlr.Module)node.Module).TargetFormat == ((DOM.Antlr.Module)((DOM.Document)n.ModuleMember).Module).TargetFormat ); if (sameNameDocuments.Count > 1) { if (sameNameDocuments.Count == 2) { //Reporting error for 2 documents (existing and new) var prevDoc = (DOM.Document)sameNameDocuments[0].ModuleMember; _context.AddError(CompilerErrorFactory.DuplicateDocumentName(prevDoc, prevDoc.Module.FileName)); } _context.AddError(CompilerErrorFactory.DuplicateDocumentName(node, _currentModule.FileName)); } base.OnDocument(node); }