void CollectMembers(string code, string memberName, bool includeOverloads = true)
		{
			StringBuilder sb = new StringBuilder();
			List<int> offsets = new List<int>();
			foreach (var ch in code) {
				if (ch == '$') {
					offsets.Add(sb.Length);
					continue;
				}
				sb.Append(ch);
			}
			var syntaxTree = SyntaxTree.Parse(sb.ToString (), "test.cs");
			var unresolvedFile = syntaxTree.ToTypeSystem();
			var compilation = TypeSystemHelper.CreateCompilation(unresolvedFile);

			var symbol = FindReferencesTest.GetSymbol(compilation, memberName);
			var col = new SymbolCollector();
			col.IncludeOverloads = includeOverloads;
			col.GroupForRenaming = true;

			var result = col.GetRelatedSymbols (new Lazy<TypeGraph>(() => new TypeGraph (compilation.Assemblies)),
			                                   symbol);
			if (offsets.Count != result.Count()) {
				foreach (var a in result)
					Console.WriteLine(a);
			}
			Assert.AreEqual(offsets.Count, result.Count());
			var doc = new ReadOnlyDocument(sb.ToString ());
			result
				.Select(r => doc.GetOffset ((r as IEntity).Region.Begin))
				.SequenceEqual(offsets);
		}
Esempio n. 2
0
        void CollectMembers(string code, string memberName, bool includeOverloads = true)
        {
            StringBuilder sb      = new StringBuilder();
            List <int>    offsets = new List <int>();

            foreach (var ch in code)
            {
                if (ch == '$')
                {
                    offsets.Add(sb.Length);
                    continue;
                }
                sb.Append(ch);
            }
            var syntaxTree     = SyntaxTree.Parse(sb.ToString(), "test.cs");
            var unresolvedFile = syntaxTree.ToTypeSystem();
            var compilation    = TypeSystemHelper.CreateCompilation(unresolvedFile);

            var symbol = FindReferencesTest.GetSymbol(compilation, memberName);
            var col    = new SymbolCollector();

            col.IncludeOverloads = includeOverloads;
            col.GroupForRenaming = true;

            var result = col.GetRelatedSymbols(new Lazy <TypeGraph>(() => new TypeGraph(compilation.Assemblies)),
                                               symbol);

            if (offsets.Count != result.Count())
            {
                foreach (var a in result)
                {
                    Console.WriteLine(a);
                }
            }
            Assert.AreEqual(offsets.Count, result.Count());
            var doc = new ReadOnlyDocument(sb.ToString());

            result
            .Select(r => doc.GetOffset((r as IEntity).Region.Begin))
            .SequenceEqual(offsets);
        }
		IEnumerable<ISymbol> GetRelatedSymbols(ISymbol entity)
		{
			var typeGraph = new Lazy<TypeGraph>(() => new TypeGraph(new [] { compilation.MainAssembly }));
			var symbolCollector = new SymbolCollector();
			return symbolCollector.GetRelatedSymbols(typeGraph, entity);
		}
Esempio n. 4
0
        IList<AstNode> Rename(string fullyQualifiedName, string newName, bool includeOverloads)
        {
            var sym = GetSymbol(compilation, fullyQualifiedName);
            Assert.NotNull(sym);
            var graph = new TypeGraph(compilation.Assemblies);
            var col = new SymbolCollector();
            col.IncludeOverloads = includeOverloads;
            col.GroupForRenaming = true;
            var scopes = findReferences.GetSearchScopes(col.GetRelatedSymbols(graph, sym));
            List<AstNode> result = new List<AstNode>();

            findReferences.RenameReferencesInFile(
                scopes,
                newName,
                new CSharpAstResolver(compilation, syntaxTree, unresolvedFile),
                delegate(RenameCallbackArguments obj) {
                    result.Add (obj.NodeToReplace);
                },
                delegate(Error obj) {

                });
            return result;
        }