nim-chronos/api/chronos/internal/raisesfutures.html

450 lines
33 KiB
HTML

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- CSS -->
<title>chronos/internal/raisesfutures</title>
<link rel="stylesheet" type="text/css" href="../../nimdoc.out.css">
<script type="text/javascript" src="../../dochack.js"></script>
<script type="text/javascript">
function main() {
var pragmaDots = document.getElementsByClassName("pragmadots");
for (var i = 0; i < pragmaDots.length; i++) {
pragmaDots[i].onclick = function(event) {
// Hide tease
event.target.parentNode.style.display = "none";
// Show actual
event.target.parentNode.nextElementSibling.style.display = "inline";
}
}
function switchTheme(e) {
if (e.target.checked) {
document.documentElement.setAttribute('data-theme', 'dark');
localStorage.setItem('theme', 'dark');
} else {
document.documentElement.setAttribute('data-theme', 'light');
localStorage.setItem('theme', 'light');
}
}
const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
if (toggleSwitch !== null) {
toggleSwitch.addEventListener('change', switchTheme, false);
}
var currentTheme = localStorage.getItem('theme');
if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) {
currentTheme = 'dark';
}
if (currentTheme) {
document.documentElement.setAttribute('data-theme', currentTheme);
if (currentTheme === 'dark' && toggleSwitch !== null) {
toggleSwitch.checked = true;
}
}
}
window.addEventListener('DOMContentLoaded', main);
</script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">chronos/internal/raisesfutures</h1>
<div class="row">
<div class="three columns">
<div class="theme-switch-wrapper">
<label class="theme-switch" for="checkbox">
<input type="checkbox" id="checkbox" />
<div class="slider round"></div>
</label>
&nbsp;&nbsp;&nbsp; <em>Dark Mode</em>
</div>
<div id="global-links">
<ul class="simple">
<li>
<a href="../../theindex.html">Index</a>
</li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="text" id="searchInput"
onkeyup="search()" />
</div>
<div>
Group by:
<select onchange="groupBy(this.value)">
<option value="section">Section</option>
<option value="type">Type</option>
</select>
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
<ul class="simple simple-toc-section">
</ul>
</li>
<li>
<a class="reference reference-toplevel" href="#7" id="57">Types</a>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#InternalRaisesFuture"
title="InternalRaisesFuture[T; E] = ref object of Future[T]
when E is void:
dummy: E
else:
dummy: array[0, E]">InternalRaisesFuture</a></li>
</ul>
</li>
<li>
<a class="reference reference-toplevel" href="#12" id="62">Procs</a>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">error
<li><a class="reference" href="#error%2CInternalRaisesFuture%5BT%2Cvoid%5D"
title="error[T](future: InternalRaisesFuture[T, void]): ref CatchableError">error[T](future: InternalRaisesFuture[T, void]): ref CatchableError</a></li>
</ul>
<ul class="simple nested-toc-section">failed
<li><a class="reference" href="#failed%2CInternalRaisesFuture%5BT%2Cvoid%5D"
title="failed[T](future: InternalRaisesFuture[T, void]): bool">failed[T](future: InternalRaisesFuture[T, void]): bool</a></li>
</ul>
<ul class="simple nested-toc-section">getRaisesTypes
<li><a class="reference" href="#getRaisesTypes%2CNimNode"
title="getRaisesTypes(raises: NimNode): NimNode">getRaisesTypes(raises: NimNode): NimNode</a></li>
</ul>
<ul class="simple nested-toc-section">isNoRaises
<li><a class="reference" href="#isNoRaises%2CNimNode"
title="isNoRaises(n: NimNode): bool">isNoRaises(n: NimNode): bool</a></li>
</ul>
<ul class="simple nested-toc-section">makeNoRaises
<li><a class="reference" href="#makeNoRaises"
title="makeNoRaises(): NimNode">makeNoRaises(): NimNode</a></li>
</ul>
<ul class="simple nested-toc-section">readError
<li><a class="reference" href="#readError%2CInternalRaisesFuture%5BT%2Cvoid%5D"
title="readError[T](future: InternalRaisesFuture[T, void]): ref CatchableError">readError[T](future: InternalRaisesFuture[T, void]): ref CatchableError</a></li>
</ul>
</ul>
</li>
<li>
<a class="reference reference-toplevel" href="#17" id="67">Macros</a>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">checkRaises
<li><a class="reference" href="#checkRaises.m%2CInternalRaisesFuture%2Ctyped%2Cref.T%2Cstaticbool"
title="checkRaises[T: CatchableError](future: InternalRaisesFuture; raises: typed;
error: ref T; warn: static bool = true): untyped">checkRaises[T: CatchableError](future: InternalRaisesFuture; raises: typed;
error: ref T; warn: static bool = true): untyped</a></li>
</ul>
<ul class="simple nested-toc-section">prepend
<li><a class="reference" href="#prepend.m%2Ctypedesc%2Cvarargs%5Btyped%5D"
title="prepend(tup: typedesc; typs: varargs[typed]): typedesc">prepend(tup: typedesc; typs: varargs[typed]): typedesc</a></li>
</ul>
<ul class="simple nested-toc-section">Raising
<li><a class="reference" href="#Raising.m%2Ctypedesc%5BFuture%5BT%5D%5D%2Ctyped"
title="Raising[T](F: typedesc[Future[T]]; E: typed): untyped">Raising[T](F: typedesc[Future[T]]; E: typed): untyped</a></li>
</ul>
<ul class="simple nested-toc-section">remove
<li><a class="reference" href="#remove.m%2Ctypedesc%2Cvarargs%5Btyped%5D"
title="remove(tup: typedesc; typs: varargs[typed]): typedesc">remove(tup: typedesc; typs: varargs[typed]): typedesc</a></li>
</ul>
<ul class="simple nested-toc-section">union
<li><a class="reference" href="#union.m%2Ctypedesc%2Ctypedesc"
title="union(tup0: typedesc; tup1: typedesc): typedesc">union(tup0: typedesc; tup1: typedesc): typedesc</a></li>
</ul>
</ul>
</li>
<li>
<a class="reference reference-toplevel" href="#18" id="68">Templates</a>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">init
<li><a class="reference" href="#init.t%2CtypeInternalRaisesFuture%5BT%2CE%5D%2Cstatic%5Bstring%5D"
title="init[T, E](F: type InternalRaisesFuture[T, E]; fromProc: static[string] = &quot;&quot;): F:type">init[T, E](F: type InternalRaisesFuture[T, E]; fromProc: static[string] = &quot;&quot;): F:type</a></li>
<li><a class="reference" href="#init.t%2CtypeInternalRaisesFuture%5BT%2CE%5D%2Cstatic%5Bstring%5D%2Cstatic%5BFutureFlags%5D"
title="init[T, E](F: type InternalRaisesFuture[T, E]; fromProc: static[string] = &quot;&quot;;
flags: static[FutureFlags]): F:type">init[T, E](F: type InternalRaisesFuture[T, E]; fromProc: static[string] = &quot;&quot;;
flags: static[FutureFlags]): F:type</a></li>
</ul>
</ul>
</li>
</ul>
</div>
&nbsp;&nbsp;<a
href="https://github.com/status-im/nim-chronos/tree/master/chronos/internal/raisesfutures.nim#L1"
class="link-seesrc" target="_blank">Source</a>
&nbsp;&nbsp;<a href="https://github.com/status-im/nim-chronos/edit/devel/chronos/internal/raisesfutures.nim#L1" class="link-seesrc" target="_blank" >Edit</a>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc"></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="../futures.html">../futures</a>
</dl></div>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="InternalRaisesFuture">
<dt><pre><a href="raisesfutures.html#InternalRaisesFuture"><span class="Identifier">InternalRaisesFuture</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">E</span><span class="Other">]</span> <span class="Other">=</span> <span class="Keyword">ref</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="../futures.html#Future"><span class="Identifier">Future</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span>
<span class="Keyword">when</span> <span class="Identifier">E</span> <span class="Keyword">is</span> <span class="Identifier">void</span><span class="Other">:</span>
<span class="Identifier">dummy</span><span class="Other">:</span> <span class="Identifier">E</span>
<span class="Keyword">else</span><span class="Other">:</span>
<span class="Identifier">dummy</span><span class="Other">:</span> <span class="Identifier">array</span><span class="Other">[</span><span class="DecNumber">0</span><span class="Other">,</span> <span class="Identifier">E</span><span class="Other">]</span>
</pre></dt>
<dd>
<p>Future with a tuple of possible exception types eg InternalRaisesFuture[void, (ValueError, OSError)]</p>
<p>This type gets injected by <tt class="docutils literal"><span class="pre"><span class="Identifier">async</span><span class="Punctuation">:</span> <span class="Punctuation">(</span><span class="Identifier">raises</span><span class="Punctuation">:</span> <span class="Operator">...</span><span class="Punctuation">)</span></span></tt> and similar utilities and should not be used manually as the internal exception representation is subject to change in future chronos versions.</p>
&nbsp;&nbsp;<a
href="https://github.com/status-im/nim-chronos/tree/master/chronos/internal/raisesfutures.nim#L8"
class="link-seesrc" target="_blank">Source</a>
&nbsp;&nbsp;<a href="https://github.com/status-im/nim-chronos/edit/devel/chronos/internal/raisesfutures.nim#L8" class="link-seesrc" target="_blank" >Edit</a>
</dd>
</div>
</dl></div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="error,InternalRaisesFuture[T,void]">
<dt><pre><span class="Keyword">func</span> <a href="#error%2CInternalRaisesFuture%5BT%2Cvoid%5D"><span class="Identifier">error</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">future</span><span class="Other">:</span> <a href="raisesfutures.html#InternalRaisesFuture"><span class="Identifier">InternalRaisesFuture</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">,</span> <span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Keyword">ref</span> <span class="Identifier">CatchableError</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
&nbsp;&nbsp;<a
href="https://github.com/status-im/nim-chronos/tree/master/chronos/internal/raisesfutures.nim#L238"
class="link-seesrc" target="_blank">Source</a>
&nbsp;&nbsp;<a href="https://github.com/status-im/nim-chronos/edit/devel/chronos/internal/raisesfutures.nim#L238" class="link-seesrc" target="_blank" >Edit</a>
</dd>
</div>
<div id="failed,InternalRaisesFuture[T,void]">
<dt><pre><span class="Keyword">func</span> <a href="#failed%2CInternalRaisesFuture%5BT%2Cvoid%5D"><span class="Identifier">failed</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">future</span><span class="Other">:</span> <a href="raisesfutures.html#InternalRaisesFuture"><span class="Identifier">InternalRaisesFuture</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">,</span> <span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Determines whether <tt class="docutils literal"><span class="pre">future</span></tt> finished with an error.
&nbsp;&nbsp;<a
href="https://github.com/status-im/nim-chronos/tree/master/chronos/internal/raisesfutures.nim#L231"
class="link-seesrc" target="_blank">Source</a>
&nbsp;&nbsp;<a href="https://github.com/status-im/nim-chronos/edit/devel/chronos/internal/raisesfutures.nim#L231" class="link-seesrc" target="_blank" >Edit</a>
</dd>
</div>
<div id="getRaisesTypes,NimNode">
<dt><pre><span class="Keyword">proc</span> <a href="#getRaisesTypes%2CNimNode"><span class="Identifier">getRaisesTypes</span></a><span class="Other">(</span><span class="Identifier">raises</span><span class="Other">:</span> <span class="Identifier">NimNode</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">NimNode</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
&nbsp;&nbsp;<a
href="https://github.com/status-im/nim-chronos/tree/master/chronos/internal/raisesfutures.nim#L173"
class="link-seesrc" target="_blank">Source</a>
&nbsp;&nbsp;<a href="https://github.com/status-im/nim-chronos/edit/devel/chronos/internal/raisesfutures.nim#L173" class="link-seesrc" target="_blank" >Edit</a>
</dd>
</div>
<div id="isNoRaises,NimNode">
<dt><pre><span class="Keyword">proc</span> <a href="#isNoRaises%2CNimNode"><span class="Identifier">isNoRaises</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <span class="Identifier">NimNode</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">bool</span> {.<span class="Identifier">compileTime</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
&nbsp;&nbsp;<a
href="https://github.com/status-im/nim-chronos/tree/master/chronos/internal/raisesfutures.nim#L46"
class="link-seesrc" target="_blank">Source</a>
&nbsp;&nbsp;<a href="https://github.com/status-im/nim-chronos/edit/devel/chronos/internal/raisesfutures.nim#L46" class="link-seesrc" target="_blank" >Edit</a>
</dd>
</div>
<div id="makeNoRaises">
<dt><pre><span class="Keyword">proc</span> <a href="#makeNoRaises"><span class="Identifier">makeNoRaises</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">NimNode</span> {.<span class="Identifier">compileTime</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
&nbsp;&nbsp;<a
href="https://github.com/status-im/nim-chronos/tree/master/chronos/internal/raisesfutures.nim#L22"
class="link-seesrc" target="_blank">Source</a>
&nbsp;&nbsp;<a href="https://github.com/status-im/nim-chronos/edit/devel/chronos/internal/raisesfutures.nim#L22" class="link-seesrc" target="_blank" >Edit</a>
</dd>
</div>
<div id="readError,InternalRaisesFuture[T,void]">
<dt><pre><span class="Keyword">func</span> <a href="#readError%2CInternalRaisesFuture%5BT%2Cvoid%5D"><span class="Identifier">readError</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">future</span><span class="Other">:</span> <a href="raisesfutures.html#InternalRaisesFuture"><span class="Identifier">InternalRaisesFuture</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">,</span> <span class="Identifier">void</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Keyword">ref</span> <span class="Identifier">CatchableError</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
&nbsp;&nbsp;<a
href="https://github.com/status-im/nim-chronos/tree/master/chronos/internal/raisesfutures.nim#L244"
class="link-seesrc" target="_blank">Source</a>
&nbsp;&nbsp;<a href="https://github.com/status-im/nim-chronos/edit/devel/chronos/internal/raisesfutures.nim#L244" class="link-seesrc" target="_blank" >Edit</a>
</dd>
</div>
</dl></div>
<div class="section" id="17">
<h1><a class="toc-backref" href="#17">Macros</a></h1>
<dl class="item">
<div id="checkRaises.m,InternalRaisesFuture,typed,ref.T,staticbool">
<dt><pre><span class="Keyword">macro</span> <a href="#checkRaises.m%2CInternalRaisesFuture%2Ctyped%2Cref.T%2Cstaticbool"><span class="Identifier">checkRaises</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <span class="Identifier">CatchableError</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">future</span><span class="Other">:</span> <a href="raisesfutures.html#InternalRaisesFuture"><span class="Identifier">InternalRaisesFuture</span></a><span class="Other">;</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Identifier">typed</span><span class="Other">;</span> <span class="Identifier">error</span><span class="Other">:</span> <span class="Keyword">ref</span> <span class="Identifier">T</span><span class="Other">;</span>
<span class="Identifier">warn</span><span class="Other">:</span> <span class="Identifier">static</span> <span class="Identifier">bool</span> <span class="Other">=</span> <span class="Identifier">true</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">untyped</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Generate code that checks that the given error is compatible with the raises restrictions of <tt class="docutils literal"><span class="pre"><span class="Identifier">future</span></span></tt>.</p>
<p>This check is done either at compile time or runtime depending on the information available at compile time - in particular, if the raises inherit from <tt class="docutils literal"><span class="pre"><span class="Identifier">error</span></span></tt>, we end up with the equivalent of a downcast which raises a Defect if it fails.</p>
&nbsp;&nbsp;<a
href="https://github.com/status-im/nim-chronos/tree/master/chronos/internal/raisesfutures.nim#L179"
class="link-seesrc" target="_blank">Source</a>
&nbsp;&nbsp;<a href="https://github.com/status-im/nim-chronos/edit/devel/chronos/internal/raisesfutures.nim#L179" class="link-seesrc" target="_blank" >Edit</a>
</dd>
</div>
<div id="prepend.m,typedesc,varargs[typed]">
<dt><pre><span class="Keyword">macro</span> <a href="#prepend.m%2Ctypedesc%2Cvarargs%5Btyped%5D"><span class="Identifier">prepend</span></a><span class="Other">(</span><span class="Identifier">tup</span><span class="Other">:</span> <span class="Identifier">typedesc</span><span class="Other">;</span> <span class="Identifier">typs</span><span class="Other">:</span> <span class="Identifier">varargs</span><span class="Other">[</span><span class="Identifier">typed</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">typedesc</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
&nbsp;&nbsp;<a
href="https://github.com/status-im/nim-chronos/tree/master/chronos/internal/raisesfutures.nim#L135"
class="link-seesrc" target="_blank">Source</a>
&nbsp;&nbsp;<a href="https://github.com/status-im/nim-chronos/edit/devel/chronos/internal/raisesfutures.nim#L135" class="link-seesrc" target="_blank" >Edit</a>
</dd>
</div>
<div id="Raising.m,typedesc[Future[T]],typed">
<dt><pre><span class="Keyword">macro</span> <a href="#Raising.m%2Ctypedesc%5BFuture%5BT%5D%5D%2Ctyped"><span class="Identifier">Raising</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">F</span><span class="Other">:</span> <span class="Identifier">typedesc</span><span class="Other">[</span><a href="../futures.html#Future"><span class="Identifier">Future</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">E</span><span class="Other">:</span> <span class="Identifier">typed</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">untyped</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Given a Future type instance, return a type storing <tt class="docutils literal"><span class="pre"><span class="Punctuation">{</span><span class="Operator">.</span><span class="Identifier">raises</span><span class="Operator">.</span><span class="Punctuation">}</span></span></tt> information</p>
<p>Note; this type may change in the future</p>
&nbsp;&nbsp;<a
href="https://github.com/status-im/nim-chronos/tree/master/chronos/internal/raisesfutures.nim#L62"
class="link-seesrc" target="_blank">Source</a>
&nbsp;&nbsp;<a href="https://github.com/status-im/nim-chronos/edit/devel/chronos/internal/raisesfutures.nim#L62" class="link-seesrc" target="_blank" >Edit</a>
</dd>
</div>
<div id="remove.m,typedesc,varargs[typed]">
<dt><pre><span class="Keyword">macro</span> <a href="#remove.m%2Ctypedesc%2Cvarargs%5Btyped%5D"><span class="Identifier">remove</span></a><span class="Other">(</span><span class="Identifier">tup</span><span class="Other">:</span> <span class="Identifier">typedesc</span><span class="Other">;</span> <span class="Identifier">typs</span><span class="Other">:</span> <span class="Identifier">varargs</span><span class="Other">[</span><span class="Identifier">typed</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">typedesc</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
&nbsp;&nbsp;<a
href="https://github.com/status-im/nim-chronos/tree/master/chronos/internal/raisesfutures.nim#L147"
class="link-seesrc" target="_blank">Source</a>
&nbsp;&nbsp;<a href="https://github.com/status-im/nim-chronos/edit/devel/chronos/internal/raisesfutures.nim#L147" class="link-seesrc" target="_blank" >Edit</a>
</dd>
</div>
<div id="union.m,typedesc,typedesc">
<dt><pre><span class="Keyword">macro</span> <a href="#union.m%2Ctypedesc%2Ctypedesc"><span class="Identifier">union</span></a><span class="Other">(</span><span class="Identifier">tup0</span><span class="Other">:</span> <span class="Identifier">typedesc</span><span class="Other">;</span> <span class="Identifier">tup1</span><span class="Other">:</span> <span class="Identifier">typedesc</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">typedesc</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Join the types of the two tuples deduplicating the entries
&nbsp;&nbsp;<a
href="https://github.com/status-im/nim-chronos/tree/master/chronos/internal/raisesfutures.nim#L156"
class="link-seesrc" target="_blank">Source</a>
&nbsp;&nbsp;<a href="https://github.com/status-im/nim-chronos/edit/devel/chronos/internal/raisesfutures.nim#L156" class="link-seesrc" target="_blank" >Edit</a>
</dd>
</div>
</dl></div>
<div class="section" id="18">
<h1><a class="toc-backref" href="#18">Templates</a></h1>
<dl class="item">
<div id="init.t,typeInternalRaisesFuture[T,E],static[string]">
<dt><pre><span class="Keyword">template</span> <a href="#init.t%2CtypeInternalRaisesFuture%5BT%2CE%5D%2Cstatic%5Bstring%5D"><span class="Identifier">init</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">,</span> <span class="Identifier">E</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">F</span><span class="Other">:</span> <span class="Keyword">type</span> <a href="raisesfutures.html#InternalRaisesFuture"><span class="Identifier">InternalRaisesFuture</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">,</span> <span class="Identifier">E</span><span class="Other">]</span><span class="Other">;</span>
<span class="Identifier">fromProc</span><span class="Other">:</span> <span class="Identifier">static</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> <span class="Other">=</span> <span class="StringLit">&quot;&quot;</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">F:type</span></pre></dt>
<dd>
<p>Creates a new pending future.</p>
<p>Specifying <tt class="docutils literal"><span class="pre">fromProc</span></tt>, which is a string specifying the name of the proc that this future belongs to, is a good habit as it helps with debugging.</p>
&nbsp;&nbsp;<a
href="https://github.com/status-im/nim-chronos/tree/master/chronos/internal/raisesfutures.nim#L94"
class="link-seesrc" target="_blank">Source</a>
&nbsp;&nbsp;<a href="https://github.com/status-im/nim-chronos/edit/devel/chronos/internal/raisesfutures.nim#L94" class="link-seesrc" target="_blank" >Edit</a>
</dd>
</div>
<div id="init.t,typeInternalRaisesFuture[T,E],static[string],static[FutureFlags]">
<dt><pre><span class="Keyword">template</span> <a href="#init.t%2CtypeInternalRaisesFuture%5BT%2CE%5D%2Cstatic%5Bstring%5D%2Cstatic%5BFutureFlags%5D"><span class="Identifier">init</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">,</span> <span class="Identifier">E</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">F</span><span class="Other">:</span> <span class="Keyword">type</span> <a href="raisesfutures.html#InternalRaisesFuture"><span class="Identifier">InternalRaisesFuture</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">,</span> <span class="Identifier">E</span><span class="Other">]</span><span class="Other">;</span>
<span class="Identifier">fromProc</span><span class="Other">:</span> <span class="Identifier">static</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> <span class="Other">=</span> <span class="StringLit">&quot;&quot;</span><span class="Other">;</span> <span class="Identifier">flags</span><span class="Other">:</span> <span class="Identifier">static</span><span class="Other">[</span><a href="../futures.html#FutureFlags"><span class="Identifier">FutureFlags</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">F:type</span></pre></dt>
<dd>
<p>Creates a new pending future.</p>
<p>Specifying <tt class="docutils literal"><span class="pre">fromProc</span></tt>, which is a string specifying the name of the proc that this future belongs to, is a good habit as it helps with debugging.</p>
&nbsp;&nbsp;<a
href="https://github.com/status-im/nim-chronos/tree/master/chronos/internal/raisesfutures.nim#L109"
class="link-seesrc" target="_blank">Source</a>
&nbsp;&nbsp;<a href="https://github.com/status-im/nim-chronos/edit/devel/chronos/internal/raisesfutures.nim#L109" class="link-seesrc" target="_blank" >Edit</a>
</dd>
</div>
</dl></div>
</div>
</div>
<div class="row">
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br/>
<small style="color: var(--hint);">Made with Nim. Generated: 2024-11-28 08:22:46 UTC</small>
</div>
</div>
</div>
</div>
</body>
</html>