internal CodexReferenceVisitor( CodexContext codex, CodexFile file, CodexDefinitionVisitor definitionVisitor) { m_codex = codex; m_file = file; m_definitionVisitor = definitionVisitor; m_currentReferenceKinds = new Stack <CodexId <CodexRefKind> >(); m_currentReferenceKinds.Push(m_codex.Reference); }
/// <summary> /// Performs the analysis. /// </summary> public override bool AnalyzeSourceFile(Workspace workspace, AbsolutePath path, ISourceFile sourceFile) { if (sourceFile.Text == null) { return(true); } var parsedModule = workspace.TryGetModuleBySpecFileName(path); var file = new CodexFile() { Path = path.ToString(PathTable), Length = sourceFile.End, Hash = path.ToString(PathTable), }; m_codex.Store.Files.Add(file); var moduleName = parsedModule.Descriptor.DisplayName.Replace(Names.ConfigModuleName, "RootConfig"); var project = m_codex.Store.Projects.Add(new CodexProject() { Name = $@"DominoScript_{moduleName}", Directory = parsedModule.Definition.Root.ToString(PathTable), PrimaryFile = parsedModule.Definition.MainFile.ToString(PathTable), }); var semanticModel = workspace.GetSemanticModel(); var definitionVisitor = new CodexDefinitionVisitor(m_codex, file, project, parsedModule.Descriptor.DisplayName, semanticModel, sourceFile); definitionVisitor.VisitSourceFile(); var visitor = new CodexReferenceVisitor(m_codex, file, definitionVisitor); visitor.VisitSourceFile(sourceFile); return(true); }