diff --git a/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Engine.NetFX20.il b/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Engine.NetFX20.il index 54b1bee075ec8e249701a1de6a97fad0f21765f1..4cc343baee765baec7105f7af09a71f0b0839c85 100644 --- a/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Engine.NetFX20.il +++ b/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Engine.NetFX20.il @@ -3579,6 +3579,7 @@ .field static public literal valuetype 'Microsoft.VisualStudio.Debugger'.'DkmExceptionCode' 'E_LOAD_VSDEBUGENG_IMPORTS_FAILED' = int32(0x80040C11) .field static public literal valuetype 'Microsoft.VisualStudio.Debugger'.'DkmExceptionCode' 'E_LOGON_FAILURE_ON_CALLBACK' = int32(0x80040756) .field static public literal valuetype 'Microsoft.VisualStudio.Debugger'.'DkmExceptionCode' 'E_MANAGED_FEATURE_NOTSUPPORTED' = int32(0x80040BAD) + .field static public literal valuetype 'Microsoft.VisualStudio.Debugger'.'DkmExceptionCode' 'E_MANAGED_HEAP_ENUMERATION_PARTIAL' = int32(0x92330065) .field static public literal valuetype 'Microsoft.VisualStudio.Debugger'.'DkmExceptionCode' 'E_MANAGED_HEAP_ENUMERATION_TARGET_NOT_STOPPED' = int32(0x92330061) .field static public literal valuetype 'Microsoft.VisualStudio.Debugger'.'DkmExceptionCode' 'E_MANAGED_HEAP_NOT_ENUMERABLE' = int32(0x92330056) .field static public literal valuetype 'Microsoft.VisualStudio.Debugger'.'DkmExceptionCode' 'E_MARSHALLING_SIZE_TOO_LARGE' = int32(0x9233005F) @@ -4989,6 +4990,7 @@ .method public final virtual hidebysig newslot instance void 'GetObjectData'(class ['mscorlib']'System.Runtime.Serialization'.'SerializationInfo' 'info', valuetype ['mscorlib']'System.Runtime.Serialization'.'StreamingContext' 'context') { + .permissionset linkcheck = (2E 01 80 84 53 79 73 74 65 6D 2E 53 65 63 75 72 69 74 79 2E 50 65 72 6D 69 73 73 69 6F 6E 73 2E 53 65 63 75 72 69 74 79 50 65 72 6D 69 73 73 69 6F 6E 41 74 74 72 69 62 75 74 65 2C 20 6D 73 63 6F 72 6C 69 62 2C 20 56 65 72 73 69 6F 6E 3D 32 2E 30 2E 30 2E 30 2C 20 43 75 6C 74 75 72 65 3D 6E 65 75 74 72 61 6C 2C 20 50 75 62 6C 69 63 4B 65 79 54 6F 6B 65 6E 3D 62 37 37 61 35 63 35 36 31 39 33 34 65 30 38 39 80 8D 01 54 55 7F 53 79 73 74 65 6D 2E 53 65 63 75 72 69 74 79 2E 50 65 72 6D 69 73 73 69 6F 6E 73 2E 53 65 63 75 72 69 74 79 50 65 72 6D 69 73 73 69 6F 6E 46 6C 61 67 2C 20 6D 73 63 6F 72 6C 69 62 2C 20 56 65 72 73 69 6F 6E 3D 32 2E 30 2E 30 2E 30 2C 20 43 75 6C 74 75 72 65 3D 6E 65 75 74 72 61 6C 2C 20 50 75 62 6C 69 63 4B 65 79 54 6F 6B 65 6E 3D 62 37 37 61 35 63 35 36 31 39 33 34 65 30 38 39 05 46 6C 61 67 73 80 00 00 00) ret } .property instance native int 'ItemsPtr'() @@ -11716,7 +11718,7 @@ { } .method public virtual hidebysig newslot abstract - instance string 'GetTypeName'(class 'Microsoft.VisualStudio.Debugger.Evaluation'.'DkmInspectionContext' 'inspectionContext', class 'Microsoft.VisualStudio.Debugger.Clr'.'DkmClrType' 'clrType', class ['mscorlib']'System.Collections.ObjectModel'.'ReadOnlyCollection`1' 'formatSpecifiers') + instance string 'GetTypeName'(class 'Microsoft.VisualStudio.Debugger.Evaluation'.'DkmInspectionContext' 'inspectionContext', class 'Microsoft.VisualStudio.Debugger.Clr'.'DkmClrType' 'clrType', class ['mscorlib']'System.Collections.ObjectModel'.'ReadOnlyCollection`1' 'formatSpecifiers', class 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmClrCustomTypeInfo' 'customTypeInfo') { } .method public virtual hidebysig newslot abstract @@ -11823,7 +11825,7 @@ .class public interface abstract 'IDkmClrResultProvider' { .method public virtual hidebysig newslot abstract - instance void 'GetResult'(class 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmClrValue' 'clrValue', class 'Microsoft.VisualStudio.Debugger'.'DkmWorkList' 'workList', class 'Microsoft.VisualStudio.Debugger.Clr'.'DkmClrType' 'declaredType', class 'Microsoft.VisualStudio.Debugger.Evaluation'.'DkmInspectionContext' 'inspectionContext', class ['mscorlib']'System.Collections.ObjectModel'.'ReadOnlyCollection`1' 'formatSpecifiers', string 'resultName', string 'resultFullName', class 'Microsoft.VisualStudio.Debugger'.'DkmCompletionRoutine`1' 'completionRoutine') + instance void 'GetResult'(class 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmClrValue' 'clrValue', class 'Microsoft.VisualStudio.Debugger'.'DkmWorkList' 'workList', class 'Microsoft.VisualStudio.Debugger.Clr'.'DkmClrType' 'declaredType', class 'Microsoft.VisualStudio.Debugger.Evaluation'.'DkmInspectionContext' 'inspectionContext', class ['mscorlib']'System.Collections.ObjectModel'.'ReadOnlyCollection`1' 'formatSpecifiers', class 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmClrCustomTypeInfo' 'customTypeInfo', string 'resultName', string 'resultFullName', class 'Microsoft.VisualStudio.Debugger'.'DkmCompletionRoutine`1' 'completionRoutine') { } .method public virtual hidebysig newslot abstract @@ -17244,7 +17246,7 @@ ret } .method public hidebysig - instance string 'GetTypeName'(class 'Microsoft.VisualStudio.Debugger.Clr'.'DkmClrType' 'ClrType', class ['mscorlib']'System.Collections.ObjectModel'.'ReadOnlyCollection`1' 'FormatSpecifiers') + instance string 'GetTypeName'(class 'Microsoft.VisualStudio.Debugger.Clr'.'DkmClrType' 'ClrType', class ['mscorlib']'System.Collections.ObjectModel'.'ReadOnlyCollection`1' 'FormatSpecifiers', class 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmClrCustomTypeInfo' 'CustomTypeInfo') { ret } @@ -18333,6 +18335,34 @@ .field static public literal valuetype 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmClrCompilationResultFlags' 'PotentialSideEffect' = int32(0x00000001) .field static public literal valuetype 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmClrCompilationResultFlags' 'ReadOnlyResult' = int32(0x00000002) } + .class public 'DkmClrCustomTypeInfo' + extends ['mscorlib']'System'.'Object' + { + .custom instance void ['mscorlib']'System.Runtime.InteropServices'.'GuidAttribute'::.ctor(string) = (01 00 24 32 34 61 63 36 66 36 32 2D 66 33 66 38 2D 31 66 32 66 2D 35 32 64 62 2D 39 38 36 65 33 65 39 36 66 33 38 65 00 00) + .method public hidebysig specialname + instance valuetype ['mscorlib']'System'.'Guid' 'get_PayloadTypeId'() + { + ret + } + .method public hidebysig specialname + instance class ['mscorlib']'System.Collections.ObjectModel'.'ReadOnlyCollection`1' 'get_Payload'() + { + ret + } + .method public static hidebysig + class 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmClrCustomTypeInfo' 'Create'(valuetype ['mscorlib']'System'.'Guid' 'PayloadTypeId', class ['mscorlib']'System.Collections.ObjectModel'.'ReadOnlyCollection`1' 'Payload') + { + ret + } + .property instance class ['mscorlib']'System.Collections.ObjectModel'.'ReadOnlyCollection`1' 'Payload'() + { + .get instance class ['mscorlib']'System.Collections.ObjectModel'.'ReadOnlyCollection`1' 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmClrCustomTypeInfo'::'get_Payload'() + } + .property instance valuetype ['mscorlib']'System'.'Guid' 'PayloadTypeId'() + { + .get instance valuetype ['mscorlib']'System'.'Guid' 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmClrCustomTypeInfo'::'get_PayloadTypeId'() + } + } .class public 'DkmClrDebuggerBrowsableAttribute' extends 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmClrEvalAttribute' { @@ -18837,7 +18867,7 @@ ret } .method public hidebysig - instance void 'GetResult'(class 'Microsoft.VisualStudio.Debugger'.'DkmWorkList' 'WorkList', class 'Microsoft.VisualStudio.Debugger.Clr'.'DkmClrType' 'DeclaredType', class 'Microsoft.VisualStudio.Debugger.Evaluation'.'DkmInspectionContext' 'InspectionContext', class ['mscorlib']'System.Collections.ObjectModel'.'ReadOnlyCollection`1' 'FormatSpecifiers', string 'ResultName', string 'ResultFullName', class 'Microsoft.VisualStudio.Debugger'.'DkmCompletionRoutine`1' 'CompletionRoutine') + instance void 'GetResult'(class 'Microsoft.VisualStudio.Debugger'.'DkmWorkList' 'WorkList', class 'Microsoft.VisualStudio.Debugger.Clr'.'DkmClrType' 'DeclaredType', class 'Microsoft.VisualStudio.Debugger.Evaluation'.'DkmInspectionContext' 'InspectionContext', class ['mscorlib']'System.Collections.ObjectModel'.'ReadOnlyCollection`1' 'FormatSpecifiers', class 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmClrCustomTypeInfo' 'CustomTypeInfo', string 'ResultName', string 'ResultFullName', class 'Microsoft.VisualStudio.Debugger'.'DkmCompletionRoutine`1' 'CompletionRoutine') { ret } @@ -19003,13 +19033,18 @@ { ret } + .method public hidebysig specialname + instance class 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmClrCustomTypeInfo' 'get_CustomTypeInfo'() + { + ret + } .method public hidebysig specialname instance valuetype ['mscorlib']'System'.'Guid' 'get_UniqueId'() { ret } .method public static hidebysig - class 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmCompiledClrInspectionQuery' 'Create'(class 'Microsoft.VisualStudio.Debugger'.'DkmRuntimeInstance' 'RuntimeInstance', class 'Microsoft.VisualStudio.Debugger.Evaluation'.'DkmCustomDataContainer' 'DataContainer', valuetype 'Microsoft.VisualStudio.Debugger.Evaluation'.'DkmCompilerId' 'LanguageId', class ['mscorlib']'System.Collections.ObjectModel'.'ReadOnlyCollection`1' 'Binary', string 'TypeName', string 'MethodName', class ['mscorlib']'System.Collections.ObjectModel'.'ReadOnlyCollection`1' 'FormatSpecifiers', valuetype 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmClrCompilationResultFlags' 'CompilationFlags', valuetype 'Microsoft.VisualStudio.Debugger.Evaluation'.'DkmEvaluationResultCategory' 'ResultCategory', valuetype 'Microsoft.VisualStudio.Debugger.Evaluation'.'DkmEvaluationResultAccessType' 'Access', valuetype 'Microsoft.VisualStudio.Debugger.Evaluation'.'DkmEvaluationResultStorageType' 'StorageType', valuetype 'Microsoft.VisualStudio.Debugger.Evaluation'.'DkmEvaluationResultTypeModifierFlags' 'TypeModifierFlags') + class 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmCompiledClrInspectionQuery' 'Create'(class 'Microsoft.VisualStudio.Debugger'.'DkmRuntimeInstance' 'RuntimeInstance', class 'Microsoft.VisualStudio.Debugger.Evaluation'.'DkmCustomDataContainer' 'DataContainer', valuetype 'Microsoft.VisualStudio.Debugger.Evaluation'.'DkmCompilerId' 'LanguageId', class ['mscorlib']'System.Collections.ObjectModel'.'ReadOnlyCollection`1' 'Binary', string 'TypeName', string 'MethodName', class ['mscorlib']'System.Collections.ObjectModel'.'ReadOnlyCollection`1' 'FormatSpecifiers', valuetype 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmClrCompilationResultFlags' 'CompilationFlags', valuetype 'Microsoft.VisualStudio.Debugger.Evaluation'.'DkmEvaluationResultCategory' 'ResultCategory', valuetype 'Microsoft.VisualStudio.Debugger.Evaluation'.'DkmEvaluationResultAccessType' 'Access', valuetype 'Microsoft.VisualStudio.Debugger.Evaluation'.'DkmEvaluationResultStorageType' 'StorageType', valuetype 'Microsoft.VisualStudio.Debugger.Evaluation'.'DkmEvaluationResultTypeModifierFlags' 'TypeModifierFlags', class 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmClrCustomTypeInfo' 'CustomTypeInfo') { ret } @@ -19030,6 +19065,10 @@ { .get instance valuetype 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmClrCompilationResultFlags' 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmCompiledClrInspectionQuery'::'get_CompilationFlags'() } + .property instance class 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmClrCustomTypeInfo' 'CustomTypeInfo'() + { + .get instance class 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmClrCustomTypeInfo' 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmCompiledClrInspectionQuery'::'get_CustomTypeInfo'() + } .property instance class ['mscorlib']'System.Collections.ObjectModel'.'ReadOnlyCollection`1' 'FormatSpecifiers'() { .get instance class ['mscorlib']'System.Collections.ObjectModel'.'ReadOnlyCollection`1' 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmCompiledClrInspectionQuery'::'get_FormatSpecifiers'() @@ -19078,13 +19117,18 @@ { ret } + .method public hidebysig specialname + instance class 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmClrCustomTypeInfo' 'get_CustomTypeInfo'() + { + ret + } .method public hidebysig specialname instance valuetype ['mscorlib']'System'.'Guid' 'get_UniqueId'() { ret } .method public static hidebysig - class 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmCompiledClrLocalsQuery' 'Create'(class 'Microsoft.VisualStudio.Debugger'.'DkmRuntimeInstance' 'RuntimeInstance', class 'Microsoft.VisualStudio.Debugger.Evaluation'.'DkmCustomDataContainer' 'DataContainer', valuetype 'Microsoft.VisualStudio.Debugger.Evaluation'.'DkmCompilerId' 'LanguageId', class ['mscorlib']'System.Collections.ObjectModel'.'ReadOnlyCollection`1' 'Binary', string 'TypeName', class ['mscorlib']'System.Collections.ObjectModel'.'ReadOnlyCollection`1' 'LocalInfo') + class 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmCompiledClrLocalsQuery' 'Create'(class 'Microsoft.VisualStudio.Debugger'.'DkmRuntimeInstance' 'RuntimeInstance', class 'Microsoft.VisualStudio.Debugger.Evaluation'.'DkmCustomDataContainer' 'DataContainer', valuetype 'Microsoft.VisualStudio.Debugger.Evaluation'.'DkmCompilerId' 'LanguageId', class ['mscorlib']'System.Collections.ObjectModel'.'ReadOnlyCollection`1' 'Binary', string 'TypeName', class ['mscorlib']'System.Collections.ObjectModel'.'ReadOnlyCollection`1' 'LocalInfo', class 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmClrCustomTypeInfo' 'CustomTypeInfo') { ret } @@ -19097,6 +19141,10 @@ { .get instance class ['mscorlib']'System.Collections.ObjectModel'.'ReadOnlyCollection`1' 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmCompiledClrLocalsQuery'::'get_Binary'() } + .property instance class 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmClrCustomTypeInfo' 'CustomTypeInfo'() + { + .get instance class 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmClrCustomTypeInfo' 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmCompiledClrLocalsQuery'::'get_CustomTypeInfo'() + } .property instance class ['mscorlib']'System.Collections.ObjectModel'.'ReadOnlyCollection`1' 'LocalInfo'() { .get instance class ['mscorlib']'System.Collections.ObjectModel'.'ReadOnlyCollection`1' 'Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation'.'DkmCompiledClrLocalsQuery'::'get_LocalInfo'() diff --git a/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Engine.Portable.il b/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Engine.Portable.il index 4c2d9040cdc33a33add12c5bd25d45877b93d656..a47828713abb61ef121e0a2366a3b83ace1d7683 100644 --- a/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Engine.Portable.il +++ b/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Engine.Portable.il @@ -3674,6 +3674,7 @@ .field static public literal valuetype Microsoft.VisualStudio.Debugger.DkmExceptionCode 'E_LOAD_VSDEBUGENG_IMPORTS_FAILED' = int32(0x80040C11) .field static public literal valuetype Microsoft.VisualStudio.Debugger.DkmExceptionCode 'E_LOGON_FAILURE_ON_CALLBACK' = int32(0x80040756) .field static public literal valuetype Microsoft.VisualStudio.Debugger.DkmExceptionCode 'E_MANAGED_FEATURE_NOTSUPPORTED' = int32(0x80040BAD) + .field static public literal valuetype Microsoft.VisualStudio.Debugger.DkmExceptionCode 'E_MANAGED_HEAP_ENUMERATION_PARTIAL' = int32(0x92330065) .field static public literal valuetype Microsoft.VisualStudio.Debugger.DkmExceptionCode 'E_MANAGED_HEAP_ENUMERATION_TARGET_NOT_STOPPED' = int32(0x92330061) .field static public literal valuetype Microsoft.VisualStudio.Debugger.DkmExceptionCode 'E_MANAGED_HEAP_NOT_ENUMERABLE' = int32(0x92330056) .field static public literal valuetype Microsoft.VisualStudio.Debugger.DkmExceptionCode 'E_MARSHALLING_SIZE_TOO_LARGE' = int32(0x9233005F) @@ -12319,7 +12320,7 @@ { } .method public virtual hidebysig newslot abstract - instance string GetTypeName(class Microsoft.VisualStudio.Debugger.Evaluation.DkmInspectionContext inspectionContext, class Microsoft.VisualStudio.Debugger.Clr.DkmClrType clrType, class [System.Runtime]'System.Collections.ObjectModel.ReadOnlyCollection`1' formatSpecifiers) + instance string GetTypeName(class Microsoft.VisualStudio.Debugger.Evaluation.DkmInspectionContext inspectionContext, class Microsoft.VisualStudio.Debugger.Clr.DkmClrType clrType, class [System.Runtime]'System.Collections.ObjectModel.ReadOnlyCollection`1' formatSpecifiers, class Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmClrCustomTypeInfo customTypeInfo) { } .method public virtual hidebysig newslot abstract @@ -12426,7 +12427,7 @@ .class public interface abstract IDkmClrResultProvider { .method public virtual hidebysig newslot abstract - instance void GetResult(class Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmClrValue clrValue, class Microsoft.VisualStudio.Debugger.DkmWorkList workList, class Microsoft.VisualStudio.Debugger.Clr.DkmClrType declaredType, class Microsoft.VisualStudio.Debugger.Evaluation.DkmInspectionContext inspectionContext, class [System.Runtime]'System.Collections.ObjectModel.ReadOnlyCollection`1' formatSpecifiers, string resultName, string resultFullName, class 'Microsoft.VisualStudio.Debugger.DkmCompletionRoutine`1' completionRoutine) + instance void GetResult(class Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmClrValue clrValue, class Microsoft.VisualStudio.Debugger.DkmWorkList workList, class Microsoft.VisualStudio.Debugger.Clr.DkmClrType declaredType, class Microsoft.VisualStudio.Debugger.Evaluation.DkmInspectionContext inspectionContext, class [System.Runtime]'System.Collections.ObjectModel.ReadOnlyCollection`1' formatSpecifiers, class Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmClrCustomTypeInfo customTypeInfo, string resultName, string resultFullName, class 'Microsoft.VisualStudio.Debugger.DkmCompletionRoutine`1' completionRoutine) { } .method public virtual hidebysig newslot abstract @@ -17997,7 +17998,7 @@ ret } .method public hidebysig - instance string GetTypeName(class Microsoft.VisualStudio.Debugger.Clr.DkmClrType ClrType, class [System.Runtime]'System.Collections.ObjectModel.ReadOnlyCollection`1' FormatSpecifiers) + instance string GetTypeName(class Microsoft.VisualStudio.Debugger.Clr.DkmClrType ClrType, class [System.Runtime]'System.Collections.ObjectModel.ReadOnlyCollection`1' FormatSpecifiers, class Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmClrCustomTypeInfo CustomTypeInfo) { .custom instance void [System.Runtime]System.Security.SecuritySafeCriticalAttribute::.ctor() = { } ret @@ -19178,6 +19179,35 @@ .field static public literal valuetype Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmClrCompilationResultFlags PotentialSideEffect = int32(0x00000001) .field static public literal valuetype Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmClrCompilationResultFlags ReadOnlyResult = int32(0x00000002) } + .class public DkmClrCustomTypeInfo + extends [System.Runtime]System.Object + { + .custom instance void [System.Runtime.InteropServices]System.Runtime.InteropServices.GuidAttribute::.ctor(string) = { string('24ac6f62-f3f8-1f2f-52db-986e3e96f38e') } + .method public hidebysig specialname + instance valuetype [System.Runtime]System.Guid get_PayloadTypeId() + { + ret + } + .method public hidebysig specialname + instance class [System.Runtime]'System.Collections.ObjectModel.ReadOnlyCollection`1' get_Payload() + { + ret + } + .method public static hidebysig + class Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmClrCustomTypeInfo Create(valuetype [System.Runtime]System.Guid PayloadTypeId, class [System.Runtime]'System.Collections.ObjectModel.ReadOnlyCollection`1' Payload) + { + .custom instance void [System.Runtime]System.Security.SecuritySafeCriticalAttribute::.ctor() = { } + ret + } + .property instance class [System.Runtime]'System.Collections.ObjectModel.ReadOnlyCollection`1' Payload() + { + .get instance class [System.Runtime]'System.Collections.ObjectModel.ReadOnlyCollection`1' Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmClrCustomTypeInfo::get_Payload() + } + .property instance valuetype [System.Runtime]System.Guid PayloadTypeId() + { + .get instance valuetype [System.Runtime]System.Guid Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmClrCustomTypeInfo::get_PayloadTypeId() + } + } .class public DkmClrDebuggerBrowsableAttribute extends Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmClrEvalAttribute { @@ -19717,7 +19747,7 @@ ret } .method public hidebysig - instance void GetResult(class Microsoft.VisualStudio.Debugger.DkmWorkList WorkList, class Microsoft.VisualStudio.Debugger.Clr.DkmClrType DeclaredType, class Microsoft.VisualStudio.Debugger.Evaluation.DkmInspectionContext InspectionContext, class [System.Runtime]'System.Collections.ObjectModel.ReadOnlyCollection`1' FormatSpecifiers, string ResultName, string ResultFullName, class 'Microsoft.VisualStudio.Debugger.DkmCompletionRoutine`1' CompletionRoutine) + instance void GetResult(class Microsoft.VisualStudio.Debugger.DkmWorkList WorkList, class Microsoft.VisualStudio.Debugger.Clr.DkmClrType DeclaredType, class Microsoft.VisualStudio.Debugger.Evaluation.DkmInspectionContext InspectionContext, class [System.Runtime]'System.Collections.ObjectModel.ReadOnlyCollection`1' FormatSpecifiers, class Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmClrCustomTypeInfo CustomTypeInfo, string ResultName, string ResultFullName, class 'Microsoft.VisualStudio.Debugger.DkmCompletionRoutine`1' CompletionRoutine) { .custom instance void [System.Runtime]System.Security.SecuritySafeCriticalAttribute::.ctor() = { } ret @@ -19892,13 +19922,18 @@ { ret } + .method public hidebysig specialname + instance class Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmClrCustomTypeInfo get_CustomTypeInfo() + { + ret + } .method public hidebysig specialname instance valuetype [System.Runtime]System.Guid get_UniqueId() { ret } .method public static hidebysig - class Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmCompiledClrInspectionQuery Create(class Microsoft.VisualStudio.Debugger.DkmRuntimeInstance RuntimeInstance, class Microsoft.VisualStudio.Debugger.Evaluation.DkmCustomDataContainer DataContainer, valuetype Microsoft.VisualStudio.Debugger.Evaluation.DkmCompilerId LanguageId, class [System.Runtime]'System.Collections.ObjectModel.ReadOnlyCollection`1' Binary, string TypeName, string MethodName, class [System.Runtime]'System.Collections.ObjectModel.ReadOnlyCollection`1' FormatSpecifiers, valuetype Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmClrCompilationResultFlags CompilationFlags, valuetype Microsoft.VisualStudio.Debugger.Evaluation.DkmEvaluationResultCategory ResultCategory, valuetype Microsoft.VisualStudio.Debugger.Evaluation.DkmEvaluationResultAccessType Access, valuetype Microsoft.VisualStudio.Debugger.Evaluation.DkmEvaluationResultStorageType StorageType, valuetype Microsoft.VisualStudio.Debugger.Evaluation.DkmEvaluationResultTypeModifierFlags TypeModifierFlags) + class Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmCompiledClrInspectionQuery Create(class Microsoft.VisualStudio.Debugger.DkmRuntimeInstance RuntimeInstance, class Microsoft.VisualStudio.Debugger.Evaluation.DkmCustomDataContainer DataContainer, valuetype Microsoft.VisualStudio.Debugger.Evaluation.DkmCompilerId LanguageId, class [System.Runtime]'System.Collections.ObjectModel.ReadOnlyCollection`1' Binary, string TypeName, string MethodName, class [System.Runtime]'System.Collections.ObjectModel.ReadOnlyCollection`1' FormatSpecifiers, valuetype Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmClrCompilationResultFlags CompilationFlags, valuetype Microsoft.VisualStudio.Debugger.Evaluation.DkmEvaluationResultCategory ResultCategory, valuetype Microsoft.VisualStudio.Debugger.Evaluation.DkmEvaluationResultAccessType Access, valuetype Microsoft.VisualStudio.Debugger.Evaluation.DkmEvaluationResultStorageType StorageType, valuetype Microsoft.VisualStudio.Debugger.Evaluation.DkmEvaluationResultTypeModifierFlags TypeModifierFlags, class Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmClrCustomTypeInfo CustomTypeInfo) { .custom instance void [System.Runtime]System.Security.SecuritySafeCriticalAttribute::.ctor() = { } ret @@ -19921,6 +19956,10 @@ { .get instance valuetype Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmClrCompilationResultFlags Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmCompiledClrInspectionQuery::get_CompilationFlags() } + .property instance class Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmClrCustomTypeInfo CustomTypeInfo() + { + .get instance class Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmClrCustomTypeInfo Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmCompiledClrInspectionQuery::get_CustomTypeInfo() + } .property instance class [System.Runtime]'System.Collections.ObjectModel.ReadOnlyCollection`1' FormatSpecifiers() { .get instance class [System.Runtime]'System.Collections.ObjectModel.ReadOnlyCollection`1' Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmCompiledClrInspectionQuery::get_FormatSpecifiers() @@ -19969,13 +20008,18 @@ { ret } + .method public hidebysig specialname + instance class Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmClrCustomTypeInfo get_CustomTypeInfo() + { + ret + } .method public hidebysig specialname instance valuetype [System.Runtime]System.Guid get_UniqueId() { ret } .method public static hidebysig - class Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmCompiledClrLocalsQuery Create(class Microsoft.VisualStudio.Debugger.DkmRuntimeInstance RuntimeInstance, class Microsoft.VisualStudio.Debugger.Evaluation.DkmCustomDataContainer DataContainer, valuetype Microsoft.VisualStudio.Debugger.Evaluation.DkmCompilerId LanguageId, class [System.Runtime]'System.Collections.ObjectModel.ReadOnlyCollection`1' Binary, string TypeName, class [System.Runtime]'System.Collections.ObjectModel.ReadOnlyCollection`1' LocalInfo) + class Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmCompiledClrLocalsQuery Create(class Microsoft.VisualStudio.Debugger.DkmRuntimeInstance RuntimeInstance, class Microsoft.VisualStudio.Debugger.Evaluation.DkmCustomDataContainer DataContainer, valuetype Microsoft.VisualStudio.Debugger.Evaluation.DkmCompilerId LanguageId, class [System.Runtime]'System.Collections.ObjectModel.ReadOnlyCollection`1' Binary, string TypeName, class [System.Runtime]'System.Collections.ObjectModel.ReadOnlyCollection`1' LocalInfo, class Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmClrCustomTypeInfo CustomTypeInfo) { .custom instance void [System.Runtime]System.Security.SecuritySafeCriticalAttribute::.ctor() = { } ret @@ -19990,6 +20034,10 @@ { .get instance class [System.Runtime]'System.Collections.ObjectModel.ReadOnlyCollection`1' Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmCompiledClrLocalsQuery::get_Binary() } + .property instance class Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmClrCustomTypeInfo CustomTypeInfo() + { + .get instance class Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmClrCustomTypeInfo Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmCompiledClrLocalsQuery::get_CustomTypeInfo() + } .property instance class [System.Runtime]'System.Collections.ObjectModel.ReadOnlyCollection`1' LocalInfo() { .get instance class [System.Runtime]'System.Collections.ObjectModel.ReadOnlyCollection`1' Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation.DkmCompiledClrLocalsQuery::get_LocalInfo() diff --git a/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Engine.XML b/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Engine.XML index 895da86e32f176383c87dc3e544ff37c6b9f25ce..a3ceff0ab797ee7a0ef00c9e9d82a9cb8f4a1b67 100644 --- a/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Engine.XML +++ b/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Engine.XML @@ -6956,7 +6956,7 @@ [Out] The local variables query. - + Gets the type name string to display in the UI for the given DkmClrType. @@ -6972,6 +6972,10 @@ [In,Optional] The optional format specifier(s) to use when formatting this result. + + [In,Optional] The optional information provided by the expression compiler for + identifying compiler intrinsic type information. + [Out] The type name string. @@ -7496,7 +7500,7 @@ Compile the given DebuggerDisplayAttribute string. The resulting IL should return a string. For debugger display, there is no code context. Instead the - complier must do its binding based on a type token. + compiler must do its binding based on a type token. Location constraint: API must be called from an IDE component (component level > 100,000). @@ -8851,6 +8855,74 @@ Indicates that the return type of compiled expression is boolean. + + + A custom type info is an object passed between an IDkmClrExpressionCompiler and an + IDkmClrResultProvider, this can be used by the result provider to decode a + compiler-specific type that does not have an underlying CLR type. A result provider + should always check the PayloadTypeId for a compiler it recognizes before attempting + to decode the included payload. + + This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM). + + + + + This Guid is used to identify the type of the payload. This allows result + providers to ignore ClrCustomTypeInfos from different compilers. + + This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM). + + + + + Data payload that contains compiler-specific custom information to be used by a + result provider to decode the given type. + + This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM). + + + + + Create a new DkmClrCustomTypeInfo object instance. + + This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM). + + + [In] This Guid is used to identify the type of the payload. This allows result + providers to ignore ClrCustomTypeInfos from different compilers. + + + [In] Data payload that contains compiler-specific custom information to be used + by a result provider to decode the given type. + + + [Out] Result of this method call. + + + + + Obtain a pointer to the native object used to call into native. This method + is invoked from IXapiMarshalableElement<IntPtr>.ManagedToNative or from + a derived classes's implementation of this function. + + Outgoing managed->native call + Native object + + + + Convert a native dispatcher object to managed + + [Optional] Pointer to native object. + [Optional] Managed object. Null if input object is null. + + + + Create a new managed object for the passed in native object. This function is called from 'NativeToManaged' + + Native object + [Optional] Managed object. Returns null if the native object is not of this type. + Represents a DebuggerBrowsable attribute on a field or property and determines if and @@ -9506,7 +9578,7 @@ - [Optional] Flags, provided by the complier, describing the local variable. + [Optional] Flags, provided by the compiler, describing the local variable. This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM). @@ -9532,7 +9604,7 @@ [In] The name of the method to execute to get the value of this variable. - [In,Optional] Flags, provided by the complier, describing the local variable. + [In,Optional] Flags, provided by the compiler, describing the local variable. [In,Optional] What category this variable belongs to, this controls the glyph @@ -9860,7 +9932,7 @@ [Out] The underlying string representation. - + Format a DkmClrValue and return a DkmEvaluationResult. @@ -9887,6 +9959,10 @@ [In,Optional] The optional format specifier(s) to use when formatting this result. + + [In,Optional] The optional information provided by the expression compiler for + identifying compiler intrinsic type information. + [In] The name of this result. This value is typically the expression being evaluated. @@ -10152,7 +10228,7 @@ - [Optional] Flags, provided by the complier, describing the inspection query. + [Optional] Flags, provided by the compiler, describing the inspection query. This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM). @@ -10187,6 +10263,14 @@ This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM). + + + [Optional] The optional information provided to the result formatter for + identifying compiler intrinsic type information. + + This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM). + + Guid which uniquely identifies this query. @@ -10194,7 +10278,7 @@ This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM). - + Create a new DkmCompiledClrInspectionQuery object instance. @@ -10225,7 +10309,7 @@ query. - [In,Optional] Flags, provided by the complier, describing the inspection query. + [In,Optional] Flags, provided by the compiler, describing the inspection query. [In,Optional] What category this variable belongs to, this controls the glyph @@ -10241,6 +10325,10 @@ [In,Optional] Type modifier flags (ex: const) of the evaluation result. + + [In,Optional] The optional information provided to the result formatter for + identifying compiler intrinsic type information. + [Out] Result of this method call. @@ -10327,6 +10415,14 @@ This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM). + + + [Optional] The optional information provided to the result formatter for + identifying compiler intrinsic type information. + + This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM). + + Guid which uniquely identifies this query. @@ -10334,7 +10430,7 @@ This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM). - + Create a new DkmCompiledClrLocalsQuery object instance. @@ -10361,6 +10457,10 @@ [In] The collection of local variable names and method names on the query type to get the values. + + [In,Optional] The optional information provided to the result formatter for + identifying compiler intrinsic type information. + [Out] Result of this method call. @@ -24776,7 +24876,7 @@ [Out] The value string. - + Gets the type name string to display in the UI for the given DkmClrType. @@ -24790,6 +24890,10 @@ [In,Optional] The optional format specifier(s) to use when formatting this result. + + [In,Optional] The optional information provided by the expression compiler for + identifying compiler intrinsic type information. + [Out] The type name string. @@ -24838,7 +24942,7 @@ This API was introduced in Visual Studio 14 RTM (DkmApiVersion.VS14RTM). - + Format a DkmClrValue and return a DkmEvaluationResult. @@ -24861,6 +24965,10 @@ [In,Optional] The optional format specifier(s) to use when formatting this result. + + [In,Optional] The optional information provided by the expression compiler for + identifying compiler intrinsic type information. + [In] The name of this result. This value is typically the expression being evaluated. @@ -25071,7 +25179,7 @@ Compile the given DebuggerDisplayAttribute string. The resulting IL should return a string. For debugger display, there is no code context. Instead the - complier must do its binding based on a type token. + compiler must do its binding based on a type token. [In] DkmLanguageExpression represents an expression to be parsed and evaluated by @@ -58933,6 +59041,11 @@ Detach is not allowed after changes have been applied through Edit and Continue. + + + Managed heap enumeration ran into an issue reading objects from the heap, not all objects were captured + + A component dll failed to load. Try to restart this application. If failures continue, try disabling any installed add-ins or repair your installation. diff --git a/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Metadata.NetFX20.il b/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Metadata.NetFX20.il index 13609c505dd18550c43c2b573bcfe3c3fef75ce7..cdc5d29ea828b89403b7149860de748cde93d8ee 100644 --- a/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Metadata.NetFX20.il +++ b/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Metadata.NetFX20.il @@ -1,3 +1,8 @@ +.assembly extern System.Core +{ + .publickeytoken = (B7 7A 5C 56 19 34 E0 89) + .ver 3:5:0:0 +} .assembly extern mscorlib { .publickeytoken = (B7 7A 5C 56 19 34 E0 89) @@ -5,6 +10,7 @@ } .assembly Microsoft.VisualStudio.Debugger.Metadata { + .custom instance void [System.Core]System.Runtime.CompilerServices.ExtensionAttribute::.ctor() = { } .custom instance void [mscorlib]System.CLSCompliantAttribute::.ctor(bool) = { bool(false) } .custom instance void [mscorlib]System.Runtime.CompilerServices.InternalsVisibleToAttribute::.ctor(string) = { string('vsdebugeng.manimpl, PublicKey=002400000480000094000000060200000024000052534131000400000100010007d1fa57c4aed9f0a32e84aa0faefd0de9e8fd6aec8f87fb03766c834c99921eb23be79ad9d5dcc1dd9ad236132102900b723cf980957fc4e177108fc607774f29e8320e92ea05ece4e821c0a5efe8f1645c4c0c93c1ab99285d622caa652c1dfad63d745d6f2de5f17e5eaf0fc4963d261c8a12436518206dc093344d5ad293') } .custom instance void [mscorlib]System.Runtime.CompilerServices.InternalsVisibleToAttribute::.ctor(string) = { string('Microsoft.VisualStudio.VIL, PublicKey=002400000480000094000000060200000024000052534131000400000100010007d1fa57c4aed9f0a32e84aa0faefd0de9e8fd6aec8f87fb03766c834c99921eb23be79ad9d5dcc1dd9ad236132102900b723cf980957fc4e177108fc607774f29e8320e92ea05ece4e821c0a5efe8f1645c4c0c93c1ab99285d622caa652c1dfad63d745d6f2de5f17e5eaf0fc4963d261c8a12436518206dc093344d5ad293') } @@ -4165,6 +4171,17 @@ .field static public literal valuetype Microsoft.VisualStudio.Debugger.Metadata.TypeCode UInt32 = int32(0x0000000A) .field static public literal valuetype Microsoft.VisualStudio.Debugger.Metadata.TypeCode UInt64 = int32(0x0000000C) } + .class public abstract sealed TypeExtensions + extends [mscorlib]System.Object + { + .custom instance void [System.Core]System.Runtime.CompilerServices.ExtensionAttribute::.ctor() = { } + .method public static hidebysig + class [mscorlib]System.Type GetTypeInfo(class [mscorlib]System.Type 'type') + { + .custom instance void [System.Core]System.Runtime.CompilerServices.ExtensionAttribute::.ctor() = { } + ret + } + } .class public sealed TypeFilter extends [mscorlib]System.MulticastDelegate { diff --git a/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Metadata.Portable.il b/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Metadata.Portable.il index b548d8c3558de59b5207c88238944164ad3f9e0b..f42093b27c82f4a54d2df47025ff59f59a6be210 100644 --- a/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Metadata.Portable.il +++ b/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Metadata.Portable.il @@ -3828,6 +3828,15 @@ .field static public literal valuetype 'Microsoft.VisualStudio.Debugger.Metadata'.'TypeCode' 'UInt32' = int32(0x0000000A) .field static public literal valuetype 'Microsoft.VisualStudio.Debugger.Metadata'.'TypeCode' 'UInt64' = int32(0x0000000C) } + .class public abstract sealed 'TypeExtensions' + extends ['System.Runtime']'System'.'Object' + { + .method public static hidebysig + class ['System.Reflection']'System.Reflection'.'TypeInfo' 'GetTypeInfo'(class ['System.Runtime']'System'.'Type' 'type') + { + ret + } + } .class public sealed 'TypeFilter' extends ['System.Runtime']'System'.'MulticastDelegate' { diff --git a/src/ExpressionEvaluator/Core/Source/ExpressionCompiler/DkmUtilities.cs b/src/ExpressionEvaluator/Core/Source/ExpressionCompiler/DkmUtilities.cs index 5448f5bf083168c102155124e8b98af51dd80b83..cde17bbd7816050091f57bf80023b01c309f0eba 100644 --- a/src/ExpressionEvaluator/Core/Source/ExpressionCompiler/DkmUtilities.cs +++ b/src/ExpressionEvaluator/Core/Source/ExpressionCompiler/DkmUtilities.cs @@ -154,7 +154,8 @@ internal static object GetSymReader(this DkmClrModuleInstance clrModule) ResultCategory: resultProperties.Category, Access: resultProperties.AccessType, StorageType: resultProperties.StorageType, - TypeModifierFlags: resultProperties.ModifierFlags); + TypeModifierFlags: resultProperties.ModifierFlags, + CustomTypeInfo: null); } internal static ResultProperties GetResultProperties(this TSymbol symbol, DkmClrCompilationResultFlags flags, bool isConstant) diff --git a/src/ExpressionEvaluator/Core/Source/ExpressionCompiler/ExpressionCompiler.cs b/src/ExpressionEvaluator/Core/Source/ExpressionCompiler/ExpressionCompiler.cs index 7a248150e7f2f4bbad1f75b104711cbd2c9844e3..079f996364387abf804f2de161ecd0b60c585552 100644 --- a/src/ExpressionEvaluator/Core/Source/ExpressionCompiler/ExpressionCompiler.cs +++ b/src/ExpressionEvaluator/Core/Source/ExpressionCompiler/ExpressionCompiler.cs @@ -56,7 +56,7 @@ static ExpressionCompiler() return new GetLocalsResult(typeName, locals, assembly); }, out error); - return DkmCompiledClrLocalsQuery.Create(runtimeInstance, null, this.CompilerId, r.Assembly, r.TypeName, r.Locals); + return DkmCompiledClrLocalsQuery.Create(runtimeInstance, null, this.CompilerId, r.Assembly, r.TypeName, r.Locals, CustomTypeInfo: null); } catch (Exception e) when (ExpressionEvaluatorFatalError.CrashIfFailFastEnabled(e)) { diff --git a/src/ExpressionEvaluator/Core/Source/ResultProvider/Expansion/TypeVariablesExpansion.cs b/src/ExpressionEvaluator/Core/Source/ResultProvider/Expansion/TypeVariablesExpansion.cs index 6225f7ba9091bc3fc1458b23af13fff0b3afbb39..9b45087fc33cb961d3a87db74b95d4653e03e683 100644 --- a/src/ExpressionEvaluator/Core/Source/ResultProvider/Expansion/TypeVariablesExpansion.cs +++ b/src/ExpressionEvaluator/Core/Source/ResultProvider/Expansion/TypeVariablesExpansion.cs @@ -64,7 +64,7 @@ private EvalResultDataItem GetRow(ResultProvider resultProvider, DkmInspectionCo declaredType: typeArgument, parent: parent, value: value, - displayValue: inspectionContext.GetTypeName(DkmClrType.Create(value.Type.AppDomain, typeArgument), formatSpecifiers), + displayValue: inspectionContext.GetTypeName(DkmClrType.Create(value.Type.AppDomain, typeArgument), formatSpecifiers, CustomTypeInfo: null), expansion: null, childShouldParenthesize: false, fullName: null, diff --git a/src/ExpressionEvaluator/Core/Source/ResultProvider/Formatter.Values.cs b/src/ExpressionEvaluator/Core/Source/ResultProvider/Formatter.Values.cs index ec6e7c6f862edc8e87e03ade94d0f5c26d66716a..9af04a85ff7aed76cbb6080646b37f6ebb039053 100644 --- a/src/ExpressionEvaluator/Core/Source/ResultProvider/Formatter.Values.cs +++ b/src/ExpressionEvaluator/Core/Source/ResultProvider/Formatter.Values.cs @@ -104,7 +104,7 @@ internal string GetValueString(DkmClrValue value, DkmInspectionContext inspectio // (Tools > Options setting) and call "value.ToString()" if appropriate. return IncludeObjectId( value, - string.Format(_defaultFormat, value.EvaluateToString(inspectionContext) ?? inspectionContext.GetTypeName(value.Type, Formatter.NoFormatSpecifiers)), + string.Format(_defaultFormat, value.EvaluateToString(inspectionContext) ?? inspectionContext.GetTypeName(value.Type, Formatter.NoFormatSpecifiers, CustomTypeInfo: null)), flags); } diff --git a/src/ExpressionEvaluator/Core/Source/ResultProvider/Formatter.cs b/src/ExpressionEvaluator/Core/Source/ResultProvider/Formatter.cs index 06a5d74e62f9a6e8c30095924a70f1f18ab8d1ba..3a8aab019f96c5d0f03a47951e73c0f60e7f655a 100644 --- a/src/ExpressionEvaluator/Core/Source/ResultProvider/Formatter.cs +++ b/src/ExpressionEvaluator/Core/Source/ResultProvider/Formatter.cs @@ -36,7 +36,7 @@ string IDkmClrFormatter.GetValueString(DkmClrValue value, DkmInspectionContext i return GetValueString(value, inspectionContext, options, GetValueFlags.IncludeObjectId); } - string IDkmClrFormatter.GetTypeName(DkmInspectionContext inspectionContext, DkmClrType type, ReadOnlyCollection formatSpecifiers) + string IDkmClrFormatter.GetTypeName(DkmInspectionContext inspectionContext, DkmClrType type, ReadOnlyCollection formatSpecifiers, DkmClrCustomTypeInfo CustomTypeInfo) { return GetTypeName(type.GetLmrType()); } diff --git a/src/ExpressionEvaluator/Core/Source/ResultProvider/ResultProvider.cs b/src/ExpressionEvaluator/Core/Source/ResultProvider/ResultProvider.cs index 556fd3012c0e5d66f4b8d12fc297ece343f94dc6..df2b25e8ee75c05d0a2b63b5cc9b361c7d406694 100644 --- a/src/ExpressionEvaluator/Core/Source/ResultProvider/ResultProvider.cs +++ b/src/ExpressionEvaluator/Core/Source/ResultProvider/ResultProvider.cs @@ -39,7 +39,7 @@ internal ResultProvider(Formatter formatter) this.Formatter = formatter; } - void IDkmClrResultProvider.GetResult(DkmClrValue value, DkmWorkList workList, DkmClrType declaredType, DkmInspectionContext inspectionContext, ReadOnlyCollection formatSpecifiers, string resultName, string resultFullName, DkmCompletionRoutine completionRoutine) + void IDkmClrResultProvider.GetResult(DkmClrValue value, DkmWorkList workList, DkmClrType declaredType, DkmInspectionContext inspectionContext, ReadOnlyCollection formatSpecifiers, DkmClrCustomTypeInfo customTypeInfo, string resultName, string resultFullName, DkmCompletionRoutine completionRoutine) { // TODO: Use full name var wl = new WorkList(workList, e => completionRoutine(DkmEvaluationAsyncResult.CreateErrorResult(e))); @@ -284,9 +284,9 @@ private static string GetTypeName(DkmInspectionContext inspectionContext, DkmClr !declaredLmrType.IsPointer && (kind != ExpansionKind.PointerDereference) && (!declaredLmrType.IsNullable() || value.EvalFlags.Includes(DkmEvaluationResultFlags.ExceptionThrown)); - var declaredTypeName = inspectionContext.GetTypeName(declaredType, Formatter.NoFormatSpecifiers); + var declaredTypeName = inspectionContext.GetTypeName(declaredType, Formatter.NoFormatSpecifiers, CustomTypeInfo: null); return includeRuntimeTypeName ? - string.Format("{0} {{{1}}}", declaredTypeName, inspectionContext.GetTypeName(runtimeType, Formatter.NoFormatSpecifiers)) : + string.Format("{0} {{{1}}}", declaredTypeName, inspectionContext.GetTypeName(runtimeType, Formatter.NoFormatSpecifiers, CustomTypeInfo: null)) : declaredTypeName; } diff --git a/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/DkmClrCustomTypeInfo.cs b/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/DkmClrCustomTypeInfo.cs new file mode 100644 index 0000000000000000000000000000000000000000..e1cc223205359884a217561daadf136be2d4164f --- /dev/null +++ b/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/DkmClrCustomTypeInfo.cs @@ -0,0 +1,22 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +#region Assembly Microsoft.VisualStudio.Debugger.Engine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a +// References\Debugger\v2.0\Microsoft.VisualStudio.Debugger.Engine.dll + +#endregion +using System; +using System.Collections.ObjectModel; + +namespace Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation +{ + public class DkmClrCustomTypeInfo + { + public readonly Guid PayloadTypeId; + public readonly ReadOnlyCollection Payload; + + public DkmClrCustomTypeInfo(Guid payloadTypeId, ReadOnlyCollection payload) + { + PayloadTypeId = payloadTypeId; + Payload = payload; + } + } +} diff --git a/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/DkmInspectionContext.cs b/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/DkmInspectionContext.cs index 489ed6c1c01701e6b25d3fdf5f907dd9b7deca38..8631b68b888d1a3f0eabe32718b5497f1a5f58b3 100644 --- a/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/DkmInspectionContext.cs +++ b/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/DkmInspectionContext.cs @@ -9,6 +9,7 @@ using System.Runtime.InteropServices; using Microsoft.VisualStudio.Debugger.Clr; using Microsoft.VisualStudio.Debugger.ComponentInterfaces; +using Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation; namespace Microsoft.VisualStudio.Debugger.Evaluation { @@ -37,10 +38,10 @@ internal DkmInspectionContext(IDkmClrFormatter formatter, DkmEvaluationFlags eva // '16' and '10'. public readonly uint Radix; - public string GetTypeName(DkmClrType clrType, ReadOnlyCollection formatSpecifiers) + public string GetTypeName(DkmClrType clrType, ReadOnlyCollection formatSpecifiers, DkmClrCustomTypeInfo CustomTypeInfo) { // The real version does some sort of dynamic dispatch that ultimately calls this method. - return _formatter.GetTypeName(this, clrType, formatSpecifiers); + return _formatter.GetTypeName(this, clrType, formatSpecifiers, customTypeInfo: null); } } } diff --git a/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/IDkmClrFormatter.cs b/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/IDkmClrFormatter.cs index 14c5380c39b5c69b8b089e1956fb3b3f8b157ad2..3fc8b847684fee129ad68ce9850ea244e86aca5f 100644 --- a/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/IDkmClrFormatter.cs +++ b/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/IDkmClrFormatter.cs @@ -13,7 +13,7 @@ namespace Microsoft.VisualStudio.Debugger.ComponentInterfaces { public interface IDkmClrFormatter { - string GetTypeName(DkmInspectionContext inspectionContext, DkmClrType clrType, ReadOnlyCollection formatSpecifiers); + string GetTypeName(DkmInspectionContext inspectionContext, DkmClrType clrType, ReadOnlyCollection formatSpecifiers, DkmClrCustomTypeInfo customTypeInfo); string GetUnderlyingString(DkmClrValue clrValue, DkmInspectionContext inspectionContext); string GetValueString(DkmClrValue clrValue, DkmInspectionContext inspectionContext, ReadOnlyCollection formatSpecifiers); bool HasUnderlyingString(DkmClrValue clrValue, DkmInspectionContext inspectionContext); diff --git a/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/IDkmClrResultProvider.cs b/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/IDkmClrResultProvider.cs index aec25b0ee43ea33bf8e82084669d6209ad8f6b2e..4876c32ae43336a3c40d1f4915594c57cb999bfd 100644 --- a/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/IDkmClrResultProvider.cs +++ b/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/IDkmClrResultProvider.cs @@ -13,7 +13,7 @@ namespace Microsoft.VisualStudio.Debugger.ComponentInterfaces { public interface IDkmClrResultProvider { - void GetResult(DkmClrValue clrValue, DkmWorkList workList, DkmClrType declaredType, DkmInspectionContext inspectionContext, ReadOnlyCollection formatSpecifiers, string resultName, string resultFullName, DkmCompletionRoutine completionRoutine); + void GetResult(DkmClrValue clrValue, DkmWorkList workList, DkmClrType declaredType, DkmInspectionContext inspectionContext, ReadOnlyCollection formatSpecifiers, DkmClrCustomTypeInfo customTypeInfo, string resultName, string resultFullName, DkmCompletionRoutine completionRoutine); void GetChildren(DkmEvaluationResult evaluationResult, DkmWorkList workList, int initialRequestSize, DkmInspectionContext inspectionContext, DkmCompletionRoutine completionRoutine); void GetItems(DkmEvaluationResultEnumContext enumContext, DkmWorkList workList, int startIndex, int count, DkmCompletionRoutine completionRoutine); string GetUnderlyingString(DkmEvaluationResult result); diff --git a/src/ExpressionEvaluator/Core/Test/ResultProvider/ResultProviderTestBase.cs b/src/ExpressionEvaluator/Core/Test/ResultProvider/ResultProviderTestBase.cs index 4487356e50cd1aeeb8b23a1348661984f5911df3..af8ecf0c1b6ac8963a400fb8e0d07c5694a22edf 100644 --- a/src/ExpressionEvaluator/Core/Test/ResultProvider/ResultProviderTestBase.cs +++ b/src/ExpressionEvaluator/Core/Test/ResultProvider/ResultProviderTestBase.cs @@ -162,6 +162,7 @@ internal DkmEvaluationResult FormatResult(string name, string fullName, DkmClrVa declaredType: declaredType ?? value.Type, inspectionContext: inspectionContext ?? DefaultInspectionContext, formatSpecifiers: Formatter.NoFormatSpecifiers, + customTypeInfo: null, resultName: name, resultFullName: null, completionRoutine: asyncResult => evaluationResult = asyncResult.Result); diff --git a/src/ExpressionEvaluator/Core/Test/ResultProvider/ResultProviderTestUtilities.csproj b/src/ExpressionEvaluator/Core/Test/ResultProvider/ResultProviderTestUtilities.csproj index df9976a8d4ac7b250da9e43f07b99bee3f014304..1ef7c90b2a55c9c9c67a7eec6f4647ca15657f0a 100644 --- a/src/ExpressionEvaluator/Core/Test/ResultProvider/ResultProviderTestUtilities.csproj +++ b/src/ExpressionEvaluator/Core/Test/ResultProvider/ResultProviderTestUtilities.csproj @@ -85,6 +85,7 @@ + diff --git a/src/ExpressionEvaluator/VisualBasic/Source/ResultProvider/VisualBasicFormatter.vb b/src/ExpressionEvaluator/VisualBasic/Source/ResultProvider/VisualBasicFormatter.vb index 9cf736f918e4ef7ef3c17c0bc046be345096d3ce..5ba17d90207f1a6d4470174977b47ba016f7e5fb 100644 --- a/src/ExpressionEvaluator/VisualBasic/Source/ResultProvider/VisualBasicFormatter.vb +++ b/src/ExpressionEvaluator/VisualBasic/Source/ResultProvider/VisualBasicFormatter.vb @@ -26,7 +26,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.ExpressionEvaluator staticMembersString:=Resources.SharedMembers) End Sub - Private Function IDkmClrFormatter_GetTypeName(inspectionContext As DkmInspectionContext, clrType As DkmClrType, formatSpecifiers As ReadOnlyCollection(Of String)) As String Implements IDkmClrFormatter.GetTypeName + Private Function IDkmClrFormatter_GetTypeName(inspectionContext As DkmInspectionContext, clrType As DkmClrType, formatSpecifiers As ReadOnlyCollection(Of String), customTypeInfo As DkmClrCustomTypeInfo) As String Implements IDkmClrFormatter.GetTypeName Return GetTypeName(clrType.GetLmrType()) End Function