summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Merge commit '23159d2' into merge-2.11-to-2.12-apr-22Lukas Rytz2016-04-229-29/+103
|\
| * Automate Eclipse settings and update project files: (#5091)Iulian Dragos2016-04-209-27/+101
| | | | | | | | | | | | | | | | - remove `M2_REPO`. All dependencies are picked up from `build/deps` - add script to update an existing workspace directory with the required path variables - add the default Scala library to several projects for better out-of-the-box experience. This means that changes in the scale-library project may not be visible in the other projects, but makes it way easier to get a working config. If you really need that, you probably know what you’re doing anyway.
* | CI: hardcode java path in integrate/windows scriptAdriaan Moors2016-04-211-7/+7
| |
* | Merge pull request #5110 from sjrd/remove-duplicate-implem-of-hashcodesLukas Rytz2016-04-2211-108/+74
|\ \ | | | | | | Remove the duplicate implem of hash codes for numbers.
| * | Remove the duplicate implem of hash codes for numbers.Sébastien Doeraene2016-04-2112-103/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, there were two separate implementations of hash code for boxed number classes: * One in Statics, used by the codegen of case class methods. * One in ScalaRunTime + BoxesRunTime, used by everything else. This commit removes the variant implemented in ScalaRunTime + BoxesRunTime, and always uses Statics instead. We use Statics because the one from ScalaRunTime causes an unnecessary module load. The entry point ScalaRunTime.hash() is kept, as deprecated, for bootstrapping reasons.
| * | Bring Statics.doubleHash in sync with BoxesRunTime.hashFromDouble.Sébastien Doeraene2016-04-212-13/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The two algorithms were different, and could result in different hash codes for some values, namely, valid long values that were not also valid int values. The other two functions `longHash` and `floatHash` are rewritten to keep a common style with `doubleHash`, but their algorithm does not change.
* | | CI: fix integrate-windows scriptAdriaan Moors2016-04-211-1/+1
| | |
* | | Merge pull request #5114 from adriaanm/ci-win-java8Adriaan Moors2016-04-211-5/+5
|\ \ \ | | | | | | | | CI: use java 8 for windows integration
| * | | CI: use java 8 for windows integrationAdriaan Moors2016-04-211-5/+5
|/ / /
* | | Merge pull request #5096 from lrytz/traitParentsLukas Rytz2016-04-2026-330/+639
|\ \ \ | | | | | | | | Ensure ClassBTypes constructed from symbol and classfile are identical
| * | | Ensure that lzycompute methods are entered into the scopeLukas Rytz2016-04-202-8/+22
| | | | | | | | | | | | | | | | | | | | For some reason this was not the case, leading to spurious inliner warnings (no inline info found for method O$lzycompute).
| * | | Ensure ClassBTypes constructed from symbol and classfile are identicalLukas Rytz2016-04-205-34/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A super call (invokespecial) to a default method T.m is only allowed if the interface T is a direct parent of the class. Super calls are introduced for example in Mixin when generating forwarder methods: trait T { override def clone(): Object = "hi" } trait U extends T class C extends U The class C gets a forwarder that invokes T.clone(). During code generation the interface T is added as direct parent to class C. Note that T is not a (direct) parent in the frontend type of class C. This commit stores interfaces that are added to a class during code generation in the InlineInfo classfile attribute. This allows filtering the interface list when constructing a ClassBType from a classfile.
| * | | Clean up code gen for method invocationsLukas Rytz2016-04-207-218/+324
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The code was patched many times in the history and became a bit scattered. When emitting a virtual call, the receiver in the bytecode cannot just be the method's owner (the class in which it is declared), because that class may not be accessible at the callsite. Instead we use the type of the receiver. This was basically done to fix - aladdin bug 455 (9954eaf) - SI-1430 (0bea2ab) - basically the same bug, slightly different - SI-4283 (8707c9e) - the same for field reads In this patch we extend the fix to field writes, and clean up the code. This patch basically reverts 6eb55d4b, the fix for SI-4560, which was rather a workaround than a fix. The underlying problem was that in some cases, in a method invocation `foo.bar()`, the method `bar` was not actually a member of `foo.tpe`, causing a NoSuchMethodErrors. The issue was related to trait implementation classes. The idea of the fix was to check, at code-gen time, `foo.tpe.member("bar")`, and if that returns `NoSymbol`, use `barSym.owner`. With the new trait encoding the underlying problem seems to be fixed - all tests still pass (run/t4560.scala and run/t4560b.scala).
| * | | Move test run/origins.scala to pendingLukas Rytz2016-04-123-0/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It tests an internal debugging tool which does not appear to work as intented. If anyone can compile and run that test and get an output that looks like the check file, I'd be interested to know. Origins does not seem to support the kind of stack traces that scalac currently emits.
| * | | SD-98 don't emit unnecessary mixin forwardersLukas Rytz2016-04-1212-57/+223
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In most cases when a class inherits a concrete method from a trait we don't need to generate a forwarder to the default method in the class. t5148 is moved to pos as it compiles without error now. the error message ("missing or invalid dependency") is still tested by t6440b.
| * | | Rewrite JUnit tests to avoid `@Test` methods in traitsLukas Rytz2016-04-121-14/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | JUnit 4 does not support running `@Test` methods defined as default methods in parent interfaces. JUnit 5 will, but is not yet available. Currently scalac emits a forwarder to every trait method inherited by a class, so tests are correctly executed. The fix for SD-98 will change this.
* | | | scala-dev-113: Sync root package words to layout (#5107)Janek Bogucki2016-04-201-1/+1
| | | | | | | | | | | | The package list is on the right.
* | | | Merge pull request #5100 from lrytz/unitBoxLukas Rytz2016-04-204-10/+133
|\ \ \ \ | |_|/ / |/| | | SI-6710 / PR 5072 follow-up: fix Unit.box / Unit.unbox
| * | | SI-6710 / PR 5072 follow-up: fix Unit.box / Unit.unboxLukas Rytz2016-04-204-10/+133
| |/ / | | | | | | | | | | | | | | | | | | The backend replaces .box / .unbox methods by corresponding invocations to BoxesRunTime, but not for Unit. This commit restores the body of `Unit.box` and `Unit.unbox`.
* | | Merge pull request #5098 from sjrd/simplify-scala-runtimeLukas Rytz2016-04-2016-343/+66
|\ \ \ | | | | | | | | Simplify scala.runtime
| * | | Remove the unused scala.runtime.Boxed trait.Sébastien Doeraene2016-04-131-12/+0
| | | |
| * | | Remove plain old dead code in ScalaRunTime.Sébastien Doeraene2016-04-132-66/+0
| | | |
| * | | Do not rely on ScalaRunTime.{inlineEquals,hash} in JavaMirrors.Sébastien Doeraene2016-04-131-3/+3
| | | | | | | | | | | | | | | | We can use the normal Scala language constructs instead.
| * | | Move ScalaRunTime.box to typechecker.Macros.Sébastien Doeraene2016-04-132-15/+14
| | | | | | | | | | | | | | | | Because it was its only call site.
| * | | Inline ScalaRunTime.arrayElementClass at call sites.Sébastien Doeraene2016-04-137-33/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This method was awful. Not only it was using run-time type tests to essentially encode compile-time overloading. But it also did 2 slightly different things for the Class case and ClassTag case. All in all, it is much more readable to inline the appropriate implementation at every call site.
| * | | Move ScalaRunTime.isAnyVal to reify.phases.Reify.Sébastien Doeraene2016-04-133-11/+5
| | | | | | | | | | | | | | | | Because that is the only call site of that method.
| * | | Hide ScalaRunTime.isTuple inside stringOf.Sébastien Doeraene2016-04-133-65/+10
| | | | | | | | | | | | | | | | Because it is otherwise unused.
| * | | Remove dead-code runtime hash() methods.Sébastien Doeraene2016-04-136-94/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ScalaRunTime had a bunch of overloads of the `hash()` method, but only the `Any` version is ever used by the codegen. Worse, their implementation was not in sync with the actual implementations in BoxesRunTime, called by the `Any` version. For example, hash(0x80000000L) != hash(0x80000000L: Any) This commit simply removes all of this dead code. Similarly, we remove BoxesRunTime.hashFromObject(), which was never called either.
| * | | Inline ArrayRuntime methods in ScalaRunTime.array_clone().Sébastien Doeraene2016-04-133-44/+18
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Support for Array[T].clone() was introduced in 36ef60e68c03bc1c7fd2e910ae7d70d4ec32d3bf. At the time, all calls to array.clone() were redirected to ScalaRunTime.array_clone(), which meant that array_clone() itself could not be implemented in terms of `x.clone()`. A Java binding was necessary. Now, the rewriting to `array_clone()` is only done for unbounded generic arrays. Since all the calls within `array_clone()` are monomorphic arrays, the rewriting is not applied, and the Java binding is unnecessary.
* / / SI-9749 REPL strip lead ws on dot continuation (#5097)som-snytt2016-04-153-7/+25
|/ / | | | | | | | | | | Permit leading whitespace before `.` for continued selection. This is just to handle pastes, which will typically include indented text, and not to make dot-continuation especially robust.
* | Merge pull request #5082 from lrytz/inlineImplClassCleanupLukas Rytz2016-04-0719-338/+164
|\ \ | | | | | | Cleanups related to the removal of trait impl classes
| * | Fix InlineInfo attribute for nested module accessorsLukas Rytz2016-04-072-34/+74
| | |
| * | Remove references to trait impl classes, mostly in doc commentsLukas Rytz2016-04-0711-85/+49
| | |
| * | Remove unused optimizer warnings related to trait impl classesLukas Rytz2016-04-042-30/+0
| | |
| * | Remove dead code in the optimizer related to trait impl classesLukas Rytz2016-04-048-209/+61
| | |
* | | Merge pull request #5087 from sh0hei/delete_unnecessary_blank_lineAdriaan Moors2016-04-071-2/+0
|\ \ \ | | | | | | | | Delete unnecessary blank line
| * | | Delete unnecessary blank linesh0hei2016-04-071-2/+0
|/ / /
* | | Generate AnyVal source stubs from sbtStefan Zeiger2016-04-0615-114/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The sbt command `generateSources` now generates both the AnyVal sources and the tuple/function sources (previously done by `genprod`). Source generation is part of the sbt build, the `scala.tools.cmd.gen` package is removed from `scala-compiler`. This simplifies bootstrapping. Generated sources are still in the same location and checked into git. The shell scripts `tools/codegen` and `tools/codegen-anyvals` are also removed. The ant build and the build scripts do not call these. Regenerating sources is a manual step at the moment.
* | | Merge pull request #5081 from adriaanm/2.12.xAdriaan Moors2016-04-041-2/+2
|\ \ \ | | | | | | | | Bump STARR to 2.12.0-M4.
| * | | Bump STARR to 2.12.0-M4.Adriaan Moors2016-04-041-2/+2
| | | |
* | | | General cleanups and less warnings during a Scala buildsoc2016-04-0448-128/+80
|/ / /
* | | SI-6710 Clarify stub methods in primitive value classesLukas Rytz2016-04-0410-39/+47
|\ \ \ | | | | | | | | SI-6710 Clarify stub methods in primitive value classes
| * | | SI-6710 Clarify stub methods in primitive value classesLukas Rytz2016-04-0110-39/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Replaces the implementations of box/unbox in AnyVal companions by `???`, the methods are only stubs, and the impls did not correspond to the actual behavior. The doc comment already points to the actual implementation in BoxesRunTime. - Replaces the body of `getClass` from `null` to `???` and clarifies in a comment why the overrides exist.
* | | | Merge pull request #5077 from felixmulder/topic/scaladoc-minor-fixes1Vlad Ureche2016-04-048-52/+101
|\ \ \ \ | |_|/ / |/| | | Minor fixes to Scaladoc
| * | | Fix incorrect svg on objects with companion traitsFelix Mulder2016-04-035-35/+71
| | | |
| * | | Fix expansion on click for "Full Signature" elementFelix Mulder2016-04-031-1/+6
| | | |
| * | | Fix sidebar not displaying objects with no companionFelix Mulder2016-04-032-15/+23
| | | |
| * | | Fix inconsistent icon elem insertionFelix Mulder2016-04-031-1/+1
| |/ /
* / / Fix minor typoNafer Sanabria2016-04-041-1/+1
|/ /
* | Merge pull request #5068 from retronym/topic/jdk8ism2v2.12.0-M4Lukas Rytz2016-04-0116-67/+82
|\ \ | | | | | | Accomodate and exploit new library, lang features JDK 8