aboutsummaryrefslogtreecommitdiff
path: root/api/dotty/tools/dotc/core/TypeOps.html
diff options
context:
space:
mode:
authordotty-bot <felix.mulder@epfl.ch>2017-02-03 18:05:53 +0000
committerdotty-bot <felix.mulder@epfl.ch>2017-02-03 18:05:53 +0000
commit881c3b182fda1036d5a507d08ff85f7709d70703 (patch)
treec0248d0a1664dcbf9f483b65f65e4d4710c3d0bb /api/dotty/tools/dotc/core/TypeOps.html
parentb45ed2e609603cdaa94f9b7f5099da01e5e45314 (diff)
downloaddotty-881c3b182fda1036d5a507d08ff85f7709d70703.tar.gz
dotty-881c3b182fda1036d5a507d08ff85f7709d70703.tar.bz2
dotty-881c3b182fda1036d5a507d08ff85f7709d70703.zip
Update gh-pages site for da7d7231b7f21fe1085abc569eb783590074a359
Diffstat (limited to 'api/dotty/tools/dotc/core/TypeOps.html')
-rw-r--r--api/dotty/tools/dotc/core/TypeOps.html525
1 files changed, 500 insertions, 25 deletions
diff --git a/api/dotty/tools/dotc/core/TypeOps.html b/api/dotty/tools/dotc/core/TypeOps.html
index b39eb51d6..79395c2e4 100644
--- a/api/dotty/tools/dotc/core/TypeOps.html
+++ b/api/dotty/tools/dotc/core/TypeOps.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,29 @@
<span id="entity-name">
TypeOps
</span>
+
+
</div>
- <h1 class="section ">Members</h1>
+ <h1 class="section empty">
+ Constructors
+ </h1>
+
+ <div id="entity-constructors" class="entity-section empty">
+
+ </div>
+
+ <h1 class="section ">
+ Members
+ </h1>
<div id="entity-members" class="entity-section ">
<div id="AsSeenFromMap" class="member ">
<div class="member-title">
+ <span class="expand-button" onclick="toggleMemberBody(this, 'AsSeenFromMap');">[+]</span>
<span class="member-annotations">
</span>
@@ -5363,13 +5379,31 @@
</div><!-- end member-title -->
<div class="member-body">
- <p>The TypeMap handling the asSeenFrom in more complicated cases</p>
+ <div class="member-body-short" id="short-body-AsSeenFromMap">
+ <p>The TypeMap handling the asSeenFrom in more complicated cases</p>
+ </div>
+ <div class="member-body-long" id ="long-body-AsSeenFromMap">
+ <p>The TypeMap handling the asSeenFrom in more complicated cases</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="SimplifyMap" class="member ">
<div class="member-title">
+ <span class="expand-button" onclick="toggleMemberBody(this, 'SimplifyMap');">[+]</span>
<span class="member-annotations">
</span>
@@ -5393,12 +5427,29 @@
</div><!-- end member-title -->
<div class="member-body">
-
+ <div class="member-body-short" id="short-body-SimplifyMap">
+
+ </div>
+ <div class="member-body-long" id ="long-body-SimplifyMap">
+
+ </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="deskolemize$" class="member ">
<div class="member-title">
+ <span class="expand-button" onclick="toggleMemberBody(this, 'deskolemize$');">[+]</span>
<span class="member-annotations">
</span>
@@ -5422,13 +5473,31 @@
</div><!-- end member-title -->
<div class="member-body">
- <p>Approximate a type <code>tp</code> with a type that does not contain skolem types.</p>
+ <div class="member-body-short" id="short-body-deskolemize$">
+ <p>Approximate a type <code>tp</code> with a type that does not contain skolem types.</p>
+
+ </div>
+ <div class="member-body-long" id ="long-body-deskolemize$">
+ <p>Approximate a type <code>tp</code> with a type that does not contain skolem types.</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="BoundsViolation" class="member ">
<div class="member-title">
+ <span class="expand-button" onclick="toggleMemberBody(this, 'BoundsViolation');">[+]</span>
<span class="member-annotations">
</span>
@@ -5450,7 +5519,7 @@
<span class="type-alias">
<span class="equals"> = </span>
<span class="no-right">(</span>
-Tree<span>, </span>String<span>, </span>Type
+<a href="../../../../.././api/dotty/tools/dotc/ast/Trees$/Instance.html#Tree">Tree</a><span>, </span>String<span>, </span>Type
<span class="no-left">)</span>
</span>
@@ -5459,12 +5528,37 @@ Tree<span>, </span>String<span>, </span>Type
</div><!-- end member-title -->
<div class="member-body">
-
+ <div class="member-body-short" id="short-body-BoundsViolation">
+ <p>An argument bounds violation is a triple consisting of
+- the argument tree
+- a string &quot;upper&quot; or &quot;lower&quot; indicating which bound is violated
+- the violate...</p>
+
+ </div>
+ <div class="member-body-long" id ="long-body-BoundsViolation">
+ <p>An argument bounds violation is a triple consisting of
+- the argument tree
+- a string &quot;upper&quot; or &quot;lower&quot; indicating which bound is violated
+- the violated bound</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="asSeenFrom(tp,pre,cls)" class="member ">
<div class="member-title">
+ <span class="expand-button" onclick="toggleMemberBody(this, 'asSeenFrom(tp,pre,cls)');">[+]</span>
<span class="member-annotations">
</span>
@@ -5519,7 +5613,8 @@ Tree<span>, </span>String<span>, </span>Type
</div><!-- end member-title -->
<div class="member-body">
- <p>The type <code>tp</code> as seen from prefix <code>pre</code> and owner <code>cls</code>. See the spec
+ <div class="member-body-short" id="short-body-asSeenFrom(tp,pre,cls)">
+ <p>The type <code>tp</code> as seen from prefix <code>pre</code> and owner <code>cls</code>. See the spec
for what this means. Called very often, so the code is optimized heavily.</p>
<p>A tricky aspec...</p>
<p></p>
@@ -5531,11 +5626,45 @@ for what this means. Called very often, so the code is optimized heavily.</p>
<p>
</p>
+ </div>
+ <div class="member-body-long" id ="long-body-asSeenFrom(tp,pre,cls)">
+ <p>The type <code>tp</code> as seen from prefix <code>pre</code> and owner <code>cls</code>. See the spec
+for what this means. Called very often, so the code is optimized heavily.</p>
+<p>A tricky aspect is what to do with unstable prefixes. E.g. say we have a class</p>
+<p>class C { type T; def f(x: T): T }</p>
+<p>and an expression <code>e</code> of type <code>C</code>. Then computing the type of <code>e.f</code> leads
+to the query asSeenFrom(<code>C</code>, <code>(x: T)T</code>). What should its result be? The
+naive answer <code>(x: C#T)C#T</code> is incorrect given that we treat <code>C#T</code> as the existential
+<code>exists(c: C)c.T</code>. What we need to do instead is to skolemize the existential. So
+the answer would be <code>(x: c.T)c.T</code> for some (unknown) value <code>c</code> of type <code>C</code>.
+<code>c.T</code> is expressed in the compiler as a skolem type <code>Skolem(C)</code>.</p>
+<p>Now, skolemization is messy and expensive, so we want to do it only if we absolutely
+must. Also, skolemizing immediately would mean that asSeenFrom was no longer
+idempotent - each call would return a type with a different skolem.
+Instead we produce an annotated type that marks the prefix as unsafe:</p>
+<p>(x: (C @ UnsafeNonvariant)#T)C#T</p>
+<p>We also set a global state flag <code>unsafeNonvariant</code> to the current run.
+When typing a Select node, typer will check that flag, and if it
+points to the current run will scan the result type of the select for</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="asSeenFrom(tp,pre,cls,theMap)" class="member private">
<div class="member-title">
+ <span class="expand-button" onclick="toggleMemberBody(this, 'asSeenFrom(tp,pre,cls,theMap)');">[+]</span>
<span class="member-annotations">
</span>
@@ -5598,14 +5727,33 @@ for what this means. Called very often, so the code is optimized heavily.</p>
</div><!-- end member-title -->
<div class="member-body">
- <p>Helper method, taking a map argument which is instantiated only for more
+ <div class="member-body-short" id="short-body-asSeenFrom(tp,pre,cls,theMap)">
+ <p>Helper method, taking a map argument which is instantiated only for more
+complicated cases of asSeenFrom.</p>
+
+ </div>
+ <div class="member-body-long" id ="long-body-asSeenFrom(tp,pre,cls,theMap)">
+ <p>Helper method, taking a map argument which is instantiated only for more
complicated cases of asSeenFrom.</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="boundsViolations(args,boundss,instantiate)(ctx)" class="member ">
<div class="member-title">
+ <span class="expand-button" onclick="toggleMemberBody(this, 'boundsViolations(args,boundss,instantiate)(ctx)');">[+]</span>
<span class="member-annotations">
</span>
@@ -5677,18 +5825,39 @@ Type
- <span class="no-left">: List</span>
+ <span class="no-left">: List
+<span class="no-left no-right">[</span>
+BoundsViolation
+<span class="no-left">]</span></span>
</div><!-- end member-title -->
<div class="member-body">
- <p>The list of violations where arguments are not within bounds.</p>
+ <div class="member-body-short" id="short-body-boundsViolations(args,boundss,instantiate)(ctx)">
+ <p>The list of violations where arguments are not within bounds.</p>
+
+ </div>
+ <div class="member-body-long" id ="long-body-boundsViolations(args,boundss,instantiate)(ctx)">
+ <p>The list of violations where arguments are not within bounds.</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="canAutoTuple" class="member ">
<div class="member-title">
+ <span class="expand-button" onclick="toggleMemberBody(this, 'canAutoTuple');">[+]</span>
<span class="member-annotations">
</span>
@@ -5714,13 +5883,31 @@ Type
</div><!-- end member-title -->
<div class="member-body">
- <p>Is auto-tupling enabled?</p>
+ <div class="member-body-short" id="short-body-canAutoTuple">
+ <p>Is auto-tupling enabled?</p>
+ </div>
+ <div class="member-body-long" id ="long-body-canAutoTuple">
+ <p>Is auto-tupling enabled?</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="dynamicsEnabled" class="member ">
<div class="member-title">
+ <span class="expand-button" onclick="toggleMemberBody(this, 'dynamicsEnabled');">[+]</span>
<span class="member-annotations">
</span>
@@ -5746,12 +5933,29 @@ Type
</div><!-- end member-title -->
<div class="member-body">
-
+ <div class="member-body-short" id="short-body-dynamicsEnabled">
+
+ </div>
+ <div class="member-body-long" id ="long-body-dynamicsEnabled">
+
+ </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="enterArgBinding(formal,info,cls,decls)" class="member private">
<div class="member-title">
+ <span class="expand-button" onclick="toggleMemberBody(this, 'enterArgBinding(formal,info,cls,decls)');">[+]</span>
<span class="member-annotations">
</span>
@@ -5814,16 +6018,44 @@ Type
</div><!-- end member-title -->
<div class="member-body">
- <p>Not currently needed:</p>
+ <div class="member-body-short" id="short-body-enterArgBinding(formal,info,cls,decls)">
+ <p>Not currently needed:</p>
<p>def liftToRec(f: (Type, Type) =&gt; Type)(tp1: Type, tp2: Type)(implicit ctx: Context) = {
def f2(tp1: Type, tp2: Type): Type = tp2 m...
</p>
+ </div>
+ <div class="member-body-long" id ="long-body-enterArgBinding(formal,info,cls,decls)">
+ <p>Not currently needed:</p>
+<p>def liftToRec(f: (Type, Type) =&gt; Type)(tp1: Type, tp2: Type)(implicit ctx: Context) = {
+def f2(tp1: Type, tp2: Type): Type = tp2 match {
+case tp2: RecType =&gt; tp2.rebind(f(tp1, tp2.parent))
+case _ =&gt; f(tp1, tp2)
+}
+tp1 match {
+case tp1: RecType =&gt; tp1.rebind(f2(tp1.parent, tp2))
+case _ =&gt; f2(tp1, tp2)
+}
+}</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="featureEnabled(owner,feature)" class="member ">
<div class="member-title">
+ <span class="expand-button" onclick="toggleMemberBody(this, 'featureEnabled(owner,feature)');">[+]</span>
<span class="member-annotations">
</span>
@@ -5870,7 +6102,8 @@ def f2(tp1: Type, tp2: Type): Type = tp2 m...
</div><!-- end member-title -->
<div class="member-body">
- <p>Is <code>feature</code> enabled in class <code>owner</code>?
+ <div class="member-body-short" id="short-body-featureEnabled(owner,feature)">
+ <p>Is <code>feature</code> enabled in class <code>owner</code>?
This is the case if one of the following two alternatives holds:</p>
<ol>
<li>
@@ -5884,11 +6117,47 @@ This is the case if one of the following two alternatives holds:</p>
<p><prefix>
</p>
+ </div>
+ <div class="member-body-long" id ="long-body-featureEnabled(owner,feature)">
+ <p>Is <code>feature</code> enabled in class <code>owner</code>?
+This is the case if one of the following two alternatives holds:</p>
+<ol>
+<li>
+<p>The feature is imported by a named import</p>
+<p>import owner.feature</p>
+</li>
+</ol>
+<p>(the feature may be bunched with others, or renamed, but wildcard imports
+don't count).</p>
+<ol>
+<li>
+<p>The feature is enabled by a compiler option</p>
+<ul>
+<li>language:<prefix>feature</li>
+</ul>
+</li>
+</ol>
+<p>where <prefix> is the full name of the owner followed by a &quot;.&quot; minus
+the prefix &quot;dotty.language.&quot;.</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="forwardRef(argSym,from,to,cls,decls)" class="member ">
<div class="member-title">
+ <span class="expand-button" onclick="toggleMemberBody(this, 'forwardRef(argSym,from,to,cls,decls)');">[+]</span>
<span class="member-annotations">
</span>
@@ -5959,18 +6228,41 @@ This is the case if one of the following two alternatives holds:</p>
</div><!-- end member-title -->
<div class="member-body">
- <p>If we have member definitions</p>
+ <div class="member-body-short" id="short-body-forwardRef(argSym,from,to,cls,decls)">
+ <p>If we have member definitions</p>
<p>type argSym v= from
type from v= to</p>
<p>where the variances of both alias are the same, then enter a new definition</p>
<p>type argSym...</p>
<p></p>
+ </div>
+ <div class="member-body-long" id ="long-body-forwardRef(argSym,from,to,cls,decls)">
+ <p>If we have member definitions</p>
+<p>type argSym v= from
+type from v= to</p>
+<p>where the variances of both alias are the same, then enter a new definition</p>
+<p>type argSym v= to</p>
+<p>unless a definition for <code>argSym</code> already exists in the current scope.</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="harmonizeUnion(tp)" class="member ">
<div class="member-title">
+ <span class="expand-button" onclick="toggleMemberBody(this, 'harmonizeUnion(tp)');">[+]</span>
<span class="member-annotations">
</span>
@@ -6009,7 +6301,8 @@ type from v= to</p>
</div><!-- end member-title -->
<div class="member-body">
- <p>Given a disjunction T1 | ... | Tn of types with potentially embedded
+ <div class="member-body-short" id="short-body-harmonizeUnion(tp)">
+ <p>Given a disjunction T1 | ... | Tn of types with potentially embedded
type variables, constrain type variables further if this eliminates
some of the bra...
</p>
@@ -6019,11 +6312,36 @@ some of the bra...
<p>
</p>
+ </div>
+ <div class="member-body-long" id ="long-body-harmonizeUnion(tp)">
+ <p>Given a disjunction T1 | ... | Tn of types with potentially embedded
+type variables, constrain type variables further if this eliminates
+some of the branches of the disjunction. Do this also for disjunctions
+embedded in intersections, as parents in refinements, and in recursive types.</p>
+<p>For instance, if <code>A</code> is an unconstrained type variable, then</p>
+<pre><code>ArrayBuffer[Int] | ArrayBuffer[A]
+</code></pre>
+<p>is approximated by constraining <code>A</code> to be =:= to <code>Int</code> and returning <code>ArrayBuffer[Int]</code>
+instead of <code>ArrayBuffer[_ &gt;: Int | A &lt;: Int &amp; A]</code></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="isLegalPrefix(pre)(ctx)" class="member private">
<div class="member-title">
+ <span class="expand-button" onclick="toggleMemberBody(this, 'isLegalPrefix(pre)(ctx)');">[+]</span>
<span class="member-annotations">
</span>
@@ -6075,12 +6393,29 @@ some of the bra...
</div><!-- end member-title -->
<div class="member-body">
-
+ <div class="member-body-short" id="short-body-isLegalPrefix(pre)(ctx)">
+
+ </div>
+ <div class="member-body-long" id ="long-body-isLegalPrefix(pre)(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="joinIfScala2(tp)" class="member private">
<div class="member-title">
+ <span class="expand-button" onclick="toggleMemberBody(this, 'joinIfScala2(tp)');">[+]</span>
<span class="member-annotations">
</span>
@@ -6119,13 +6454,31 @@ some of the bra...
</div><!-- end member-title -->
<div class="member-body">
- <p>Under -language:Scala2: Replace or-types with their joins</p>
+ <div class="member-body-short" id="short-body-joinIfScala2(tp)">
+ <p>Under -language:Scala2: Replace or-types with their joins</p>
+
+ </div>
+ <div class="member-body-long" id ="long-body-joinIfScala2(tp)">
+ <p>Under -language:Scala2: Replace or-types with their joins</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="makePackageObjPrefixExplicit(tpe)" class="member ">
<div class="member-title">
+ <span class="expand-button" onclick="toggleMemberBody(this, 'makePackageObjPrefixExplicit(tpe)');">[+]</span>
<span class="member-annotations">
</span>
@@ -6164,16 +6517,37 @@ some of the bra...
</div><!-- end member-title -->
<div class="member-body">
- <p>If <code>tpe</code> is of the form <code>p.x</code> where <code>p</code> refers to a package
+ <div class="member-body-short" id="short-body-makePackageObjPrefixExplicit(tpe)">
+ <p>If <code>tpe</code> is of the form <code>p.x</code> where <code>p</code> refers to a package
+but <code>x</code> is not owned by a package, expand it to</p>
+<pre><code>p.package.x
+</code></pre>
+
+ </div>
+ <div class="member-body-long" id ="long-body-makePackageObjPrefixExplicit(tpe)">
+ <p>If <code>tpe</code> is of the form <code>p.x</code> where <code>p</code> refers to a package
but <code>x</code> is not owned by a package, expand it to</p>
<pre><code>p.package.x
</code></pre>
+ </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="normalizeToClassRefs(parents,cls,decls)" class="member ">
<div class="member-title">
+ <span class="expand-button" onclick="toggleMemberBody(this, 'normalizeToClassRefs(parents,cls,decls)');">[+]</span>
<span class="member-annotations">
</span>
@@ -6226,20 +6600,43 @@ Type
- <span class="no-left">: List</span>
+ <span class="no-left">: List
+<span class="no-left no-right">[</span>
+TypeRef
+<span class="no-left">]</span></span>
</div><!-- end member-title -->
<div class="member-body">
- <p>Normalize a list of parent types of class <code>cls</code> that may contain refinements
+ <div class="member-body-short" id="short-body-normalizeToClassRefs(parents,cls,decls)">
+ <p>Normalize a list of parent types of class <code>cls</code> that may contain refinements
to a list of typerefs referring to classes, by converting all refinements to...
</p>
+ </div>
+ <div class="member-body-long" id ="long-body-normalizeToClassRefs(parents,cls,decls)">
+ <p>Normalize a list of parent types of class <code>cls</code> that may contain refinements
+to a list of typerefs referring to classes, by converting all refinements to member
+definitions in scope <code>decls</code>. Can add members to <code>decls</code> as a side-effect.</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="orDominator(tp)" class="member ">
<div class="member-title">
+ <span class="expand-button" onclick="toggleMemberBody(this, 'orDominator(tp)');">[+]</span>
<span class="member-annotations">
</span>
@@ -6278,7 +6675,8 @@ to a list of typerefs referring to classes, by converting all refinements to...
</div><!-- end member-title -->
<div class="member-body">
- <p>Approximate union type by intersection of its dominators.
+ <div class="member-body-short" id="short-body-orDominator(tp)">
+ <p>Approximate union type by intersection of its dominators.
That is, replace a union type Tn | ... | Tn
by the smallest intersection type of base-class in...
</p>
@@ -6289,11 +6687,37 @@ class B extends C[B] with D with E
</code></pre>
<p></p>
+ </div>
+ <div class="member-body-long" id ="long-body-orDominator(tp)">
+ <p>Approximate union type by intersection of its dominators.
+That is, replace a union type Tn | ... | Tn
+by the smallest intersection type of base-class instances of T1,...,Tn.
+Example: Given</p>
+<pre><code>trait C[+T]
+trait D
+class A extends C[A] with D
+class B extends C[B] with D with E
+</code></pre>
+<p>we approximate <code>A | B</code> by <code>C[A | B] with D</code></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="scala2Mode" class="member ">
<div class="member-title">
+ <span class="expand-button" onclick="toggleMemberBody(this, 'scala2Mode');">[+]</span>
<span class="member-annotations">
</span>
@@ -6319,12 +6743,29 @@ class B extends C[B] with D with E
</div><!-- end member-title -->
<div class="member-body">
-
+ <div class="member-body-short" id="short-body-scala2Mode">
+
+ </div>
+ <div class="member-body-long" id ="long-body-scala2Mode">
+
+ </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="simplify(tp,theMap)" class="member ">
<div class="member-title">
+ <span class="expand-button" onclick="toggleMemberBody(this, 'simplify(tp,theMap)');">[+]</span>
<span class="member-annotations">
</span>
@@ -6371,13 +6812,31 @@ class B extends C[B] with D with E
</div><!-- end member-title -->
<div class="member-body">
- <p>Implementation of Types#simplified</p>
+ <div class="member-body-short" id="short-body-simplify(tp,theMap)">
+ <p>Implementation of Types#simplified</p>
+
+ </div>
+ <div class="member-body-long" id ="long-body-simplify(tp,theMap)">
+ <p>Implementation of Types#simplified</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="testScala2Mode(msg,pos)" class="member ">
<div class="member-title">
+ <span class="expand-button" onclick="toggleMemberBody(this, 'testScala2Mode(msg,pos)');">[+]</span>
<span class="member-annotations">
</span>
@@ -6424,8 +6883,24 @@ class B extends C[B] with D with E
</div><!-- end member-title -->
<div class="member-body">
-
+ <div class="member-body-short" id="short-body-testScala2Mode(msg,pos)">
+
+ </div>
+ <div class="member-body-long" id ="long-body-testScala2Mode(msg,pos)">
+
+ </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>