public void ExitDocument(DOM.Antlr.Document node) { //Checking if the document's name is unique per format (json/xml) var sameNameDocuments = 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)); } }
public void EnterDocument(DOM.Antlr.Document node) { _currentModuleMember = node; _currentModuleMemberNsInfo = new NsInfo(_currentModuleMember); ModuleMembersNsInfo.Add(_currentModuleMemberNsInfo); }