summaryrefslogtreecommitdiff
path: root/src/compiler
Commit message (Collapse)AuthorAgeFilesLines
* Renaming files to please ant.Paul Phillips2012-07-211-0/+0
| | | | "If the names don't fit, do not commit!"
* Merge pull request #958 from adriaanm/ticket-1832Josh Suereth2012-07-212-57/+67
|\ | | | | SI-1832 consistent symbols in casedef's pattern&body
| * SI-1832 consistent symbols in casedef's pattern&bodyAdriaan Moors2012-07-201-32/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | the only change to typedBind in this commit (beyond refactoring to keep my eyes from bleeding), is explained by the added comment: have to imperatively set the symbol for this bind to keep it in sync with the symbols used in the body of a case when type checking a case we imperatively update the symbols in the body of the case those symbols are bound by the symbols in the Binds in the pattern of the case, so, if we set the symbols in the case body, but not in the patterns, then re-type check the casedef (for a second try in typedApply for example -- SI-1832), we are no longer in sync: the body has symbols set that do not appear in the patterns since body1 is not necessarily equal to body, we must return a copied tree, but we must still mutate the original bind
| * update docs for (partial) fun synth in uncurryAdriaan Moors2012-07-201-25/+24
| |
* | Merge pull request #963 from adriaanm/ticket-6089Josh Suereth2012-07-211-0/+3
|\ \ | | | | | | SI-6089 pt2: _ is tailpos in `_ || _` and `_ && _`
| * | SI-6089 pt2: _ is tailpos in `_ || _` and `_ && _`Adriaan Moors2012-07-211-0/+3
| | | | | | | | | | | | | | | pull #939 made tail position detection for matches more strict to fix SI-6089, but became too strict: need to include the tail positions `_` in `_ || _` and `_ && _`.
* | | Merge pull request #961 from VladUreche/issue/scaladocLukas Rytz2012-07-212-5/+0
|\ \ \ | | | | | | | | Scaladoc: Removing forgotten debugging info
| * | | Scaladoc: Removing forgotten debugging infoVlad Ureche2012-07-212-5/+0
| | | | | | | | | | | | | | | | (blush)
* | | | Merge pull request #957 from adriaanm/annoying-throwableAdriaan Moors2012-07-2116-26/+24
|\ \ \ \ | |_|/ / |/| | | address "this would catch all throwables" warnings
| * | | address "this would catch all throwables" warningsMartin Odersky2012-07-2016-26/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | original patch by @odersky in #955 -- criterion for the refactor: "catch Throwable as long as there's no obvious control flow exception going through the catch and the caught exception is processed further" rebased & updated with review comments in #955 and #954
* | | | Merge pull request #954 from odersky/optimize/outerAdriaan Moors2012-07-201-2/+5
|\ \ \ \ | | | | | | | | | | Removes redundant outers
| * | | | Removes redundant outersMartin Odersky2012-07-201-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Widens the criterion when outer fields can be omitted. It used to be that sub- and superclass had to be enclosed by the same outer class. Only in that case was the outer field of the class omitted. We now omit if subclass is contained in an outer class that is itself a subclass of the superclasses outer class. See test case "outertest.scala" for an example.
* | | | | Merge pull request #948 from gkossakowski/target-1.6Lukas Rytz2012-07-204-4/+6
|\ \ \ \ \ | | | | | | | | | | | | Deprecate all JVM 1.5 targets and make 1.6 default.
| * | | | | Deprecate all JVM 1.5 targets and make 1.6 default.Grzegorz Kossakowski2012-07-192-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a check if deprecated target is being used. I put that check into `checkDeprecatedSettings`. I tried to invent some general mechanism for deprecating choices in ChoiceSetting but I gave up eventually. It wasn't worth it the complexity. Also, with current approach I'm able to provide nice, customized deprecation warning. Make `jvm-1.6` a default backend. Altered test for SI-5957 because it crashes the backend. However, the problem is not with backend but with symbol creation. We get two different symbols with the same internal name and both are used in trees that reach GenASM. See SI-6109 for details. Review by @magarciaEPFL and @paulp.
| * | | | | Better debugging output in GenASM.Grzegorz Kossakowski2012-07-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When assertion fails, let's provide the context.
| * | | | | Updated list of targets allowed in Ant's scalac.Grzegorz Kossakowski2012-07-191-1/+1
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | It looks like scala.tools.ant.Scalac class had a stale list of allowed targets. Made it in sync with what compiler supports.
* | | | | Merge pull request #894 from axel22/topic/static-annot-cherry-2.10.xLukas Rytz2012-07-205-37/+219
|\ \ \ \ \ | | | | | | | | | | | | Implement @static annotation on singleton object fields.
| * | | | | Use `findMember` to lookup the static field in the host class.Aleksandar Prokopec2012-07-201-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The upcoming `findMember` optimizations should ensure that this is fast enough.
| * | | | | WIP add private/lazy checks and a few tests.Aleksandar2012-07-191-0/+11
| | | | | |
| * | | | | Implement @static annotation on singleton object fields.Aleksandar Prokopec2012-07-185-37/+208
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit introduces the `@static` annotation on fields of static singleton objects. A static singleton object is a top-level singleton object or an object nested within a static singleton object. The field annotated with `@static` is generated as a true static field in the companion class of the object. The initialization of the field is done in the static initializer of the companion class, instead of the object itself. Here's an example. This: object Foo { @static val FIELD = 123 } class Foo generates : object Foo { def FIELD(): Int = Foo.FIELD } class Foo { <static> val FIELD = 123 } The accessor in `object Foo` is changed to return the static field in `class Foo` (the companion class is generated if it is not already present, and the same is done for getters if `FIELD` is a `var`). Furthermore, all the callsites to accessor `Foo.FIELD` are rewritten to access the static field directly. It is illegal to annotate a field in the singleton object as `@static` if there is already a member of the same name in `class Foo`. This allows better Java interoperability with frameworks which rely on static fields being present in the class. The `AtomicReferenceFieldUpdater`s are one such example. Instead of having a Java base class holding the `volatile` mutable field `f` and a static field containing a reference to the `AtomicReferenceFieldUpdater` that mutates `f` atomically, and extending this Java base class from Scala, we can now simply do: object Foo { @static val arfu = AtomicReferenceUpdater.newUpdater( classOf[Foo], classOf[String], "f" ) } class Foo { @volatile var f = null import Foo._ def CAS(ov: String, nv: String) = arfu.compareAndSet(this, null, "") } In summary, this commit introduces the following: - adds the `@static` annotation - for objects without a companion class and `@static` members, creates a companion class (this is done in `CleanUp`) - checks for conflicting names and if `@static` is used on static singleton object member - creates the `static` field in the companion class for `@static` members - moves the field initialization from the companion object to the static initializer of the class (the initialization of `@static` members is bypassed in the `Constructors` phase, and added to static ctors in `CleanUp`) - all callsites to the accessors of `@static` are rewritten to access the static fields directly (this is done in `GenICode`) - getters and setters to `@static` fields access the static field directly, and the field in the singleton object is not emitted (this is done in `GenICode`) - changes in `GenJVM`, `GenASM` - now computing local var indices in static initializers as well - this was an oversight before, now is necessary Future work: allow the `@static` annotation on methods as well - this will be added in a future commit. Review by @odersky, @dragos, @paulp, @heathermiller.
* | | | | | Merge pull request #953 from adriaanm/ticket-6031Adriaan Moors2012-07-201-15/+41
|\ \ \ \ \ \ | | | | | | | | | | | | | | SI-6031 customizable budget for patmat analyses
| * | | | | | SI-6031 customizable budget for patmat analysesAdriaan Moors2012-07-201-15/+41
| | |_|_|_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | read the scalac.patmat.analysisBudget system property to decide how much time to spend on unreachability/exhaustivity the default value is 256, and you can turn it off entirely using -Dscalac.patmat.analysisBudget=off when the budget is exhausted, an unchecked warning is emitted stack overflows in CNF conversion are caught and treated as analysis budget violations
* | | | | | Merge pull request #941 from adriaanm/ticket-6104Adriaan Moors2012-07-201-2/+2
|\ \ \ \ \ \ | |_|_|_|/ / |/| | | | | SI-6104 support This pattern
| * | | | | SI-6104 support This patternAdriaan Moors2012-07-181-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This(name) is treated just like Ident(name) apparently this pattern was used in 2.9 code, though I'm not sure it's spec'ed
* | | | | | Merge pull request #925 from VladUreche/issue/scaladocAdriaan Moors2012-07-2037-699/+1604
|\ \ \ \ \ \ | | |_|_|_|/ | |/| | | | Fix a bunch of scaladoc issues: SI-3314 SI-4888 SI-5235 SI-5558 SI-4324 SI-5780 SI-4887 SI-3695 SI-4224 SI-4497 SI-5079 SI-6073 SI-5533 SI-5784
| * | | | | Scaladoc: Adressed @hubertp's comment on #925Vlad Ureche2012-07-191-16/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | And relaxed the groups name/description/priority search algorithm to work for types.
| * | | | | SI-5784 Scaladoc: Type templatesVlad Ureche2012-07-192-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | @template and @documentable are now synomims.
| * | | | | Scaladoc: GroupsVlad Ureche2012-07-1912-50/+287
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Group class members based on their semantic relationship. To do this: - @group on members, only need to do it for the non-overridden members - -groups flag passes to scaladoc, groups="on" in ant - @groupdesc Group Group Description to add descriptions - @groupname Group New name for group - @groupprio Group <int> (lower is better) See test/scaladoc/run/groups.scala for a top-to-bottom example
| * | | | | Scaladoc: Typers changeVlad Ureche2012-07-181-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | as requested by @adriaanm on pull request #925
| * | | | | SI-5784 Scaladoc: {Abstract,Alias} type templatesVlad Ureche2012-07-1719-117/+195
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Normally scaladoc won't generate template pages for anything other than packages, classes, traits and objects. But using the @template annotation on {abstract,alias} types, they get their own page and take part as full members in the diagrams. Furthermore, when looking for the companion object, if a value of type T is in scope, T will be taken as the companion object (even though it might be a class) All templates, including types are listed on the left navigation pane, so now adding @template to String can get scaladoc to generate (a no-comments) page for java.lang.String. The {abstract, alias} type icons need to be updated -- I just took the class icons and added a small x to them -- but they shoud be something else (maybe an underscore?)i TO USE THIS PATCH: <pre> /** @contentDiagram */ // tells scaladoc to create a diagram of the // templates contained in trait Base trait Base { /** @template */ // tells scaladoc to create a page for Foo type T < Foo trait Foo { def foo: Int } } /** @contentDiagram */ trait Api extends Base { /** @template */ override type T <: FooApi trait FooApi extends Foo { def bar: String } } </pre>
| * | | | | Scaladoc: Refactoring the entitiesVlad Ureche2012-07-168-138/+140
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | for SI-5784. This commit has been checked with tools/scaladoc-compare and the only difference is that the containing entities in the index are not duplicate anymore, which solves yet another bug we did not know about. :)
| * | | | | SI-5533 Skip scaladoc packages from documentationVlad Ureche2012-07-164-32/+50
| | | | | |
| * | | | | Scaladoc: updated type class descriptionsVlad Ureche2012-07-164-13/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The known type class descriptions give you a humanly-understandable explanation for [T: TypeClass] in the implicit conversions. For example [T: Integral] will tell you that T must be an integral type such as Integer and co. Now that the reflection dust settled, I can actually add the test to make sure the well-known type classes are intercepted and explanations are given instead of the usual "the type T is context-bounded by TypeClass"
| * | | | | Scaladoc: Reducing the memory footprint 2Vlad Ureche2012-07-162-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | - got rid of references to WikiParser when creating EntityLinks
| * | | | | Scaladoc: Reducing the memory footprintVlad Ureche2012-07-165-37/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - diagrams are not stored because they create many TypeEntities, nodes and edges -- now they are created on demand, so make sure you don't demand them twice! - eliminated the type entity cache, which was nearly useless (6s gain) but was preventing the GC from eliminating TypeEntities - an unsuccessful attempt at reducing the tons of :: garbage we're generating - there's 200MB-250MB of ::s during a typical 'ant docs.lib'
| * | | | | SI-3695 SI-4224 SI-4497 SI-5079 scaladoc linksVlad Ureche2012-07-1612-103/+345
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds the ability to link to members, classes and objects in scaladoc. The links can now be either qualified names or relative names, they both work. See the test/scaladoc/resources/links.scala for a usage example. Also introduced -no-link-warnings scaladoc flag, in case the build output gets swamped with link warnings.
| * | | | | SI-4887 Link existentials in scaladocVlad Ureche2012-07-161-6/+120
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Based on an inital patch by Nada Amin. Rewrote some of the code to compress it a bit. Also fixed a problem that was affecting the prefix printing for typerefs: type parameter and existentials won't get prefixes. While I can imagine cases where you'd want to see where they come from, you can always hover over them and see their origin. Also added support for pretty-printing ThisTypes, SuperTypes and SingleTypes (with links)
| * | | | | Scaladoc minor fix: Typos in diagramsVlad Ureche2012-07-163-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | As suggested by Heather in pull request #816.
| * | | | | SI-4360 Adds prefixes to scaladocVlad Ureche2012-07-1611-200/+303
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This was a long-standing issue in scaladoc: It was unable to disambiguate between entries with the same name. One example is: immutable.Seq: trait Seq[+A] extends Iterable[A] with Seq[A] ... What's that? Seq extends Seq? No, immutable.Seq extends collection.Seq, but scaladoc was unable to show that. Now it does, depending on the template you're in. Prefixes are relative and can go back: -scala.collection.Seq has subclasses *immutable.Seq* and *mutable.Seq* -scala.immutable.Seq extends *collection.Seq* Unfortunately the price we pay for this is high, a 20% slowdown in scaladoc. This is why there is a new flag called -no-prefixes that disables the prefixes in front of types. Btw, it also fixes the notorious "booleanValue: This member is added by an implicit conversion from Boolean to Boolean ...". That's now java.lang.Boolean, so it becomes clear. Conflicts: src/compiler/scala/tools/nsc/doc/model/diagram/DiagramFactory.scala
| * | | | | Scaladoc: workaround for untypical Map usecasesVlad Ureche2012-07-161-8/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | SI-3448 partial fix: This enables a workaround for the fact that Map takes two type params while $Coll takes only one. But it doesn't fix the problem though, as there's one more piece missing from the puzzle - we need to adjust the `Coll`s in {immutable, mutable, concurrent}.Map to something that makes sense for the usecase. And that's not possible. But I'm committing this nevertheless, maybe other projects can benefit from it. And for SI-3448, the solution lies in automatic usecase generation, whenever that will be ready.
| * | | | | SI-4324 Scaladoc case class argument curryingVlad Ureche2012-07-161-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | case class C(i: Int)(b: Boolean) would appear uncurried in scaladoc: case class C(i: Int, b: Boolean)
| * | | | | SI-5558 Package object members indexingVlad Ureche2012-07-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | This bug was fixed by the model upgrade in c11427c1. Test case confirmation.
| * | | | | Scaladoc: Inherited templates in diagramsVlad Ureche2012-07-165-24/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Related to SI-3314, where we started showing inherited templates that were normally not documented. This patch corrects a problem in parentTypes that was preventing inherited templates from being displayed in diagrams. Also renamed: PackageDiagram => ContentDiagram ClassDiagram => InheritanceDiagram which should have been done much earlier
| * | | | | SI-3314 SI-4888 Scaladoc: Relative type prefixesVlad Ureche2012-07-1612-102/+165
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | And adds support for linking to class members, only usable from the model factory now, so no links to members from the doc comment yet, sorry. But it fixes the Enumeration problem once and for all! Also corrected the inTpl for members obtained by implicit conversions, so they're in the correct template and the comment variable expansion is done from the correct (but different) template. Review by @kzys.
| * | | | | SI-5235 Correct usecase variable expansionVlad Ureche2012-07-162-19/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The bug is related to a couple of other annoyances, also fixed: - usecases without type params were crashing scaladoc due to a change in the PolyTypes class (not allowing empty tparams list) - properly getting rid of backticks (even if the link is not valid) - correct linking for usecases with $Coll = `immutable.Seq` (the symbol searching algorithm was too of restrictive, now we search the entire ownerchain - and the empty package at the end) - give a warning if the type lookup fails - finally, added a $Coll variable to List, for some reason it wasn't there and we were getting immutable.Seq as the result of use cases.
* | | | | | Merge pull request #936 from scalamacros/ticket/5999Adriaan Moors2012-07-2013-130/+96
|\ \ \ \ \ \ | | | | | | | | | | | | | | SI-5999 consistent behavior for c.reify and c.universe.reify
| * | | | | | SI-5999 a real fix to the packageless problemEugene Burmako2012-07-203-7/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | After a discussion on a reflection meeting on Jul 17 we concluded that we should split staticModule into staticModule and staticPackage to remove the ambiguity between packageless objects and packageless packages (more in the comments in the body of the commit). The motivation is verbosely outlined in the comments, but the bottom line is that Scala allows packages and packageless objects to have the same name within the same program. Therefore at times we need to disambiguate, hence the introduction of the staticPackage method. As of such staticModule no longer works for packages. In the same fashion staticPackage doesn't work for modules. This is done to ensure robustness of reification. I would like to do the same for getModule in Definitions, but we have to maintain backward compatibility. That's why I retained the old behavior, but replaced getModule invocations with getPackage where appropriate to be in line with staticModule and staticPackage. Another important thing that follows from the discussion is that both staticClass and staticModule prefer parent packages over parent objects in cases of ambiguity. Say, if we have the following snippet of code: object B { class C } next to package B { class C } then staticClass("B.C") will never even consider a C inside the object B. This is how scalac operates, so we decided to be consistent here. Finally reification logic got changed to distinguish between staticModule and staticPackage, and to allow for the fact that staticClass and staticModule prefer parent packages to parent objects.
| * | | | | | evicts calls to reify from our codebaseEugene Burmako2012-07-205-32/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Until reflection design is stabilized (i.e. 2.10.0 final is released), it's a good idea to refrain from using reify in our codebase (either directly in quasiquotes, or indirectly via materialized type tags). This increases the percentage of changes to reflection that don't require rebuilding the starr. The change to build.xml will expose reifications going on during our build (by printing out their results to the console, so that they bug everyone), making it easier to spot and fix them.
| * | | | | | an improvement based on Adriaan's commentEugene Burmako2012-07-201-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | """ why use asTypeConstructor for a prefix? shouldn't that be BaseUniverseClass.thisType? also, why does the prefix need to be changed at all? I'm sure there's a valid reason, but it would be good to document it. if you don't need to change the prefix, use appliedType(tagType.typeConstructor, List(tpe)) """ Because we need to look for an implicit of type base.Universe # TypeTag[$tpe]. I figured out that this is exactly the internal representation of that type.
| * | | | | | SI-5999 removes the macro context mirrorEugene Burmako2012-07-202-45/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It is impossible to enforce macro programmers to use this mirror instead of c.universe.rootMirror, so it has to be let go. As to packageless symbol loading, which was the sole purpose of introducing a special mirror for macro contexts, it will be integrated into the compiler mirror in subsequent commits.