예제 #1
0
 public BooScope(CompiledProject compiledProject, BooSource source, ParseRequest parseRequest, ParseRequestProcessor parseRequestProcessor)
 {
     this.source = source;
     declarations = new DeclarationFinder(compiledProject, source, parseRequest.FileName);
     this.parseRequest = parseRequest;
     this.parseRequestProcessor = parseRequestProcessor;
 }
예제 #2
0
파일: ClassService.cs 프로젝트: dmikov/R4T4
        /// <summary>
        /// Initializes a new instance of the <see cref="ClassService"/> class.
        /// </summary>
        /// <param name="project">The project.</param>
        public ClassService(CompiledProject project)
        {
            var classes = project.Compilation.SyntaxTrees
                          .Select(s => project.Compilation.GetSemanticModel(s))
                          .SelectMany(s => s.SyntaxTree.GetRoot()
                                      .DescendantNodes()
                                      .OfType <ClassDeclarationSyntax>()
                                      .Select(c => (s.GetDeclaredSymbol(c) as INamedTypeSymbol, GetBaseClasses(s, c))))
                          .ToImmutableList();

            foreach (var c in classes.Where(c => c.Item1 != null))
            {
                _classes[c.Item1.GetFullTypeString()] = c.Item1;
                foreach (var namedTypeSymbol in c.Item2)
                {
                    var baseType = namedTypeSymbol.GetFullTypeString();
                    if (!_bases.ContainsKey(baseType))
                    {
                        _bases[baseType] = new List <INamedTypeSymbol>();
                    }
                    _bases[baseType].Add(c.Item1);
                }
            }
        }
예제 #3
0
 public CompilationOutput(CompiledProject project, CaretLocation caretLocation)
 {
     this.project = project;
     this.caretLocation = caretLocation;
 }
예제 #4
0
 public BooScope(CompiledProject compiledProject, BooSource source, ParseRequest parseRequest, Methods methods, ParseRequestProcessor parseRequestProcessor)
     : this(compiledProject, source, parseRequest, parseRequestProcessor)
 {
     this.methods = methods;
 }
예제 #5
0
 public BooScope(CompiledProject compiledProject, BooSource source, string fileName)
 {
     declarations = new DeclarationFinder(compiledProject, source, fileName);
 }
예제 #6
0
 public DeclarationFinder(CompiledProject compiledProject, ILineView lineView, string fileName)
 {
     this.compiledProject = compiledProject;
     this.lineView = lineView;
     this.fileName = fileName;
 }
예제 #7
0
 public DeclarationFinder(CompiledProject compiledProject, ISource source, string fileName)
 {
     this.compiledProject = compiledProject;
     this.source = source;
     this.fileName = fileName;
 }
예제 #8
0
 /// <summary>
 /// Resets the compiled project, so it'll be recompiled on the next call.
 /// </summary>
 private void ResetCompiledProject()
 {
     compiledProject = null;
 }
예제 #9
0
        /// <summary>
        /// Iterates the files and compiles them en-masse.
        /// </summary>
        private void Compile()
        {
            var compiler = new BooDocumentCompiler();

            files.ForEach(f => compiler.AddSource(f.Path, f.Source));
            references.ForEach(r => compiler.AddReference(r));

            compiledProject = compiler.Compile();

            files.ForEach(f => f.IsDirty = false);
        }