diff options
author | dotty-bot <felix.mulder@epfl.ch> | 2017-02-03 18:05:53 +0000 |
---|---|---|
committer | dotty-bot <felix.mulder@epfl.ch> | 2017-02-03 18:05:53 +0000 |
commit | 881c3b182fda1036d5a507d08ff85f7709d70703 (patch) | |
tree | c0248d0a1664dcbf9f483b65f65e4d4710c3d0bb /api/dotty/tools/dotc/core/TypeOps.html | |
parent | b45ed2e609603cdaa94f9b7f5099da01e5e45314 (diff) | |
download | dotty-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.html | 525 |
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 "upper" or "lower" 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 "upper" or "lower" 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) => 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) => Type)(tp1: Type, tp2: Type)(implicit ctx: Context) = { +def f2(tp1: Type, tp2: Type): Type = tp2 match { +case tp2: RecType => tp2.rebind(f(tp1, tp2.parent)) +case _ => f(tp1, tp2) +} +tp1 match { +case tp1: RecType => tp1.rebind(f2(tp1.parent, tp2)) +case _ => 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 "." minus +the prefix "dotty.language.".</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[_ >: Int | A <: Int & 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> |