diff options
Diffstat (limited to 'api/dotty/tools/dotc/core/MutableTyperState.html')
-rw-r--r-- | api/dotty/tools/dotc/core/MutableTyperState.html | 593 |
1 files changed, 567 insertions, 26 deletions
diff --git a/api/dotty/tools/dotc/core/MutableTyperState.html b/api/dotty/tools/dotc/core/MutableTyperState.html index ea669baed..e80f54b52 100644 --- a/api/dotty/tools/dotc/core/MutableTyperState.html +++ b/api/dotty/tools/dotc/core/MutableTyperState.html @@ -5321,6 +5321,9 @@ <div id="entity-container"> <div id="entity-title"> + <span id="entity-annotations"> + + </span> <span id="entity-modifiers"> </span> @@ -5330,16 +5333,72 @@ <span id="entity-name"> MutableTyperState </span> + + + <div id="super-types"> + + + <span class="keyword">extends</span> + + <span class="entity-super-type">TyperState</span> + + </div> + </div> - <h1 class="section ">Members</h1> + <h1 class="section "> + Constructors + </h1> + + <div id="entity-constructors" class="entity-section "> + + + <div class="member"> + <div class="member-title"> + <span class="member-name">MutableTyperState</span> + <span class="no-left">(</span> + + + <span class="no-left"> + previous: + </span> + TyperState + + <span class="no-left">, </span> + + + <span class=""> + r: + </span> + Reporter + + <span class="no-left">, </span> + + + <span class=""> + isCommittable: + </span> + Boolean + + + <span class="no-left">)</span> + </div> + </div> + + + </div> + + <h1 class="section "> + Members + </h1> <div id="entity-members" class="entity-section "> <div id="isCommittable" class="member "> <div class="member-title"> + <span class="expand-button" onclick="toggleMemberBody(this, 'isCommittable');">[+]</span> <span class="member-annotations"> </span> @@ -5365,13 +5424,31 @@ </div><!-- end member-title --> <div class="member-body"> - <p>Is it allowed to commit this state?</p> + <div class="member-body-short" id="short-body-isCommittable"> + <p>Is it allowed to commit this state?</p> + </div> + <div class="member-body-long" id ="long-body-isCommittable"> + <p>Is it allowed to commit this state?</p> + + </div> </div> + <script> + function toggleMemberBody(span, sig) { + var shortBody = document.getElementById("short-body-" + sig); + var longBody = document.getElementById("long-body-" + sig); + + shortBody.classList.toggle("toggled") + longBody.classList.toggle("toggled") + + span.innerHTML = (span.innerHTML == "[+]") ? "[-]" : "[+]"; + } + </script> </div><!-- end member --> <div id="isCommitted" class="member private"> <div class="member-title"> + <span class="expand-button" onclick="toggleMemberBody(this, 'isCommitted');">[+]</span> <span class="member-annotations"> </span> @@ -5397,12 +5474,29 @@ </div><!-- end member-title --> <div class="member-body"> - + <div class="member-body-short" id="short-body-isCommitted"> + + </div> + <div class="member-body-long" id ="long-body-isCommitted"> + + </div> </div> + <script> + function toggleMemberBody(span, sig) { + var shortBody = document.getElementById("short-body-" + sig); + var longBody = document.getElementById("long-body-" + sig); + + shortBody.classList.toggle("toggled") + longBody.classList.toggle("toggled") + + span.innerHTML = (span.innerHTML == "[+]") ? "[-]" : "[+]"; + } + </script> </div><!-- end member --> <div id="isGlobalCommittable" class="member "> <div class="member-title"> + <span class="expand-button" onclick="toggleMemberBody(this, 'isGlobalCommittable');">[+]</span> <span class="member-annotations"> </span> @@ -5428,13 +5522,31 @@ </div><!-- end member-title --> <div class="member-body"> - <p>Can this state be transitively committed until the top-level?</p> + <div class="member-body-short" id="short-body-isGlobalCommittable"> + <p>Can this state be transitively committed until the top-level?</p> + + </div> + <div class="member-body-long" id ="long-body-isGlobalCommittable"> + <p>Can this state be transitively committed until the top-level?</p> + </div> </div> + <script> + function toggleMemberBody(span, sig) { + var shortBody = document.getElementById("short-body-" + sig); + var longBody = document.getElementById("long-body-" + sig); + + shortBody.classList.toggle("toggled") + longBody.classList.toggle("toggled") + + span.innerHTML = (span.innerHTML == "[+]") ? "[-]" : "[+]"; + } + </script> </div><!-- end member --> <div id="myConstraint" class="member private"> <div class="member-title"> + <span class="expand-button" onclick="toggleMemberBody(this, 'myConstraint');">[+]</span> <span class="member-annotations"> </span> @@ -5460,12 +5572,29 @@ </div><!-- end member-title --> <div class="member-body"> - + <div class="member-body-short" id="short-body-myConstraint"> + + </div> + <div class="member-body-long" id ="long-body-myConstraint"> + + </div> </div> + <script> + function toggleMemberBody(span, sig) { + var shortBody = document.getElementById("short-body-" + sig); + var longBody = document.getElementById("long-body-" + sig); + + shortBody.classList.toggle("toggled") + longBody.classList.toggle("toggled") + + span.innerHTML = (span.innerHTML == "[+]") ? "[-]" : "[+]"; + } + </script> </div><!-- end member --> <div id="myEphemeral" class="member private"> <div class="member-title"> + <span class="expand-button" onclick="toggleMemberBody(this, 'myEphemeral');">[+]</span> <span class="member-annotations"> </span> @@ -5491,12 +5620,29 @@ </div><!-- end member-title --> <div class="member-body"> - + <div class="member-body-short" id="short-body-myEphemeral"> + + </div> + <div class="member-body-long" id ="long-body-myEphemeral"> + + </div> </div> + <script> + function toggleMemberBody(span, sig) { + var shortBody = document.getElementById("short-body-" + sig); + var longBody = document.getElementById("long-body-" + sig); + + shortBody.classList.toggle("toggled") + longBody.classList.toggle("toggled") + + span.innerHTML = (span.innerHTML == "[+]") ? "[-]" : "[+]"; + } + </script> </div><!-- end member --> <div id="myReporter" class="member private"> <div class="member-title"> + <span class="expand-button" onclick="toggleMemberBody(this, 'myReporter');">[+]</span> <span class="member-annotations"> </span> @@ -5522,12 +5668,29 @@ </div><!-- end member-title --> <div class="member-body"> - + <div class="member-body-short" id="short-body-myReporter"> + + </div> + <div class="member-body-long" id ="long-body-myReporter"> + + </div> </div> + <script> + function toggleMemberBody(span, sig) { + var shortBody = document.getElementById("short-body-" + sig); + var longBody = document.getElementById("long-body-" + sig); + + shortBody.classList.toggle("toggled") + longBody.classList.toggle("toggled") + + span.innerHTML = (span.innerHTML == "[+]") ? "[-]" : "[+]"; + } + </script> </div><!-- end member --> <div id="previous" class="member private"> <div class="member-title"> + <span class="expand-button" onclick="toggleMemberBody(this, 'previous');">[+]</span> <span class="member-annotations"> </span> @@ -5553,12 +5716,29 @@ </div><!-- end member-title --> <div class="member-body"> - + <div class="member-body-short" id="short-body-previous"> + + </div> + <div class="member-body-long" id ="long-body-previous"> + + </div> </div> + <script> + function toggleMemberBody(span, sig) { + var shortBody = document.getElementById("short-body-" + sig); + var longBody = document.getElementById("long-body-" + sig); + + shortBody.classList.toggle("toggled") + longBody.classList.toggle("toggled") + + span.innerHTML = (span.innerHTML == "[+]") ? "[-]" : "[+]"; + } + </script> </div><!-- end member --> <div id="previousConstraint" class="member private"> <div class="member-title"> + <span class="expand-button" onclick="toggleMemberBody(this, 'previousConstraint');">[+]</span> <span class="member-annotations"> </span> @@ -5584,12 +5764,29 @@ </div><!-- end member-title --> <div class="member-body"> - + <div class="member-body-short" id="short-body-previousConstraint"> + + </div> + <div class="member-body-long" id ="long-body-previousConstraint"> + + </div> </div> + <script> + function toggleMemberBody(span, sig) { + var shortBody = document.getElementById("short-body-" + sig); + var longBody = document.getElementById("long-body-" + sig); + + shortBody.classList.toggle("toggled") + longBody.classList.toggle("toggled") + + span.innerHTML = (span.innerHTML == "[+]") ? "[-]" : "[+]"; + } + </script> </div><!-- end member --> <div id="r" class="member private"> <div class="member-title"> + <span class="expand-button" onclick="toggleMemberBody(this, 'r');">[+]</span> <span class="member-annotations"> </span> @@ -5615,12 +5812,29 @@ </div><!-- end member-title --> <div class="member-body"> - + <div class="member-body-short" id="short-body-r"> + + </div> + <div class="member-body-long" id ="long-body-r"> + + </div> </div> + <script> + function toggleMemberBody(span, sig) { + var shortBody = document.getElementById("short-body-" + sig); + var longBody = document.getElementById("long-body-" + sig); + + shortBody.classList.toggle("toggled") + longBody.classList.toggle("toggled") + + span.innerHTML = (span.innerHTML == "[+]") ? "[-]" : "[+]"; + } + </script> </div><!-- end member --> <div id="commit()(ctx)" class="member "> <div class="member-title"> + <span class="expand-button" onclick="toggleMemberBody(this, 'commit()(ctx)');">[+]</span> <span class="member-annotations"> </span> @@ -5666,7 +5880,8 @@ </div><!-- end member-title --> <div class="member-body"> - <p>Commit typer state so that its information is copied into current typer state + <div class="member-body-short" id="short-body-commit()(ctx)"> + <p>Commit typer state so that its information is copied into current typer state In addition (1) the owning state of undetermined or temporarily instantia... </p> <p> @@ -5674,11 +5889,42 @@ In addition (1) the owning state of undetermined or temporarily instantia... <p> </p> + </div> + <div class="member-body-long" id ="long-body-commit()(ctx)"> + <p>Commit typer state so that its information is copied into current typer state +In addition (1) the owning state of undetermined or temporarily instantiated +type variables changes from this typer state to the current one. (2) Variables +that were temporarily instantiated in the current typer state are permanently +instantiated instead.</p> +<p>A note on merging: An interesting test case is isApplicableSafe.scala. It turns out that this +requires a context merge using the new `&' operator. Sequence of actions: +1) Typecheck argument in typerstate 1. +2) Cache argument. +3) Evolve same typer state (to typecheck other arguments, say) +leading to a different constraint. +4) Take typechecked argument in same state.</p> +<p>It turns out that the merge is needed not just for +isApplicableSafe but also for (e.g. erased-lubs.scala) as well as +many parts of dotty itself.</p> + + </div> </div> + <script> + function toggleMemberBody(span, sig) { + var shortBody = document.getElementById("short-body-" + sig); + var longBody = document.getElementById("long-body-" + sig); + + shortBody.classList.toggle("toggled") + longBody.classList.toggle("toggled") + + span.innerHTML = (span.innerHTML == "[+]") ? "[-]" : "[+]"; + } + </script> </div><!-- end member --> <div id="constraint" class="member "> <div class="member-title"> + <span class="expand-button" onclick="toggleMemberBody(this, 'constraint');">[+]</span> <span class="member-annotations"> </span> @@ -5704,13 +5950,31 @@ In addition (1) the owning state of undetermined or temporarily instantia... </div><!-- end member-title --> <div class="member-body"> - <p>The current constraint set</p> + <div class="member-body-short" id="short-body-constraint"> + <p>The current constraint set</p> + </div> + <div class="member-body-long" id ="long-body-constraint"> + <p>The current constraint set</p> + + </div> </div> + <script> + function toggleMemberBody(span, sig) { + var shortBody = document.getElementById("short-body-" + sig); + var longBody = document.getElementById("long-body-" + sig); + + shortBody.classList.toggle("toggled") + longBody.classList.toggle("toggled") + + span.innerHTML = (span.innerHTML == "[+]") ? "[-]" : "[+]"; + } + </script> </div><!-- end member --> <div id="constraint_=(c)(ctx)" class="member "> <div class="member-title"> + <span class="expand-button" onclick="toggleMemberBody(this, 'constraint_=(c)(ctx)');">[+]</span> <span class="member-annotations"> </span> @@ -5762,12 +6026,29 @@ In addition (1) the owning state of undetermined or temporarily instantia... </div><!-- end member-title --> <div class="member-body"> - + <div class="member-body-short" id="short-body-constraint_=(c)(ctx)"> + + </div> + <div class="member-body-long" id ="long-body-constraint_=(c)(ctx)"> + + </div> </div> + <script> + function toggleMemberBody(span, sig) { + var shortBody = document.getElementById("short-body-" + sig); + var longBody = document.getElementById("long-body-" + sig); + + shortBody.classList.toggle("toggled") + longBody.classList.toggle("toggled") + + span.innerHTML = (span.innerHTML == "[+]") ? "[-]" : "[+]"; + } + </script> </div><!-- end member --> <div id="ephemeral" class="member "> <div class="member-title"> + <span class="expand-button" onclick="toggleMemberBody(this, 'ephemeral');">[+]</span> <span class="member-annotations"> </span> @@ -5793,16 +6074,39 @@ In addition (1) the owning state of undetermined or temporarily instantia... </div><!-- end member-title --> <div class="member-body"> - <p>The ephemeral flag is set as a side effect if an operation accesses + <div class="member-body-short" id="short-body-ephemeral"> + <p>The ephemeral flag is set as a side effect if an operation accesses the underlying type of a type variable. The reason we need this flag is that any suc... </p> + </div> + <div class="member-body-long" id ="long-body-ephemeral"> + <p>The ephemeral flag is set as a side effect if an operation accesses +the underlying type of a type variable. The reason we need this flag is +that any such operation is not referentially transparent; it might logically change +its value at the moment the type variable is instantiated. Caching code needs to +check the ephemeral flag; If the flag is set during an operation, the result +of that operation should not be cached.</p> + + </div> </div> + <script> + function toggleMemberBody(span, sig) { + var shortBody = document.getElementById("short-body-" + sig); + var longBody = document.getElementById("long-body-" + sig); + + shortBody.classList.toggle("toggled") + longBody.classList.toggle("toggled") + + span.innerHTML = (span.innerHTML == "[+]") ? "[-]" : "[+]"; + } + </script> </div><!-- end member --> <div id="ephemeral_=(x)" class="member "> <div class="member-title"> + <span class="expand-button" onclick="toggleMemberBody(this, 'ephemeral_=(x)');">[+]</span> <span class="member-annotations"> </span> @@ -5841,12 +6145,29 @@ that any suc... </div><!-- end member-title --> <div class="member-body"> - + <div class="member-body-short" id="short-body-ephemeral_=(x)"> + + </div> + <div class="member-body-long" id ="long-body-ephemeral_=(x)"> + + </div> </div> + <script> + function toggleMemberBody(span, sig) { + var shortBody = document.getElementById("short-body-" + sig); + var longBody = document.getElementById("long-body-" + sig); + + shortBody.classList.toggle("toggled") + longBody.classList.toggle("toggled") + + span.innerHTML = (span.innerHTML == "[+]") ? "[-]" : "[+]"; + } + </script> </div><!-- end member --> <div id="fresh(isCommittable)" class="member "> <div class="member-title"> + <span class="expand-button" onclick="toggleMemberBody(this, 'fresh(isCommittable)');">[+]</span> <span class="member-annotations"> </span> @@ -5885,13 +6206,31 @@ that any suc... </div><!-- end member-title --> <div class="member-body"> - <p>A fresh typer state with the same constraint as this one.</p> + <div class="member-body-short" id="short-body-fresh(isCommittable)"> + <p>A fresh typer state with the same constraint as this one.</p> + + </div> + <div class="member-body-long" id ="long-body-fresh(isCommittable)"> + <p>A fresh typer state with the same constraint as this one.</p> + </div> </div> + <script> + function toggleMemberBody(span, sig) { + var shortBody = document.getElementById("short-body-" + sig); + var longBody = document.getElementById("long-body-" + sig); + + shortBody.classList.toggle("toggled") + longBody.classList.toggle("toggled") + + span.innerHTML = (span.innerHTML == "[+]") ? "[-]" : "[+]"; + } + </script> </div><!-- end member --> <div id="gc()(ctx)" class="member "> <div class="member-title"> + <span class="expand-button" onclick="toggleMemberBody(this, 'gc()(ctx)');">[+]</span> <span class="member-annotations"> </span> @@ -5937,15 +6276,35 @@ that any suc... </div><!-- end member-title --> <div class="member-body"> - <p>Make type variable instances permanent by assigning to <code>inst</code> field if + <div class="member-body-short" id="short-body-gc()(ctx)"> + <p>Make type variable instances permanent by assigning to <code>inst</code> field if type variable instantiation cannot be retracted anymore. Then, remove no-longer nee...</p> + </div> + <div class="member-body-long" id ="long-body-gc()(ctx)"> + <p>Make type variable instances permanent by assigning to <code>inst</code> field if +type variable instantiation cannot be retracted anymore. Then, remove +no-longer needed constraint entries.</p> + + </div> </div> + <script> + function toggleMemberBody(span, sig) { + var shortBody = document.getElementById("short-body-" + sig); + var longBody = document.getElementById("long-body-" + sig); + + shortBody.classList.toggle("toggled") + longBody.classList.toggle("toggled") + + span.innerHTML = (span.innerHTML == "[+]") ? "[-]" : "[+]"; + } + </script> </div><!-- end member --> <div id="isCommitted_=(x$1)" class="member private"> <div class="member-title"> + <span class="expand-button" onclick="toggleMemberBody(this, 'isCommitted_=(x$1)');">[+]</span> <span class="member-annotations"> </span> @@ -5984,12 +6343,29 @@ no-longer nee...</p> </div><!-- end member-title --> <div class="member-body"> - + <div class="member-body-short" id="short-body-isCommitted_=(x$1)"> + + </div> + <div class="member-body-long" id ="long-body-isCommitted_=(x$1)"> + + </div> </div> + <script> + function toggleMemberBody(span, sig) { + var shortBody = document.getElementById("short-body-" + sig); + var longBody = document.getElementById("long-body-" + sig); + + shortBody.classList.toggle("toggled") + longBody.classList.toggle("toggled") + + span.innerHTML = (span.innerHTML == "[+]") ? "[-]" : "[+]"; + } + </script> </div><!-- end member --> <div id="myConstraint_=(x$1)" class="member private"> <div class="member-title"> + <span class="expand-button" onclick="toggleMemberBody(this, 'myConstraint_=(x$1)');">[+]</span> <span class="member-annotations"> </span> @@ -6028,12 +6404,29 @@ no-longer nee...</p> </div><!-- end member-title --> <div class="member-body"> - + <div class="member-body-short" id="short-body-myConstraint_=(x$1)"> + + </div> + <div class="member-body-long" id ="long-body-myConstraint_=(x$1)"> + + </div> </div> + <script> + function toggleMemberBody(span, sig) { + var shortBody = document.getElementById("short-body-" + sig); + var longBody = document.getElementById("long-body-" + sig); + + shortBody.classList.toggle("toggled") + longBody.classList.toggle("toggled") + + span.innerHTML = (span.innerHTML == "[+]") ? "[-]" : "[+]"; + } + </script> </div><!-- end member --> <div id="myEphemeral_=(x$1)" class="member private"> <div class="member-title"> + <span class="expand-button" onclick="toggleMemberBody(this, 'myEphemeral_=(x$1)');">[+]</span> <span class="member-annotations"> </span> @@ -6072,12 +6465,29 @@ no-longer nee...</p> </div><!-- end member-title --> <div class="member-body"> - + <div class="member-body-short" id="short-body-myEphemeral_=(x$1)"> + + </div> + <div class="member-body-long" id ="long-body-myEphemeral_=(x$1)"> + + </div> </div> + <script> + function toggleMemberBody(span, sig) { + var shortBody = document.getElementById("short-body-" + sig); + var longBody = document.getElementById("long-body-" + sig); + + shortBody.classList.toggle("toggled") + longBody.classList.toggle("toggled") + + span.innerHTML = (span.innerHTML == "[+]") ? "[-]" : "[+]"; + } + </script> </div><!-- end member --> <div id="myReporter_=(x$1)" class="member private"> <div class="member-title"> + <span class="expand-button" onclick="toggleMemberBody(this, 'myReporter_=(x$1)');">[+]</span> <span class="member-annotations"> </span> @@ -6116,12 +6526,29 @@ no-longer nee...</p> </div><!-- end member-title --> <div class="member-body"> - + <div class="member-body-short" id="short-body-myReporter_=(x$1)"> + + </div> + <div class="member-body-long" id ="long-body-myReporter_=(x$1)"> + + </div> </div> + <script> + function toggleMemberBody(span, sig) { + var shortBody = document.getElementById("short-body-" + sig); + var longBody = document.getElementById("long-body-" + sig); + + shortBody.classList.toggle("toggled") + longBody.classList.toggle("toggled") + + span.innerHTML = (span.innerHTML == "[+]") ? "[-]" : "[+]"; + } + </script> </div><!-- end member --> <div id="reporter" class="member "> <div class="member-title"> + <span class="expand-button" onclick="toggleMemberBody(this, 'reporter');">[+]</span> <span class="member-annotations"> </span> @@ -6147,13 +6574,31 @@ no-longer nee...</p> </div><!-- end member-title --> <div class="member-body"> - <p>The current reporter</p> + <div class="member-body-short" id="short-body-reporter"> + <p>The current reporter</p> + + </div> + <div class="member-body-long" id ="long-body-reporter"> + <p>The current reporter</p> + </div> </div> + <script> + function toggleMemberBody(span, sig) { + var shortBody = document.getElementById("short-body-" + sig); + var longBody = document.getElementById("long-body-" + sig); + + shortBody.classList.toggle("toggled") + longBody.classList.toggle("toggled") + + span.innerHTML = (span.innerHTML == "[+]") ? "[-]" : "[+]"; + } + </script> </div><!-- end member --> <div id="toText(printer)" class="member "> <div class="member-title"> + <span class="expand-button" onclick="toggleMemberBody(this, 'toText(printer)');">[+]</span> <span class="member-annotations"> </span> @@ -6192,15 +6637,35 @@ no-longer nee...</p> </div><!-- end member-title --> <div class="member-body"> - <p>The text representation of this showable element. + <div class="member-body-short" id="short-body-toText(printer)"> + <p>The text representation of this showable element. This normally dispatches to a pattern matching method in Printers.</p> + </div> + <div class="member-body-long" id ="long-body-toText(printer)"> + <p>The text representation of this showable element. +This normally dispatches to a pattern matching +method in Printers.</p> + + </div> </div> + <script> + function toggleMemberBody(span, sig) { + var shortBody = document.getElementById("short-body-" + sig); + var longBody = document.getElementById("long-body-" + sig); + + shortBody.classList.toggle("toggled") + longBody.classList.toggle("toggled") + + span.innerHTML = (span.innerHTML == "[+]") ? "[-]" : "[+]"; + } + </script> </div><!-- end member --> <div id="tryWithFallback(op)(fallback)(ctx)" class="member "> <div class="member-title"> + <span class="expand-button" onclick="toggleMemberBody(this, 'tryWithFallback(op)(fallback)(ctx)');">[+]</span> <span class="member-annotations"> </span> @@ -6263,7 +6728,8 @@ method in Printers.</p> </div><!-- end member-title --> <div class="member-body"> - <p>Try operation <code>op</code>; if it produces errors, execute <code>fallback</code> with constraint and + <div class="member-body-short" id="short-body-tryWithFallback(op)(fallback)(ctx)"> + <p>Try operation <code>op</code>; if it produces errors, execute <code>fallback</code> with constraint and reporter as they were before <code>op</code> was executed. This is similar to <code>typer/tr...</code> </p> <pre><code>tryEither { implicit ctx => op } { (_, _) => fallBack } @@ -6274,11 +6740,50 @@ reporter as they were before <code>op</code> was executed. This is similar to <c <p> </p> + </div> + <div class="member-body-long" id ="long-body-tryWithFallback(op)(fallback)(ctx)"> + <p>Try operation <code>op</code>; if it produces errors, execute <code>fallback</code> with constraint and +reporter as they were before <code>op</code> was executed. This is similar to <code>typer/tryEither</code>, +but with one important difference: Any type variable instantiations produced by <code>op</code> +are persisted even if <code>op</code> fails. This is normally not what one wants and therefore +it is recommended to use</p> +<pre><code>tryEither { implicit ctx => op } { (_, _) => fallBack } +</code></pre> +<p>instead of</p> +<pre><code>ctx.tryWithFallback(op)(fallBack) +</code></pre> +<p><code>tryWithFallback</code> is only used when an implicit parameter search fails +and the whole expression is subsequently retype-checked with a Wildcard +expected type (so as to allow an implicit conversion on the result and +avoid over-constraining the implicit parameter search). In this case, +the only type variables that might be falsely instantiated by <code>op</code> but +not by <code>fallBack</code> are type variables in the typed expression itself, and +these will be thrown away and new ones will be created on re-typing. +So <code>tryWithFallback</code> is safe. It is also necessary because without it +we do not propagate enough instantiation information into the implicit search +and this might lead to a missing parameter type error. This is exhibited +at several places in the test suite (for instance in <code>pos_typers</code>). +Overall, this is rather ugly, but despite trying for 2 days I have not +found a better solution.</p> + + </div> </div> + <script> + function toggleMemberBody(span, sig) { + var shortBody = document.getElementById("short-body-" + sig); + var longBody = document.getElementById("long-body-" + sig); + + shortBody.classList.toggle("toggled") + longBody.classList.toggle("toggled") + + span.innerHTML = (span.innerHTML == "[+]") ? "[-]" : "[+]"; + } + </script> </div><!-- end member --> <div id="uncommittedAncestor" class="member "> <div class="member-title"> + <span class="expand-button" onclick="toggleMemberBody(this, 'uncommittedAncestor');">[+]</span> <span class="member-annotations"> </span> @@ -6304,14 +6809,33 @@ reporter as they were before <code>op</code> was executed. This is similar to <c </div><!-- end member-title --> <div class="member-body"> - <p>The closest ancestor of this typer state (including possibly this typer state itself) + <div class="member-body-short" id="short-body-uncommittedAncestor"> + <p>The closest ancestor of this typer state (including possibly this typer state itself) which is not yet committed, or which does not have a parent.</p> + </div> + <div class="member-body-long" id ="long-body-uncommittedAncestor"> + <p>The closest ancestor of this typer state (including possibly this typer state itself) +which is not yet committed, or which does not have a parent.</p> + + </div> </div> + <script> + function toggleMemberBody(span, sig) { + var shortBody = document.getElementById("short-body-" + sig); + var longBody = document.getElementById("long-body-" + sig); + + shortBody.classList.toggle("toggled") + longBody.classList.toggle("toggled") + + span.innerHTML = (span.innerHTML == "[+]") ? "[-]" : "[+]"; + } + </script> </div><!-- end member --> <div id="withReporter(reporter)" class="member "> <div class="member-title"> + <span class="expand-button" onclick="toggleMemberBody(this, 'withReporter(reporter)');">[+]</span> <span class="member-annotations"> </span> @@ -6350,9 +6874,26 @@ which is not yet committed, or which does not have a parent.</p> </div><!-- end member-title --> <div class="member-body"> - <p>A fresh type state with the same constraint as this one and the given reporter</p> + <div class="member-body-short" id="short-body-withReporter(reporter)"> + <p>A fresh type state with the same constraint as this one and the given reporter</p> + + </div> + <div class="member-body-long" id ="long-body-withReporter(reporter)"> + <p>A fresh type state with the same constraint as this one and the given reporter</p> + </div> </div> + <script> + function toggleMemberBody(span, sig) { + var shortBody = document.getElementById("short-body-" + sig); + var longBody = document.getElementById("long-body-" + sig); + + shortBody.classList.toggle("toggled") + longBody.classList.toggle("toggled") + + span.innerHTML = (span.innerHTML == "[+]") ? "[-]" : "[+]"; + } + </script> </div><!-- end member --> </div> |