internal override DiagnosticInfo GetResolvedInfo() { if (_lazyActualUnmanagedCallersOnlyDiagnostic is null) { _method.ForceCompleteUnmanagedCallersOnlyAttribute(); UnmanagedCallersOnlyAttributeData?unmanagedCallersOnlyAttributeData = _method.UnmanagedCallersOnlyAttributeData; Debug.Assert(!ReferenceEquals(unmanagedCallersOnlyAttributeData, UnmanagedCallersOnlyAttributeData.Uninitialized)); Debug.Assert(!ReferenceEquals(unmanagedCallersOnlyAttributeData, UnmanagedCallersOnlyAttributeData.AttributePresentDataNotBound)); var info = unmanagedCallersOnlyAttributeData is null ? CSDiagnosticInfo.VoidDiagnosticInfo : new CSDiagnosticInfo(_isDelegateConversion ? ErrorCode.ERR_UnmanagedCallersOnlyMethodsCannotBeConvertedToDelegate : ErrorCode.ERR_UnmanagedCallersOnlyMethodsCannotBeCalledDirectly, _method); Interlocked.CompareExchange(ref _lazyActualUnmanagedCallersOnlyDiagnostic, info, null); } return(_lazyActualUnmanagedCallersOnlyDiagnostic); }