summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| | | * | | `CompleterWrapper` delegates `typeParams`.Adriaan Moors2017-04-042-0/+16
| | |/ / / | | | | | | | | | | | | | | | Fixes the problem reported with #5730 by xuwei-k in scala/scala-dev#352.
| | * | | Merge pull request #5821 from adriaanm/revert-5664-bincoStefan Zeiger2017-04-048-622/+25
| | |\ \ \ | | | | | | | | | | | | Revert #5664 because the binary incompatible change leaks via erasure
| | | * | | Revert "Optimize slice and take in ArrayOps, WrappedArray"Adriaan Moors2017-04-034-450/+10
| | | | | | | | | | | | | | | | | | | | | | | | This reverts commit d540bf01fe4d9e5c56a68b0d3bada9d97af77e3f.
| | | * | | Revert "Optimised implementation of List.filter/filterNot"Adriaan Moors2017-04-035-128/+5
| | | | | | | | | | | | | | | | | | | | | | | | This reverts commit eb5c51383a63c5c3420e53ef021607ff5fd20296.
| | | * | | Revert "Handle WrappedArray the same way as ArrayOps for binary compatibility"Adriaan Moors2017-04-032-67/+33
| | |/ / / | | | | | | | | | | | | | | | This reverts commit f24c2603d0acee5bcb6d5d80bf1e1a4645fa74f0.
| * | | | Revert "Optimize slice and take in ArrayOps, WrappedArray"Adriaan Moors2017-04-074-451/+11
| | | | | | | | | | | | | | | | | | | | This reverts commit d540bf01fe4d9e5c56a68b0d3bada9d97af77e3f.
| * | | | Revert "Optimised implementation of List.filter/filterNot"Adriaan Moors2017-04-075-128/+5
| | | | | | | | | | | | | | | | | | | | This reverts commit eb5c51383a63c5c3420e53ef021607ff5fd20296.
| * | | | Revert "Handle WrappedArray the same way as ArrayOps for binary compatibility"Adriaan Moors2017-04-072-67/+33
| | | | | | | | | | | | | | | | | | | | This reverts commit f24c2603d0acee5bcb6d5d80bf1e1a4645fa74f0.
| * | | | Merge 2.11.x into 2.12.xAdriaan Moors2017-04-070-0/+0
| |\| | | | | | | | | | | | | | | | | | Skip to 6008e4b Bump versions on 2.11.9 release
| | * | | Bump versions on 2.11.9 releaseAdriaan Moors2017-03-285-6/+6
| | | | |
| | * | | Merge pull request #5804 from jvican/stub-errors-2.11.8Adriaan Moors2017-03-2731-36/+465
| | |\ \ \ | | | | | | | | | | | | Backport 2.11.9: Improve stub error messages (SCP-009 proposal)
| | | * | | Disable stub warning by default.Oscar Boykin2017-03-254-5/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we create a class symbols from a classpath elements, references to other classes that are absent from the classpath are represented as references to "stub symbols". This is not a fatal error; for instance if these references are from the signature of a method that isn't called from the program being compiled, we don't need to know anything about them. A subsequent attempt to look at the type of a stub symbols will trigger a compile error. Currently, the creation of a stub symbol incurs a warning. This commit removes that warning on the basis that it isn't something users need to worry about. javac doesn't emit a comparable warning. The warning is still issued under any of `-verbose` / `-Xdev` / `-Ydebug`.
| | | * | | Improve stub error messages (SCP-009 proposal)jvican2017-03-2428-31/+461
| | |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The following commit message is a squash of several commit messages. - This is the 1st commit message: Add position to stub error messages Stub errors happen when we've started the initialization of a symbol but key information of this symbol is missing (the information cannot be found in any entry of the classpath not sources). When this error happens, we better have a good error message with a position to the place where the stub error came from. This commit goes into this direction by adding a `pos` value to `StubSymbol` and filling it in in all the use sites (especifically `UnPickler`). This commit also changes some tests that test stub errors-related issues. Concretely, `t6440` is using special Partest infrastructure and doens't pretty print the position, while `t5148` which uses the conventional infrastructure does. Hence the difference in the changes for both tests. - This is the commit message #2: Add partest infrastructure to test stub errors `StubErrorMessageTest` is the friend I introduce in this commit to help state stub errors. The strategy to test them is easy and builds upon previous concepts: we reuse `StoreReporterDirectTest` and add some methods that will compile the code and simulate a missing classpath entry by removing the class files from the class directory (the folder where Scalac compiles to). This first iteration allow us to programmatically check that stub errors are emitted under certain conditions. - This is the commit message #3: Improve contents of stub error message This commit does three things: * Keep track of completing symbol while unpickling First, it removes the previous `symbolOnCompletion` definition to be more restrictive/clear and use only positions, since only positions are used to report the error (the rest of the information comes from the context of the `UnPickler`). Second, it adds a new variable called `lazyCompletingSymbol` that is responsible for keeping a reference to the symbol that produces the stub error. This symbol will usually (always?) come from the classpath entries and therefore we don't have its position (that's why we keep track of `symbolOnCompletion` as well). This is the one that we have to explicitly use in the stub error message, the culprit so to speak. Aside from these two changes, this commit modifies the existing tests that are affected by the change in the error message, which is more precise now, and adds new tests for stub errors that happen in complex inner cases and in return type of `MethodType`. * Check that order of initialization is correct With the changes introduced previously to keep track of position of symbols coming from source files, we may ask ourselves: is this going to work always? What happens if two symbols the initialization of two symbols is intermingled and the stub error message gets the wrong position? This commit adds a test case and modifications to the test infrastructure to double check empirically that this does not happen. Usually, this interaction in symbol initialization won't happen because the `UnPickler` will lazily load all the buckets necessary for a symbol to be truly initialized, with the pertinent addresses from which this information has to be deserialized. This ensures that this operation is atomic and no other symbol initialization can happen in the meantime. Even though the previous paragraph is the feeling I got from reading the sources, this commit creates a test to double-check it. My attempt to be better safe than sorry. * Improve contents of the stub error message This commit modifies the format of the previous stub error message by being more precise in its formulation. It follows the structured format: ``` s"""|Symbol '${name.nameKind} ${owner.fullName}.$name' is missing from the classpath. |This symbol is required by '${lazyCompletingSymbol.kindString} ${lazyCompletingSymbol.fullName}'. ``` This format has the advantage that is more readable and explicit on what's happening. First, we report what is missing. Then, why it was required. Hopefully, people working on direct dependencies will find the new message friendlier. Having a good test suite to check the previously added code is important. This commit checks that stub errors happen in presence of well-known and widely used Scala features. These include: * Higher kinded types. * Type definitions. * Inheritance and subclasses. * Typeclasses and implicits. - This is the commit message #4: Use `lastTreeToTyper` to get better positions The previous strategy to get the last user-defined position for knowing what was the root cause (the trigger) of stub errors relied on instrumenting `def info`. This instrumentation, while easy to implement, is inefficient since we register the positions for symbols that are already completed. However, we cannot do it only for uncompleted symbols (!hasCompleteInfo) because the positions won't be correct anymore -- definitions using stub symbols (val b = new B) are for the compiler completed, but their use throws stub errors. This means that if we initialize symbols between a definition and its use, we'll use their positions instead of the position of `b`. To work around this we use `lastTreeToTyper`. We assume that stub errors will be thrown by Typer at soonest. The benefit of this approach is better error messages. The positions used in them are now as concrete as possible since they point to the exact tree that **uses** a symbol, instead of the one that **defines** it. Have a look at `StubErrorComplexInnerClass` for an example. This commit removes the previous infrastructure and replaces it by the new one. It also removes the fields positions from the subclasses of `StubSymbol`s. - This is the commit message #5: Keep track of completing symbols Make sure that cycles don't happen by keeping track of all the symbols that are being completed by `completeInternal`. Stub errors only need the last completing symbols, but the whole stack of symbols may be useful to reporting other error like cyclic initialization issues. I've added this per Jason's suggestion. I've implemented with a list because `remove` in an array buffer is linear. Array was not an option because I would need to resize it myself. I think that even though list is not as efficient memory-wise, it probably doesn't matter since the stack will usually be small. - This is the commit message #6: Remove `isPackage` from `newStubSymbol` Remove `isPackage` since in 2.12.x its value is not used.
| * | | | Merge 2.11.x into 2.12.xAdriaan Moors2017-04-074-21/+43
| |\| | | | | | | | | | | | | | | | | | Include 99f41a1 Merge pull request #5736
| | * | | Merge pull request #5736 from adriaanm/t10206Adriaan Moors2017-03-214-21/+43
| | |\ \ \ | | | | | | | | | | | | SI-10206 tighten fix for SI-6889
| | | * | | Test case for SI-10206Jason Zaugg2017-03-021-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implicit search implements a restriction that the target type for an implicit view should be more specific that AnyRef or AnyVal. scala> def foo(s: String): AnyVal = s <console>:12: error: the result type of an implicit conversion must be more specific than AnyVal def foo(s: String): AnyVal = s ^ Without this, an implicit value classes over `String` would be applied, which is unlikely to be what was intended. Implicit views are implemented as an implicit search for a function type with a structural type as its result. This structural type is created with: scala> val schema = analyzer.HasMethodMatching.apply(TermName("clone"), Nil, WildcardType) schema: $r.intp.global.analyzer.global.Type = ?{def clone(): ?} The quirk arises when, as above, we're seeking a member with the same name as a member of AnyRef. AnyRef is seen to be a subtype of the result type: scala> AnyRefClass.tpe <:< schema res23: Boolean = true Which leads to the implicit in the test case being disqualified. The typer opts to report the error about the inapplicability of the inherited clone method, so we don't even know why the implicit was discarded.
| | | * | | SI-10206 tighten fix for SI-6889Adriaan Moors2017-02-233-21/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are more supertypes of `AnyRef` than you might think: `?{def clone: ?}` is one example...
| * | | | | Merge 2.11.x into 2.12.xAdriaan Moors2017-04-070-0/+0
| |\| | | | | | | | | | | | | | | | | | | | | | Skip to 363d9e5 Merge pull request #5781
| | * | | | Merge pull request #5781 from lrytz/2.11.xLukas Rytz2017-03-161-2/+1
| | |\ \ \ \ | | | | | | | | | | | | | | update stale comment
| | | * | | | update stale commentLukas Rytz2017-03-161-2/+1
| | |/ / / /
| | * | | | Merge pull request #5764 from lrytz/bootstrap-2.11Lukas Rytz2017-03-094-72/+103
| | |\ \ \ \ | | | | | | | | | | | | | | [backport] new repo, version numbers for integration builds
| | | * | | | [backport] new repo, version numbers for integration buildsLukas Rytz2017-03-094-72/+103
| | |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Integration builds now have version number like `2.12.2-bin-sha7` or `2.13.0-pre-sha7` and are published to scala-integration (no longer scala-release-temp). scala-release-temp is still used in the bootstrap script for publishing locker.
| * | | | | Merge 2.11.x into 2.12.xAdriaan Moors2017-04-076-8/+8
| |\| | | | | | | | | | | | | | | | | | | | | | Include 828a892 Merge pull request #5753
| | * | | | Merge pull request #5753 from Philippus/issue/copyright_yearSeth Tisue2017-03-067-9/+9
| | |\ \ \ \ | | | | | | | | | | | | | | bump copyright year to 2017 [ci: last-only]
| | | * | | | bump copyright year to 2017Philippus Baalman2017-03-027-9/+9
| | | |/ / /
| * | | | | Merge 2.11.x into 2.12.xAdriaan Moors2017-04-070-0/+0
| |\| | | | | | | | | | | | | | | | | | | | | | Skip to 3f437a2 Merge pull request #5730
| | * | | | Merge pull request #5730 from adriaanm/userdefined-apply-211Adriaan Moors2017-03-026-23/+242
| | |\ \ \ \ | | | |/ / / | | |/| | | Allow user-defined apply/unapply method in case class companion
| | | * | | Improvements based on reviews by Lukas & JasonAdriaan Moors2017-03-026-24/+107
| | | | | |
| | | * | | Clarify spec of interaction of existing vs synthetic apply/unapplyAdriaan Moors2017-02-281-11/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When matching user-defined apply/unapply members exist in a case class's companion object, don't add clashing synthetic ones.
| | | * | | Allow user-defined `[un]apply` in case companionAdriaan Moors2017-02-274-12/+149
| | |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Don't emit a synthetic `apply` (or `unapply`) when it would clash with an existing one. This allows e.g., a `private apply`, along with a `case class` with a `private` constructor. We have to retract the synthetic method in a pretty roundabout way, as we need the other methods and the owner to be completed already. Unless we have to complete the synthetic `apply` while completing the user-defined one, this should not be a problem. If this does happen, this implies there's a cycle in computing the user-defined signature and the synthetic one, which is not allowed.
| * | | | Merge 2.11.x into 2.12.xAdriaan Moors2017-04-071-1/+1
| |\| | | | | | | | | | | | | | | | | | Include 011cc7e Merge pull request #5699 from SethTisue/mima-0.1.14
| | * | | Merge pull request #5699 from SethTisue/mima-0.1.14Seth Tisue2017-02-172-2/+2
| | |\ \ \ | | | | | | | | | | | | upgrade to MiMa 0.1.14
| | | * | | upgrade to MiMa 0.1.14Seth Tisue2017-02-142-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | just on general dogfooding principle
| * | | | | Merge 2.11.x into 2.12.xAdriaan Moors2017-04-070-0/+0
|/| | | | | | |/ / / / | | | | | | | | | | Skip up to 9422e7a Merge pull request #5705 from SethTisue/readme-ant-tweak
| * | | | Merge pull request #5705 from SethTisue/readme-ant-tweakAdriaan Moors2017-02-161-1/+1
| |\ \ \ \ | | | | | | | | | | | | update Ant version info in readme
| | * | | | update Ant version info in readmeSeth Tisue2017-02-151-1/+1
| | | | | |
| * | | | | More reusable path for windows jobAdriaan Moors2017-02-151-3/+2
| |/ / / /
* | | | | Merge pull request #5835 from lrytz/t5717-testLukas Rytz2017-04-072-1/+2
|\ \ \ \ \ | | | | | | | | | | | | t5717: test message, not just absence of compiler crash
| * | | | | t5717: test message, not just absence of compiler crashLukas Rytz2017-04-072-1/+2
| | |_|/ / | |/| | |
* | | | | Update README.mdAdriaan Moors2017-04-071-1/+1
| | | | |
* | | | | Bye bye JIRAAdriaan Moors2017-04-071-2/+1
|/ / / /
* | | | Merge pull request #5811 from milessabin/topic/implicitinfo-hashcodeJason Zaugg2017-04-052-1/+43
|\ \ \ \ | | | | | | | | | | Make ImplicitInfo hashCode consistent with equals.
| * | | | Make ImplicitInfo hashCode consistent with equals.Miles Sabin2017-04-032-1/+43
| | | | |
* | | | | Merge pull request #5773 from wpopielarski/2.12.xAdriaan Moors2017-04-042-1/+13
|\ \ \ \ \ | | | | | | | | | | | | Adds three Java 8 new Constant Pool structures to scalap.
| * | | | | Adds three Java 8 new Constant Pool structures to scalap.wpopielarski2017-03-132-1/+13
| | |_|_|/ | |/| | |
* | | | | Merge pull request #5813 from viktorklang/wip-improve-await-docs-√Seth Tisue2017-04-042-26/+59
|\ \ \ \ \ | | | | | | | | | | | | Improving ScalaDoc for ExecutionContexts
| * | | | | Improving ScalaDoc for ExecutionContext and Await.Viktor Klang2017-03-292-26/+59
| | |/ / / | |/| | |
* | | | | Merge pull request #5817 from ashawley/java-converters-typoSeth Tisue2017-03-311-6/+6
|\ \ \ \ \ | | | | | | | | | | | | Fix typo in JavaConverters doc
| * | | | | Fix typo in JavaConverters docAaron S. Hawley2017-03-311-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There is no such thing as scala.collection.mutable.concurrent.Map error: object concurrent is not a member of package scala.collection.mutable Introduced in 2908236a
* | | | | | Merge pull request #5802 from jrudolph/jr/w/ListBuffer-isEmpty-nonEmptyLukas Rytz2017-03-301-0/+4
|\ \ \ \ \ \ | |_|/ / / / |/| | | | | Implement ListBuffer.isEmpty / nonEmpty / head efficiently