aboutsummaryrefslogtreecommitdiff
path: root/api/dotty/tools/dotc/core/MutableTyperState.html
diff options
context:
space:
mode:
Diffstat (limited to 'api/dotty/tools/dotc/core/MutableTyperState.html')
-rw-r--r--api/dotty/tools/dotc/core/MutableTyperState.html593
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 `&amp;' 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 =&gt; op } { (_, _) =&gt; 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 =&gt; op } { (_, _) =&gt; 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>