summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Test demonstrating SI-8085Mirco Dotta2013-12-186-0/+55
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * The presentation compiler sourcepath is now correctly set-up. * Amazingly enough (for me at least), the outer import in the package object seem to be responsible of the faulty behavior. In fact, if you move the import clause *inside* the package object, the test succeed! The test's output does provide the correct hint of this: ``` % diff /Users/mirco/Projects/ide/scala/test/files/presentation/t8085-presentation.log /Users/mirco/Projects/ide/scala/test/files/presentation/t8085.check @@ -1,3 +1,2 @@ reload: NodeScalaSuite.scala -prefixes differ: <empty>.nodescala,nodescala -value always is not a member of object scala.concurrent.Future +Test OK ``` Notice the ``-prefixes differ: <empty>.nodescala,nodescala``. And compare it with the output when the import clause is placed inside the package object: ``` % diff /Users/mirco/Projects/ide/scala/test/files/presentation/t8085-presentation.log /Users/mirco/Projects/ide/scala/test/files/presentation/t8085.check @@ -1,4 +1,2 @@ reload: NodeScalaSuite.scala -reload: NodeScalaSuite.scala -open package module: package object nodescala Test OK ``` Notice now the ``-open package module: package object nodescala``!
* Merge pull request #3268 from adriaanm/support-3021v2.10.4-RC1Adriaan Moors2013-12-124-6/+37
|\ | | | | Report error on code size overflow, log method name.
| * Report error on code size overflow, log method name.Adriaan Moors2013-12-124-6/+37
|/ | | | | | | We used to silently skip class files that would exceed the JVM's size limits. While rare, this should still be an error. While I was at it, also included the name of the offending method.
* Partially revert f8d8f7d08d.Adriaan Moors2013-12-111-0/+1
| | | | | | | | Need `${dist.dir}/lib/scala-partest.jar` for maven publish. We still don't want to distribute it in the distribution, but will have to remove it in release script, as 2.10.x's build hasn't been refactoreded like master's, and I'm not backporting it.
* Merge pull request #3261 from adriaanm/ticket-6426Adriaan Moors2013-12-114-18/+6
|\ | | | | Revert ", importable _."
| * Revert "SI-6426, importable _."Adriaan Moors2013-12-104-18/+6
| | | | | | | | | | | | | | This reverts commit d2316df920ffa4804fe51e8f8780240c46efa982. We can't make `_` an illegal identifier -- it's legal in Java, so we must be able to name these Java underscores.
* | Merge pull request #3253 from retronym/ticket/8062Adriaan Moors2013-12-116-5/+20
|\ \ | |/ |/| Fix inliner cycle with recursion, separate compilation
| * SI-8062 Fix inliner cycle with recursion, separate compilationJason Zaugg2013-12-106-5/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ICodeReaders, which decompiles JVM bytecode to ICode, was not setting the `recursive` attribute of `IMethod`. This meant that the inliner got into a cycle, repeatedly inlining the recursive call. The method name `filter` was needed to trigger this as the inliner heuristically treats that as a more attractive inlining candidate, based on `isMonadicMethod`. This commit: - refactors the checking / setting of `virtual` - adds this to ICodeReaders - tests the case involving `invokevirtual` I'm not sure how to setup a test that fails without the other changes to `ICodeReader` (for invokestatic and invokespecial).
* | Fixup #3248 missed a spot in pack.xmlAdriaan Moors2013-12-101-1/+1
| | | | | | | | | | Forgot to run `ant distpack` to verify, only did `dist.done`. Implemented the rename of `doc/scala-devel-docs` to `api`.
* | Merge pull request #3249 from retronym/ticket/7912Adriaan Moors2013-12-102-2/+24
|\ \ | | | | | | SI-7912 Be defensive calling `toString` in `MatchError#getMessage`
| * | SI-7912 Be defensive calling `toString` in `MatchError#getMessage`Jason Zaugg2013-12-102-2/+24
| | | | | | | | | | | | | | | Otherwise, objects with exception-throwing `toString` lead to a cascading error far removed from the originally failed match.
* | | Merge pull request #3251 from retronym/ticket/8060Adriaan Moors2013-12-102-1/+12
|\ \ \ | | | | | | | | SI-8060 Avoid infinite loop with higher kinded type alias
| * | | SI-8060 Avoid infinite loop with higher kinded type aliasJason Zaugg2013-12-102-1/+12
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `dealiasLocals` map was assuming that: tp.isAliasType implies (tp.dealias ne tp) This isn't true if `!typeParamsMatchArgs`. This commit avoids the infinite loop by checking whether or not dealiasing progresses.
* | | Merge pull request #3248 from adriaanm/dist-cleanup-licensesAdriaan Moors2013-12-10113-6236/+303
|\ \ \ | |/ / |/| | Clean up Scala distribution a bit.
| * | Update README, include doc/licenses in distroAdriaan Moors2013-12-107-66/+301
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We forgot to copy the licenses directory to the dists/ directory, so that they weren't included in the binary distribution. I did some house cleaning while I was at it. We no longer distribute ant as far as I can see (we used to for the sbt build, but that was long since removed). Added license for ASM, and Jansi (just to be sure).
| * | Add attribution for Typesafe.Adriaan Moors2013-12-091-0/+2
| | | | | | | | | | | | This was agreed on a while ago, but not yet implemented.
| * | Remove docs/examples; they reside at scala/scala-distAdriaan Moors2013-12-09104-6120/+1
| | |
| * | Remove unused android test and corresponding license.Adriaan Moors2013-12-093-43/+0
| | |
| * | Do not distribute partest and its dependencies.Adriaan Moors2013-12-091-8/+0
| | |
* | | Merge pull request #3222 from skyluc/issue/completion-import-vals-210-7995Adriaan Moors2013-12-096-54/+112
|\ \ \ | | | | | | | | SI-7995 completion imported vars and vals
| * | | SI-7995 completion imported vars and valsLuc Bourlier2013-12-066-54/+112
| | | | | | | | | | | | | | | | | | | | | | | | Imported member vals and vars were always marked inaccessible, even if referencing them at the location of the completion is valid in code. The accessible flag is now set accordingly to the accessibility of the getter.
* | | | Merge pull request #3244 from rtyley/si-8019-swing-publisher-check-pf-definedAdriaan Moors2013-12-091-1/+1
|\ \ \ \ | |_|/ / |/| | | SI-8019 Make Publisher check PartialFunction is defined for Event
| * | | SI-8019 Make Publisher check PartialFunction is defined for EventRoberto Tyley2013-12-091-1/+1
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reactions are PartialFunctions, so if events come through indiscriminately that the listener is not defined for, errors occur. Eg: -- Exception in thread "AWT-EventQueue-0" scala.MatchError: FocusGained(scala.swing wrapper scala.swing.TextField -- A Coursera thread with people affected by this issue: https://class.coursera.org/reactive-001/forum/thread?thread_id=1315
* | | Merge pull request #3229 from retronym/ticket/8029Adriaan Moors2013-12-093-1/+69
|\ \ \ | | | | | | | | SI-8029 Avoid multi-run cyclic error with companions, package object
| * | | SI-8029 Avoid multi-run cyclic error with companions, package objectJason Zaugg2013-12-063-1/+69
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The bug report suggests this problem only became visible in the IDE *after* 2.10.3, but I tested an IDE with exactly 2.10.3 and saw the same problem. In fact, my test case fails as far back as 2.10.0. I suspect the problem showed up after 816cecf9a9, which checks that pairs of companion symbols are codefined eagerly in Namers. This commit modifies the check of `rawInfo ne NoType` in `isCoDefinedWith` to avoid triggering adaptation of types from the previous run. I'm not sure of the precise intent of that check. I looked at c9861cd198 (genesis of isCoDefinedWith). Before that we get back to 3761cb4b3a1 (the dawn of Subversion.)
* | | Merge pull request #3230 from retronym/backport/7439Eugene Burmako2013-12-075-1/+41
|\ \ \ | | | | | | | | [backport] SI-7439 Avoid NPE in `isMonomorphicType` with stub symbols.
| * | | [backport] SI-7439 Avoid NPE in `isMonomorphicType` with stub symbols.Jason Zaugg2013-12-075-1/+41
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `originalInfo` can return null for stub symbols; deal with that as we used to before a regression in 016bc3db. After this change, we can once again delete A_1.class and still compile code instantiating B_1. (A_1 is only referred to in a method signature of B_1 which is not called from our code.) scala> new B_1 warning: Class A_1 not found - continuing with a stub. res0: B_1 = B_1@5284b8f9 In practice, this situation arises when someone uses a third party class that was compiled against other libraries not avaialable on the current compilation classpath. (cherry picked from commit a95432168204964e4f6c4571e781559c1640f2d8)
* | | Merge pull request #3223 from retronym/ticket/8010-2.10.xEugene Burmako2013-12-072-0/+35
|\ \ \ | | | | | | | | SI-8010 Fix regression in erasure double definition checks
| * | | SI-8010 Fix regression in erasure double definition checksJason Zaugg2013-12-062-0/+35
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Calls to `Symbol#info` during scope iteration considered harmful. Looks like calling `info` during this Scope iteration is triggering the ExplicitOuter info transformer, which "makes all super accessors and modules in traits non-private, mangling their names.". This name change necessitates a rehashing of the owning scope, which I suspect is enough to corrupt the ScopeEntry-s being traversed in `checkNoDeclaredDoubleDefs`. The upshot was that we encountered the same symbol twice, which was reported as being a double-definition. This problem only showed up after 086702d8a74, which did nothing worse then change the order in which `{e, e1}.sym.info` were forced. I inspected SymbolPairs/OverridingPairs which *appear* to be immune as they only test flags during scope iteration; infos are not used until later, at which point we're iterating a temporary scope that isn't part of the type of the owner of the symbols.
* | | Merge pull request #3232 from xeno-by/topic/macro-error-messages-210xJason Zaugg2013-12-0719-27/+25
|\ \ \ | |_|/ |/| | [nomaster] better error messages for various macro definition errors
| * | [nomaster] better error messages for various macro definition errorsEugene Burmako2013-12-0619-27/+25
|/ / | | | | | | backport of 1d3ec4e708154ec05554f540d7d68ed55dc12426
* | Merge pull request #3209 from dotta/SI-7982-on-2.10.xJason Zaugg2013-12-068-15/+58
|\ \ | | | | | | make askLoadedType unload arguments out of the PC by default,
| * | SI-7982 Changed contract of askLoadedType to unload units by defaultFrançois Garillot2013-12-068-15/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The rationale for not keeping units loaded by default is that the more units are loaded, the slower is background compilation. For instance, in the Scala IDE for Eclipse (which uses the presentation compiler), typechecking occurs every time the reconciler kicks-in (~500millis after you stop typing), hence it is important that units are not kept loaded unless strictly necessary (for some extra information about this, see https://www.assembla.com/spaces/scala-ide/tickets/1001388) While I agree that using a boolean argument (`keepLoaded`) for deciding if a unit should be loaded isn't a great design, other methods in `CompilerControl` also have a keepLoaded parameter, so at least we have some consistency. For the future, I'm thinking we should be able to remove the `keepLoaded` flag altogether, and change the implementation of `askLoadedType` to preserve the same units loaded in the presentation compiler before and after its execution. Basically, if you want a unit to be kept loaded, you should call `askReload` first, and then `askLoadedType`. However, to reduce impact, I think the changes carried by this commit will help us estimate if the solution I just outlined is viable (because `askLoadeType` won't be keeping units loaded by default, which wasn't the case with the former implementation). (While the patch was mostly contributed by @huitseeker, @dotta has edited the commit message to preserve the comments in the PR https://github.com/scala/scala/pull/3209)
* | | Merge pull request #3181 from heathermiller/issue/6913James Iry2013-12-053-5/+8
|\ \ \ | |_|/ |/| | SI-6913 Reapplies a lost fix by @viktorklang
| * | SI-6913 Fixing semantics of Future fallbackTo to be according to docsHeather Miller2013-12-053-5/+8
|/ / | | | | | | Origin: viktorklang@1bbe854
* | Merge pull request #3208 from dotta/si-7548-on-2.10Jason Zaugg2013-12-027-9/+71
|\ \ | |/ |/| askTypeAt returns the same type for full/ targeted typecheck (2.10.x)
| * SI-7458 Pres. compiler must not observe trees in silent modeJason Zaugg2013-12-022-6/+8
| | | | | | | | | | | | | | | | | | | | | | | | Otherwise we can think that `+` in `1 + BigInt(2)` refers to a method in `Int`. In general, this protects the IDE from observing results from "exploratory" typing which is discarded as the compiler backtracks to another possibility. This protection subsumes the condition that checked for overloaded types: presentation/t7458 now passes without this.
| * SI-7548 Test to demonstrate residual exploratory typing bugJason Zaugg2013-12-023-0/+30
| | | | | | | | | | | | | | | | | | | | | | | | We shouldn't observe tree types under silent mode. The enclosed test is a standalone version of `1 + BigInt(2)`, a standard example of exploratory typing in Scala. Once we determine that none of the `+` methods in `Int` accepts (possibly implicitly coerced `BigInt`), we have to backtrack and look for a view from `Int => { +(_: BigInt): ? }`. The next commit will correct the problem.
| * SI-7548 askTypeAt returns the same type whether the source was fully or ↵Mirco Dotta2013-12-024-9/+39
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | targeted type-checked When asking for targeted typecheck, the located tree may have overloaded types is the source isn't yet fully typechecked (e.g., a select tree for an overloaded method). This is problematic as it can lead to unknown 'hovers', broken hyperlinking that suddenly starts working, unresolved ScalaDoc comments, and similar, in the Scala IDE. With this commit we are hardening the contract of `askTypeAt` to return the same type whether the file was fully type-checked or targeted type-checked. This is done by preventing the typechecker to stop too early if the `located` tree has an overloaded type. Furthermore, I'm assuming that if `located.tpe` is of type `OverloadedType`, by letting the compiler carry-on the typechecking, the `located.tpe` will eventually be resolved to a non-overloaded type. Said otherwise, I expect the targeted typechecking will always terminate (if my reasoning isn't sound, please say so). The test provided with this commit demonstrates the new behavior (the position used to execute the test is resolved to the `foo` method's call). In fact, before this commit, executing the test returned the following: (x: Int, y: String)Unit <and> (x: String)Unit <and> (x: Int)Unit Showing that the tree's type is an overloaded type. The ambiguity is fixed by this commit, and in fact the test's output is now: (x: Int)Unit
* Merge pull request #3180 from xeno-by/topic/toolbox-rangeposJason Zaugg2013-11-263-2/+16
|\ | | | | teaches toolbox about -Yrangepos
| * [nomaster] teaches toolbox about -YrangeposEugene Burmako2013-11-223-2/+16
| | | | | | | | | | | | | | | | | | | | | | | | Unlike in master, in 2.10.x enabling -Yrangepos requires instantiating Global with mixed in RangePositions trait. Same story for toolboxes. Just setting Yrangepos is not enough - one needs to mix in RangePositions into ToolboxGlobal. I didn’t know that back then, so now I’m fixing the oversight. The commit is marked as [nomaster], because -Yrangepos doesn’t need special treatment in master.
* | Merge pull request #3196 from retronym/topic/3190-fixupJason Zaugg2013-11-2610-8/+178
|\ \ | |/ |/| Corrects positions for Dynamic calls
| * SI-8005 Fixes NoPositon error for updateDynamic callsSimon Schaefer2013-11-263-1/+45
| | | | | | | | | | | | | | | | Previously there occurred a NoPosition error when one asks for position information in the AST because no positions were set to the trees created during the transformation for updateDynamic calls. This commit applies range positions to the trees in order to being able to highlight them inside of the scala-ide.
| * SI-8004 Resolve NoPosition error for applyDynamicNamed method callSimon Schaefer2013-11-263-2/+47
| | | | | | | | | | | | | | | | | | Previously, there were no positions created for the tuples that are generated while doing the transformation for an applyDynamicNamed call. This led to an NoPosition error in scalac when one tries to show position information in the AST. Furthermore, this simplifies semantic highlighting in the scala-ide because no position information for color ranges have to be created anymore.
| * SI-7463,SI-8003 Correct wrong position for {select,apply}Dynamic callsSimon Schaefer2013-11-266-5/+86
|/ | | | | | | | | | | | The new positions are range positions that directly refer to the beginning and the end of the method calls in the sources instead of simply point to the beginning of the expression. This allows the scala-ide to semantically highlight select- and applyDynamic method calls, because it has only to traverse the tree and apply the color ranges to the given position ranges. This also fixes the position marker of an error messages related to a wrong Dynamic method signature.
* Merge pull request #3166 from skyluc/issue/completion-import-object-7280-210Jason Zaugg2013-11-2229-53/+1031
|\ | | | | Backport of
| * [nomaster] SI-7280 Scope completion not returning members provided by importsLuc Bourlier2013-11-214-25/+248
| | | | | | | | | | | | | | | | | | Updates localeContext() to return the best context possible when there are none directly associated with the given position. It happens when an expression cannot be successfully typed, as no precise ContextTree covers the expression location, or if the position is not inside any expression. Adds corresponding tests (cherry picked from commit 3028327e2a2b553b12ee45519413515c8aa0865f)
| * [nomaster] Adds test cases for scope completionLuc Bourlier2013-11-2112-0/+707
| | | | | | | | (cherry picked from commit 3d55fe723f1af91f4d2db421f0e0965c583346dc)
| * [nomaster] Test infrastructure for scope completionJason Zaugg2013-11-2113-28/+76
| | | | | | | | | | | | Adds a new marker /*_*/ to trigger scope completion test. Original type completion test oracles update for the tweaked output (cherry picked from commit 9c7c66ff7907e3ab814f0f4375eeaf6cdd230d5e)
* | Merge pull request #3157 from dotta/backport/2.10.x/si-7915Jason Zaugg2013-11-214-3/+34
|\ \ | |/ |/| Backport of SI-7915