Exemplo n.º 1
0
        //TODO: This method (and all callers) should take an ITextView instead of an IDocumentViewer as a parameter
        List <ILCodeBreakpoint> GetILCodeBreakpoints(IDocumentViewer documentViewer, IList <MethodSourceStatement> methodStatements)
        {
            var list = new List <ILCodeBreakpoint>();

            if (methodStatements.Count == 0)
            {
                return(list);
            }
            var service = documentViewer.TryGetMethodDebugService();

            if (service == null)
            {
                return(list);
            }
            var methodStatement = methodStatements[0];

            foreach (var ilbp in GetILCodeBreakpoints())
            {
                var info = service.TryGetMethodDebugInfo(ilbp.MethodToken);
                if (info == null)
                {
                    continue;
                }
                var statement = info.GetSourceStatementByCodeOffset(ilbp.ILOffset);
                if (statement == null)
                {
                    continue;
                }
                if (statement.Value.TextSpan != methodStatement.Statement.TextSpan)
                {
                    continue;
                }

                list.Add(ilbp);
            }

            return(list);
        }
Exemplo n.º 2
0
 /// <summary>
 /// Gets a <see cref="IMethodDebugService"/> instance
 /// </summary>
 /// <param name="self">This</param>
 /// <returns></returns>
 public static IMethodDebugService GetMethodDebugService(this IDocumentViewer self) => self.TryGetMethodDebugService() ?? EmptyMethodDebugService.Instance;
Exemplo n.º 3
0
		//TODO: This method (and all callers) should take an ITextView instead of an IDocumentViewer as a parameter
		List<ILCodeBreakpoint> GetILCodeBreakpoints(IDocumentViewer documentViewer, IList<MethodSourceStatement> methodStatements) {
			var list = new List<ILCodeBreakpoint>();
			if (methodStatements.Count == 0)
				return list;
			var service = documentViewer.TryGetMethodDebugService();
			if (service == null)
				return list;
			var methodStatement = methodStatements[0];
			foreach (var ilbp in GetILCodeBreakpoints()) {
				var info = service.TryGetMethodDebugInfo(ilbp.MethodToken);
				if (info == null)
					continue;
				var statement = info.GetSourceStatementByCodeOffset(ilbp.ILOffset);
				if (statement == null)
					continue;
				if (statement.Value.TextSpan != methodStatement.Statement.TextSpan)
					continue;

				list.Add(ilbp);
			}

			return list;
		}