提交 ee699c5e 编写于 作者: C Charles Stoner 提交者: GitHub

Merge pull request #16539 from cston/366999

Allow CausalityBreakpoint in FunctionResolver.ShouldHandleRequest
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using Microsoft.VisualStudio.Debugger.Evaluation;
using System;
using System.Collections.Generic;
using System.Reflection.Metadata;
......@@ -117,11 +118,11 @@ internal void OnModuleLoad(TProcess process, TModule module, OnFunctionResolvedD
private bool ShouldHandleRequest(TRequest request)
{
var languageId = GetLanguageId(request);
if (languageId == Guid.Empty)
{
return true;
}
return languageId == LanguageId;
// Handle requests with no language id, a matching language id,
// or causality breakpoint requests (debugging web services).
return languageId == Guid.Empty ||
languageId == LanguageId ||
languageId == DkmLanguageId.CausalityBreakpoint;
}
private bool ShouldModuleHandleRequest(TModule module, string moduleName)
......
......@@ -217,8 +217,8 @@ public void ShouldEnableFunctionResolver()
}
/// <summary>
/// Should only handle requests with expected
/// language id or default language id.
/// Should only handle requests with expected language id or
/// default language id or causality breakpoints.
/// </summary>
[WorkItem(15119, "https://github.com/dotnet/roslyn/issues/15119")]
[Fact]
......@@ -231,6 +231,7 @@ public void LanguageId()
}";
var bytes = CreateCompilationWithMscorlib(source).EmitToArray();
var resolver = Resolver.CSharpResolver;
var unknownId = Guid.Parse("F02FB87B-64EC-486E-B039-D4A97F48858C");
var csharpLanguageId = Guid.Parse("3f5162f8-07c6-11d3-9053-00c04fa302a1");
var vbLanguageId = Guid.Parse("3a12d0b8-c26c-11d0-b442-00a0244a1dd2");
var cppLanguageId = Guid.Parse("3a12d0b7-c26c-11d0-b442-00a0244a1dd2");
......@@ -240,12 +241,18 @@ public void LanguageId()
using (var process = new Process(module))
{
var requestDefaultId = new Request(null, MemberSignatureParser.Parse("F"), Guid.Empty);
var requestUnknown = new Request(null, MemberSignatureParser.Parse("F"), unknownId);
var requestCausalityBreakpoint = new Request(null, MemberSignatureParser.Parse("F"), DkmLanguageId.CausalityBreakpoint);
var requestMethodId = new Request(null, MemberSignatureParser.Parse("F"), DkmLanguageId.MethodId);
var requestCSharp = new Request(null, MemberSignatureParser.Parse("F"), csharpLanguageId);
var requestVB = new Request(null, MemberSignatureParser.Parse("F"), vbLanguageId);
var requestCPP = new Request(null, MemberSignatureParser.Parse("F"), cppLanguageId);
resolver.EnableResolution(process, requestDefaultId);
VerifySignatures(requestDefaultId, "C.F()");
resolver.EnableResolution(process, requestUnknown);
VerifySignatures(requestUnknown);
resolver.EnableResolution(process, requestCausalityBreakpoint);
VerifySignatures(requestCausalityBreakpoint, "C.F()");
resolver.EnableResolution(process, requestMethodId);
VerifySignatures(requestMethodId);
resolver.EnableResolution(process, requestCSharp);
......@@ -261,6 +268,8 @@ public void LanguageId()
using (var process = new Process())
{
var requestDefaultId = new Request(null, MemberSignatureParser.Parse("F"), Guid.Empty);
var requestUnknown = new Request(null, MemberSignatureParser.Parse("F"), unknownId);
var requestCausalityBreakpoint = new Request(null, MemberSignatureParser.Parse("F"), DkmLanguageId.CausalityBreakpoint);
var requestMethodId = new Request(null, MemberSignatureParser.Parse("F"), DkmLanguageId.MethodId);
var requestCSharp = new Request(null, MemberSignatureParser.Parse("F"), csharpLanguageId);
var requestVB = new Request(null, MemberSignatureParser.Parse("F"), vbLanguageId);
......@@ -269,10 +278,14 @@ public void LanguageId()
resolver.EnableResolution(process, requestVB);
resolver.EnableResolution(process, requestCSharp);
resolver.EnableResolution(process, requestMethodId);
resolver.EnableResolution(process, requestCausalityBreakpoint);
resolver.EnableResolution(process, requestUnknown);
resolver.EnableResolution(process, requestDefaultId);
process.AddModule(module);
resolver.OnModuleLoad(process, module);
VerifySignatures(requestDefaultId, "C.F()");
VerifySignatures(requestUnknown);
VerifySignatures(requestCausalityBreakpoint, "C.F()");
VerifySignatures(requestMethodId);
VerifySignatures(requestCSharp, "C.F()");
VerifySignatures(requestVB);
......
......@@ -14,8 +14,8 @@ namespace Microsoft.CodeAnalysis.ExpressionEvaluator.UnitTests
public class VisualBasicFunctionResolverTests : FunctionResolverTestBase
{
/// <summary>
/// Should only handle requests with expected
/// language id or default language id.
/// Should only handle requests with expected language id or
/// default language id or causality breakpoints.
/// </summary>
[WorkItem(15119, "https://github.com/dotnet/roslyn/issues/15119")]
[Fact]
......@@ -28,6 +28,7 @@ public void LanguageId()
}";
var bytes = CreateCompilationWithMscorlib(source).EmitToArray();
var resolver = Resolver.VisualBasicResolver;
var unknownId = Guid.Parse("F02FB87B-64EC-486E-B039-D4A97F48858C");
var csharpLanguageId = Guid.Parse("3f5162f8-07c6-11d3-9053-00c04fa302a1");
var vbLanguageId = Guid.Parse("3a12d0b8-c26c-11d0-b442-00a0244a1dd2");
var cppLanguageId = Guid.Parse("3a12d0b7-c26c-11d0-b442-00a0244a1dd2");
......@@ -37,12 +38,18 @@ public void LanguageId()
using (var process = new Process(module))
{
var requestDefaultId = new Request(null, MemberSignatureParser.Parse("F"), Guid.Empty);
var requestUnknown = new Request(null, MemberSignatureParser.Parse("F"), unknownId);
var requestCausalityBreakpoint = new Request(null, MemberSignatureParser.Parse("F"), DkmLanguageId.CausalityBreakpoint);
var requestMethodId = new Request(null, MemberSignatureParser.Parse("F"), DkmLanguageId.MethodId);
var requestCSharp = new Request(null, MemberSignatureParser.Parse("F"), csharpLanguageId);
var requestVB = new Request(null, MemberSignatureParser.Parse("F"), vbLanguageId);
var requestCPP = new Request(null, MemberSignatureParser.Parse("F"), cppLanguageId);
resolver.EnableResolution(process, requestDefaultId);
VerifySignatures(requestDefaultId, "C.F()");
resolver.EnableResolution(process, requestUnknown);
VerifySignatures(requestUnknown);
resolver.EnableResolution(process, requestCausalityBreakpoint);
VerifySignatures(requestCausalityBreakpoint, "C.F()");
resolver.EnableResolution(process, requestMethodId);
VerifySignatures(requestMethodId);
resolver.EnableResolution(process, requestCSharp);
......@@ -58,6 +65,8 @@ public void LanguageId()
using (var process = new Process())
{
var requestDefaultId = new Request(null, MemberSignatureParser.Parse("F"), Guid.Empty);
var requestUnknown = new Request(null, MemberSignatureParser.Parse("F"), unknownId);
var requestCausalityBreakpoint = new Request(null, MemberSignatureParser.Parse("F"), DkmLanguageId.CausalityBreakpoint);
var requestMethodId = new Request(null, MemberSignatureParser.Parse("F"), DkmLanguageId.MethodId);
var requestCSharp = new Request(null, MemberSignatureParser.Parse("F"), csharpLanguageId);
var requestVB = new Request(null, MemberSignatureParser.Parse("F"), vbLanguageId);
......@@ -66,10 +75,14 @@ public void LanguageId()
resolver.EnableResolution(process, requestVB);
resolver.EnableResolution(process, requestCSharp);
resolver.EnableResolution(process, requestMethodId);
resolver.EnableResolution(process, requestCausalityBreakpoint);
resolver.EnableResolution(process, requestUnknown);
resolver.EnableResolution(process, requestDefaultId);
process.AddModule(module);
resolver.OnModuleLoad(process, module);
VerifySignatures(requestDefaultId, "C.F()");
VerifySignatures(requestUnknown);
VerifySignatures(requestCausalityBreakpoint, "C.F()");
VerifySignatures(requestMethodId);
VerifySignatures(requestCSharp);
VerifySignatures(requestVB, "C.F()");
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册