summaryrefslogtreecommitdiff
path: root/test/files
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | | | | | | Fix how "sbt" is writtenDale Wijnand2016-12-212-2/+2
| |_|_|_|_|_|/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | "sbt" is not an acronym (it used to be, but it isn't any longer). It's a proper name, like "iPhone" or "eBay". So, just like you wouldn't write "Get Started With EBay" or "How To Reset Your IPhone", we don't write "Using the Sbt Build".
* | | | | | | | Merge remote-tracking branch 'origin/2.11.x' into ↵Jason Zaugg2016-12-2025-0/+312
|\ \ \ \ \ \ \ \ | | |_|_|_|/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | merge/2.11.x-to-2.12.x-20161220 Conflicts: bincompat-backward.whitelist.conf build.xml src/compiler/scala/tools/nsc/typechecker/Typers.scala src/library/scala/collection/immutable/NumericRange.scala
| * | | | | | | Merge pull request #5487 from lrytz/java-constantsAdriaan Moors2016-12-1519-0/+278
| |\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | SI-3236 constant types for literal final static java fields
| | * | | | | | | neg test for parsing constants in Java sourcesLukas Rytz2016-11-027-0/+104
| | | | | | | | |
| | * | | | | | | SI-3236 constant types for literal final static java fieldsJohannes Rudolph2016-10-2812-0/+174
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since we don't parse Java expressions, fields of Java classes coming from source files never have constant types. This prevents using static java fields in annotation arguments in mixed compilation This PR assigns constant types to final static java fields if the initializer is a simple literal.
| * | | | | | | | SI-9834 Show expansion of update on errorSom Snytt2016-11-251-0/+1
| | | | | | | | |
| * | | | | | | | SI-9834 Improve error on failed op=Som Snytt2016-11-256-0/+33
| | |_|/ / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If rewriting `x += y` fails to typecheck, emit error messages for both the original tree and the assignment. If rewrite is not attempted because `x` is a val, then say so. The error message at `tree.pos` is updated with the additional advice. SI-8763 Crash in update conversion When there are already errors, don't attempt mechanical rewrites.
| * | | | | | | [nomerge] SI-10037 ASR/LSR switched in ICodeReaderSom Snytt2016-11-104-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Noticed when inlining from a class file. The test doesn't work because inlining fails with bytecode unavailable due to: ``` scala.reflect.internal.MissingRequirementError: object X in compiler mirror not found. ```
| * | | | | | | [backport] Replace println with log calls in BrowsingLoadersIulian Dragos2016-10-252-2/+0
| |/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This alternative symbol loader is used in the presentation compiler and may generate output even when the compiler should be silent. See SI-8717 for more context, even though this does not really fix the ticket.
| * | | | | | Merge pull request #5343 from milessabin/topic/si-2712-backportAdriaan Moors2016-10-1829-0/+466
| |\ \ \ \ \ \ | | | | | | | | | | | | | | | | SI-2712 Add support for higher order unification
| | * | | | | | SI-2712 Add support for higher order unificationMiles Sabin2016-08-1529-0/+466
| | | | | | | |
| * | | | | | | Merge pull request #5345 from milessabin/topic/si-7046-backportAdriaan Moors2016-10-1813-1/+176
| |\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | [nomerge] Partial fix for SI-7046
| | * | | | | | | Partial fix for SI-7046Miles Sabin2016-08-1513-1/+176
| | |/ / / / / /
| * | | | | | | Merge pull request #5341 from milessabin/topci/si-9760-backportAdriaan Moors2016-10-181-0/+18
| |\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | SI-9760 Fix for higher-kinded GADT refinement
| | * | | | | | | SI-9760 Fix for higher-kinded GADT refinementMiles Sabin2016-08-151-0/+18
| | |/ / / / / /
| * | | | | | | Merge pull request #5348 from som-snytt/issue/9841-test-2.11Adriaan Moors2016-10-181-0/+24
| |\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | SI-9841 Regression test for init SO
| | * | | | | | | SI-9841 Regression test for init SOSom Snytt2016-08-241-0/+24
| | |/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | Verifies example behavior in ticket.
| * | | | | | | Merge pull request #5218 from retronym/ticket/9806Jason Zaugg2016-10-181-0/+18
| |\ \ \ \ \ \ \ | | |/ / / / / / | |/| | | | | | SI-9806 Fix incorrect codegen with optimizer, constants, try/catch
| | * | | | | | SI-9806 Fix incorrect codegen with optimizer, constants, try/catchJason Zaugg2016-06-071-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The constant optimizer phase performs abstract interpretation of the icode representation of the progam in order to eliminate dead code. For each basic block, the possible and impossible states of each local variable is computed for both a normal and an exceptional exit. A bug in this code incorrectly tracked state for exception exits. This appears to have been an oversight: the new state was computed at each instruction, but it was discarded rather than folded through the intepreter.
| * | | | | | | Use sbt for PR validationStefan Zeiger2016-06-144-19/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Support directories in `-doc-external-doc`: It is documented as accepting a “classpath_entry_path” for the keys but this only worked for JARs and not for individual class files. When checking for external-doc mappings for a Symbol, we now find the root directory relative to a class file instead of using the full class file path. The corresponding tests for SI-191 and SI8557 are also fixed to support individual class files instead of JARs in partest. This is required for the sbt build which runs partest on “quick” instead of “pack”. - Fix version and repository handling for bootstrapping. The bootstrap `scalaInstance` can now be resolved from any repository added to the project (not just the bootstrap repositories) by using a different workaround for https://github.com/sbt/sbt/issues/1872. - Workaround for https://github.com/sbt/sbt/issues/2640 (putting the wrong `scalaInstance` on partest’s classpath). The required `ScalaInstance` constructor is deprecated, so we have to disable deprecation warnings and fatal warnings until there is a better fix. - Add MiMa to the sbt build (port of the old `test.bc` ant task). The sbt-mima plugin doesn’t have all the features we need, so we do it manually in a similar way to what the plugin does. Checks are done in both directions for the `library` and `compiler` projects. The base version has to be set in `build.sbt`. When set to `None`, MiMa checks are skipped. MiMa checks are run sequentially to avoid spurious errors (see https://github.com/typesafehub/migration-manager/issues/115). - Port the OSGi tests to the sbt build. The set of JARs that gets copied into build/osgi as bundles is a bit different from the ant build. We omit the source JARs but add additional modules that are part of the Scala distribution, which seems more correct. - Get rid up `pull-binary-libs.sh` for the sbt build. Add artifacts are resolved from the special bootstrap repository through Ivy. The special `code.jar` and `instrumented.jar` artifacts are copied to the location where partest expects them (because these paths are hardcoded in partest). Other extra JARs for partest in `test/files/lib` are referenced directly from the Ivy cache. - Move common settings that should be available with unqualified names in local `.sbt` files and on the command line into an auto-plugin. - Add an `antStyle` setting to sbt to allow users to easily enable ant-style incremental compilation instead of sbt’s standard name hashing with `set antStyle := true`. - Disable verbose `info`-level logging during sbt startup for both, `validate/test` and `validate/publish-core` jobs. Update logging is no longer disabled when running locally (where it is useful and doesn’t generate excessive output). - Pass optimization flags for scalac down to partest, using the new partest version 1.0.15\6. - Call the new sbt-based PR validation from `scripts/jobs/validate/test`. - Disable the tests `run/t7843-jsr223-service` and `run/t7933` from https://github.com/scala/scala/pull/4959 for now. We need to set up a new test project (either partest or junit) that can run them on a packaged version of Scala, or possibly move them into a separate project that would naturally run from a packaged Scala as part of the community build.
* | | | | | | | Merge pull request #5539 from som-snytt/issue/10068Adriaan Moors2016-12-195-1/+45
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | SI-10068 Only permit elidable methods
| * | | | | | | | SI-10068 Only permit elidable methodsSom Snytt2016-12-145-1/+45
| | |_|_|/ / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In refchecks, check that symbol with `@elidable` is a method. When eliding in uncurry, doublecheck. The check is enabled under `-Xsource:2.13`.
* | | | | | | | Merge pull request #5541 from retronym/ticket/10067Adriaan Moors2016-12-193-0/+27
|\ \ \ \ \ \ \ \ | |/ / / / / / / |/| | | | | | | SI-10067 Avoid linkage errors with type patterns, Java inner classes
| * | | | | | | SI-10067 Don't speculatively emit outer tests for inner Java classesJason Zaugg2016-11-181-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Followup to the previous commit to remove the unchecked warning when the speculative outer test is dropped in explicitouter.
| * | | | | | | SI-10067 Java defined inner classes don't have outer accessorsJason Zaugg2016-11-184-0/+30
| | |_|_|_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If we pretend they do, we can walk into NoSuchMethodErrors when translating type patterns path dependent types. This commit avoids this symptom by changing the explicitouter info transformer. A following commit will change the pattern matcher itself to avoid speculatively adding this outer check that will be always dropped in explicitouter.
* | | | | | | Modules w. serializable type alias "companions" are not serializableJason Zaugg2016-12-141-0/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The behaviour changed in #5550, this commit adapts to the change so that we'll be binary compatible after boostrapping. MiMa alerted us to a change in the parentage of two objects in the forkjoin package object. In Scala 2.12.0/1, they implemented `scala.Serializable`. Recently, this (synthetically added) parent was absent. This appears to be due to a bug fix in `companionSymbolOf`, which no longer treats objects and same-named type aliases to be companions. This commit manually adds the formerly-synthetic parents to these objects, and documents the change in compiler behaviour with a test. Fixes scala/scala-dev#290
* | | | | | | Merge pull request #5558 from larsrh/topic/deprecated-y-flagsAdriaan Moors2016-12-139-50/+0
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Remove deprecated -Y flags
| * | | | | | | remove deprecated compiler flag "-Yinfer-by-name"Lars Hupel2016-12-013-26/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This was slated for removal in 2.12.
| * | | | | | | remove deprecated compiler flag "-Yeta-expand-keeps-star"Lars Hupel2016-12-016-24/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This was slated for removal in 2.12.
* | | | | | | | Merge pull request #5543 from retronym/ticket/10069Lukas Rytz2016-12-122-0/+47
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | SI-10069 Fix code gen errors with array updates, Nothing
| * | | | | | | | SI-10069 Fix code gen errors with array updates, NothingJason Zaugg2016-12-022-0/+47
| | |/ / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Crashes in ASM or VerifyErrors used to occur when assigning an expression of type Nothing to an element of a primitive array. This commit adapts the RHS of the assignment to the element type to correct this. `adapt` contains logic to insert an `ATHROW` of the slot of type `Nothing$`, which makes everything line up. The subsequent array stores become dead code and are dropped later on in code gen, so the test case compiles to: public void foo0(double[]); Code: 0: bipush 42 2: istore_2 3: aload_1 4: iconst_0 5: aload_0 6: invokevirtual #30 // Method throwExpected:()Lscala/runtime/Nothing$; 9: athrow I found a similar bug in the emission of primitive unboxing and fixed that too.
* | | | | | | | Merge pull request #5550 from retronym/ticket/3772Lukas Rytz2016-12-126-20/+48
|\ \ \ \ \ \ \ \ | |_|_|_|_|_|/ / |/| | | | | | | SI-3772 Fix detection of term-owned companions
| * | | | | | | SI-3772 Fix detection of term-owned companionsJason Zaugg2016-11-296-20/+48
| |/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Companion detection consults the scopes of enclosing Contexts during typechecking to avoid the cycles that would ensue if we had to look at into the info of enclosing class symbols. For example, this used to typecheck: object CC { val outer = 42 } if ("".isEmpty) { case class CC(c: Int) CC.outer } This logic was not suitably hardened to find companions in exactly the same nesting level. After fixing this problem, a similar problem in `Namer::inCurrentScope` could be solved to be more selective about synthesizing a companion object. In particular, if a manually defined companion trails after the case class, don't create an addiotional synthetic comanpanion object.
* | | | | | | Merge pull request #5570 from adriaanm/t10075Adriaan Moors2016-12-055-2/+157
|\ \ \ \ \ \ \ | |_|_|_|_|/ / |/| | | | | | SI-10075 propagate annotations to lazy val's underlying field
| * | | | | | Drop annotations from trait static super accessorAdriaan Moors2016-12-051-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Based on review suggestion by retronym. See also scala/scala-dev#213
| * | | | | | SI-10075 annotations go to lazy val's underlying fieldAdriaan Moors2016-12-054-0/+155
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This likely regressed in #5294. Review feedback from retronym: - Tie annotation triaging a bit closer together durban kindly provided initial version of test/files/run/t10075.scala And pointed out you must force `lazy val`, since `null`-valued field is serializable regardless of its type. Test test/files/run/t10075b courtesy of retronym
* | | | | | | Revert existential infer part of #5376Adriaan Moors2016-12-012-13/+0
| |_|/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It wasn't a good idea after all. Also removed some tracing code that I cannot imagine was ever used in a production compiler. It's still just a recompile away. Fixes scala/scala-dev#280
* | | | | | Merge pull request #5284 from milessabin/topic/si-7046Adriaan Moors2016-11-3012-0/+175
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | SI-7046 reflection doesn't see all knownDirectSubclasses This appears to do the right thing in the most typical scenarios in which `knownDirectSubclasses` would be used. The missing 5% is that subclasses defined in local scopes might not be seen by `knownDirectSubclasses` (see `Local` and `Riddle` in the test below). In mitigation, though, it is almost certain that a local subclass would represent an error in any scenario where `knownDirectSubclasses` might be used. Errors for such situations are reported by recording (via a symbol attachment) that `knownDirectSubclasses` has been called and reporting an error if any additional children are added subsequently. Despite these limitations and caveats, I believe that this represents a huge improvement over the status quo, and would eliminate 100% of the failures that I've seen in practice with people using shapeless for type class derivation.
| * | | | | | Partial fix for SI-7046Miles Sabin2016-11-2812-0/+175
| | | | | | |
* | | | | | | Merge pull request #5376 from milessabin/topic/clean-experimentalAdriaan Moors2016-11-303-1/+8
|\ \ \ \ \ \ \ | |_|/ / / / / |/| | | | | | Clean up of code guarded by bare -Xexperimental
| * | | | | | Typevar experimentals now default; t5729 pos -> neg.Miles Sabin2016-11-282-0/+7
| | | | | | |
| * | | | | | Pattern matching virtualization now guarded by -Yvirtpatmat.Miles Sabin2016-11-281-1/+1
| |/ / / / /
* | | | | | Merge pull request #5562 from retronym/ticket/SD-275Jason Zaugg2016-11-305-0/+111
|\ \ \ \ \ \ | | | | | | | | | | | | | | SD-275 Further harden against refs to absentee classes
| * | | | | | SD-275 Further harden against refs to absentee classesJason Zaugg2016-11-295-0/+111
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Limit the strategy of unpickling an external reference to a module class to a lookup of the module var to non-stub owners in order to enable fall through to stub symbol creation. Fixes scala/scala-dev#275
* | | | | | | Merge pull request #5554 from retronym/ticket/10009Adriaan Moors2016-11-292-0/+34
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | SI-10009 Fields survive untypecheck/retypecheck
| * | | | | | | SI-10009 Fields survive untypecheck/retypecheckJason Zaugg2016-11-282-0/+34
| | |_|/ / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some places in the compiler, and many places in macros, use `untypecheck` (aka `resetAttrs`) to strip types and local symbols from a tree before retypechecking it under some different context. The refactoring of the desugaring of vals and vars in Scala 2.12.0 broke an assumption in this facility. When a ValDef must be split into multiple members (e.g. a field and a getter, or a perhaps also a setter), the ValDef that was parsed assumes the role of the `field`, and the trees for other members are stached by `Namer` to the `synthetics` map of the compilation unit, in order to spliced into the right statement list by typechecking. See `enterGetterSetter` for more details. However, the parsed ValDef is now used verbatim, carrying the meaning (ie, the symbol) of the `private[this]` field. This tree now had an inconsistency between the flags in `tree.mods.flags` and `tree.symbol.flags`. `tree.name` also differed from `tree.symbol.name` (the latter was renamed to be a local name, ie one with a trailing space.) When `ResetAttrs` stripped off the symbol and we retypechecked, we'd end up with two symbols in scope with the same name. In the first from the `run` test: ``` ================================================================================ { class a extends scala.AnyRef { def <init>(): a = { a.super.<init>(); () }; private[this] val x: Int = 42; <stable> <accessor> def x: Int = a.this.x }; new a() } { class a extends scala.AnyRef { def <init>() = { super.<init>(); () }; val x = 42; // oops, the name is "x" rather than "x " and we've missing `private[this]`! <stable> <accessor> def x: Int = a.this.x }; new a() } scala.tools.reflect.ToolBoxError: reflective typecheck has failed: x is already defined as value x ``` This commit uses the flags and name of the symbol in `typedValDef`. I've also had to modify the internals of `CodePrinter` to use the implicit, override, and deferred flags from the modifiers of an accessor when recovering pre-typer tree for a ValDef.
* | | | | | | Merge pull request #5536 from retronym/ticket/SD-268Adriaan Moors2016-11-291-0/+17
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Fix more compiler crashes with fields, refinement types
| * | | | | | | Fix more compiler crashes with fields, refinement typesJason Zaugg2016-11-211-0/+17
| |/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the same manner as scala/scala-dev#219, the placement of the fields phase after uncurry is presenting some challenges in keeping our trees type correct. This commit whacks a few more moles by adding a casts in the body of synthetic methods. Fixes scala/scala-dev#268
* | | | | | | Merge pull request #5506 from retronym/topic/existential-idsAdriaan Moors2016-11-295-11/+11
|\ \ \ \ \ \ \ | |_|/ / / / / |/| | | | | | Avoid name table pollution with fresh existentials
| * | | | | | Avoid name table pollution with fresh existentialsJason Zaugg2016-11-085-11/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | During large compilations runs, the large numbers of globally unique fresh names for existentials captured from prefixes of `asSeenFrom`. is a) somewhat wasteful (all these names are interned in the name table) , and, b) form a pathological case for the current implementation of `Names#hashValue`, which leads to overfull hash-buckets in the name table. `hashValue` should probably be improved, but my attempts to do so have shown a small performance degradation in some benchmarks. So this commit starts by being more frugal with these names, only uniquely naming within an `asSeenFrom` operation. References scala/scala-dev#246