summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Rename EmptyTypTree into SyntacticEmptyTypeTreeDenys Shabalin2014-02-071-11/+7
| | | | | | 1. Change the name as Eugene believes previous name was misleading 2. Remove EmptyTree case as it's not needed any longer
* Merge pull request #3479 from adriaanm/eclipseAdriaan Moors2014-02-061-1/+1
|\ | | | | Fix partest-extras eclipse project dependencies
| * Fix partest-extras eclipse project dependenciesAdriaan Moors2014-02-051-1/+1
| |
* | Merge pull request #3475 from densh/topic/holemap-orderingEugene Burmako2014-02-062-20/+21
|\ \ | | | | | | Fix inconsistent binding in patterns with 10+ holes
| * | Fix inconsistent binding in patterns with 10+ holesDenys Shabalin2014-02-062-21/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously a map that was storing bindings of fresh hole variables with their contents (tree & cardinality) used to be a SortedMap which had issues with inconsistent key ordering: "$fresh$prefix$1" < "$fresh$prefix$2" ... "$fresh$prefix$8" < "$fresh$prefix$9" "$fresh$prefix$9" > "$fresh$prefix$10" This issue is solved by using a LinkedHashMap instead (keys are inserted in the proper order.)
* | | Merge pull request #3458 from densh/si/8173Eugene Burmako2014-02-063-40/+53
|\ \ \ | | | | | | | | SI-8173 add support for patterns like init :+ last to quasiquotes
| * | | SI-8173 add support for patterns like init :+ last to quasiquotesDenys Shabalin2014-02-023-40/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds support for patterns like: val q"{ ..$init; $last }" = q"{ a; b; c }" // init == List(q"a", q"b") // last == q"c" Which under the hood get compiled as `:+` patterns: SyntacticBlock(init :+ last)
* | | | Merge pull request #3395 from adriaanm/dist-cleanupJason Zaugg2014-02-069-100/+1
|\ \ \ \ | | | | | | | | | | Dist cleanup
| * | | | Remove cruft from pom.Adriaan Moors2014-01-219-100/+1
| | | | | | | | | | | | | | | | | | | | | | | | | My understanding is distributionManagement is only needed to configure maven locally for publishing. Since we do that it ant, getting rid of it.
* | | | | Merge pull request #3469 from adriaanm/t8239Jason Zaugg2014-02-061-2/+14
|\ \ \ \ \ | |_|_|_|/ |/| | | | don't loop forever in ContextTrees.locateContextTree
| * | | | SI-8239 don't loop forever in ContextTrees.locateContextTreeAdriaan Moors2014-02-051-2/+14
| | | | | | | | | | | | | | | | | | | | Made loop invariant / recursion metric explicit.
* | | | | Merge pull request #3473 from gkossakowski/update-eclipse-filesAdriaan Moors2014-02-051-0/+1
|\ \ \ \ \ | | | | | | | | | | | | Add repl as dependency of test-junit Eclipse project.
| * | | | | Add repl as dependency of test-junit Eclipse project.Grzegorz Kossakowski2014-02-061-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since 8f20fa23dbb5b000f0889132b8c6e2acfff096b3 junit tests depend on repl. We need to reflect that dependency in our Eclipse project files.
* | | | | | Merge pull request #3449 from retronym/topic/opt11Grzegorz Kossakowski2014-02-056-22/+49
|\ \ \ \ \ \ | | | | | | | | | | | | | | Another grab bag of compiler optimizations
| * | | | | | Avoid work in GenICode#run when inactive.Jason Zaugg2014-01-311-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | scalaPrimitives.init() represented 1% of a small (1s) compilation run.
| * | | | | | Optimization in UncurryJason Zaugg2014-01-311-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Only perform HashMap lookup of a tree until after checking more cheaply if it refers to a symbol with by-name parameter type.
| * | | | | | Avoid needless Name creationJason Zaugg2014-01-313-15/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Don't create names just to perform prefix/suffix checks - Don't create names, decode, *and* intern strings in ICode
| * | | | | | Optimize generic signatures utility method `dotCleanup`Jason Zaugg2014-01-311-3/+14
| | | | | | |
* | | | | | | Merge pull request #3457 from retronym/ticket/8228Adriaan Moors2014-02-051-0/+1
|\ \ \ \ \ \ \ | |_|_|/ / / / |/| | | | | | SI-8228 Avoid infinite loop with erroneous code, overloading
| * | | | | | SI-8228 Avoid infinite loop with erroneous code, overloadingJason Zaugg2014-02-021-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `isApplicableBasedOnArity` couldn't get of the ferris wheel after as `followApply` kept insisting on another spin. scala> ErrorType nonPrivateMember nme.apply res0: $r.intp.global.Symbol = value apply scala> res0.info res1: $r.intp.global.Type = <error> This commit makes `followApply` consider that an `ErrorType` does not contain an `apply` member. I also considered whether to do a deep check on the type (`isErroneous`), but I can't motivate this with a test. I tend to think we *shouldn't* do that: `List[${ErrorType}]` still has an `apply` member that we should follow, right?
* | | | | | | Merge pull request #3432 from havocp/patch-1Adriaan Moors2014-02-051-2/+38
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Improve ExecutionContext implicitNotFound and docs
| * | | | | | | Improve ExecutionContext implicitNotFound and docsHavoc Pennington2014-01-311-2/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It is not good practice to import a specific ExecutionContext all over the place; we shouldn't recommend that. People should allow callers to specify the context in most cases and only import the context in some central location in their code. While we are at it, add some more comprehensive docs to ExecutionContext which will hopefully give people enough understanding to make decisions about it.
* | | | | | | | Merge pull request #3453 from Ichoran/issue/4997Adriaan Moors2014-02-051-0/+1
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | SI-4997 deprecate StringLike.linesIterator for StringLike.lines
| * | | | | | | | SI-4997 deprecate StringLike.linesIterator for StringLike.linesRex Kerr2014-01-311-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Deprecated. lines is by far more consistent with the rest of the naming in the library.
* | | | | | | | | Merge pull request #3462 from retronym/ticket/8233Adriaan Moors2014-02-051-2/+12
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | SI-8233 Fix regression in backend with boxed nulls
| * | | | | | | | | SI-8233 Fix regression in backend with boxed nullsJason Zaugg2014-02-051-2/+12
| | |_|_|_|/ / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Regressed in SI-7015 / 1b6661b8. We do need to "unbox" the null (ie, drop a stack from and load a null) in general. The only time we can avoid this is if the tree we are adapting is a `Constant(Literal(null))`. I've added a test for both backends. Only GenICode exhibited the problem.
* | | | | | | | | Merge pull request #3400 from retronym/ticket/8170Adriaan Moors2014-02-051-5/+32
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | SI-8170 Fix regression in TypeRef#transform w. PolyTypes
| * | | | | | | | | SI-8170 Posing outstanding questions as TODOsJason Zaugg2014-02-051-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We'll get to the bottom of this as soon as we get one of those Round Tuits.
| * | | | | | | | | SI-8170 Fix regression in TypeRef#transform w. PolyTypesJason Zaugg2014-01-221-5/+16
| | |_|_|_|_|/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Regressed in SI-8046 / edc9edb7, by my hand. At the time, I noticed the problem: transform wasn't accounting for the potential Poly-Type-ness of its argument, and this would lead to under-substituted types. The commit comment of edc9edb7 shows an example. But the remedy wasn't the right one. The root problem is that a TypeMap over a PolyType can return one with cloned type parameter symbols, which means we've lose the ability to substitute the type arguments into the result. This commit detects up front whether the type-under-transform is a PolyType with the current TypeRef's type parameters, and just runs the `asSeenFrom` over its result type.
* | | | | | | | | Merge pull request #3465 from pavelpavlov/list-head-valAdriaan Moors2014-02-051-32/+31
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | PR #3233 cleanup
| * | | | | | | | | PR #3233 cleanupPavel Pavlov2014-02-051-32/+31
| | |/ / / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - `::.head` became a `val`; excessive accessor removed - SerializationProxy moved to `object List`
* | | | | | | | | SI-8030 Restore thread safety to the parserJason Zaugg2014-02-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In addition to the invariant "parsing doesn’t enter new symbols", which was respected and tested in 760df9843a910d6, we also must ensure that "parsing doesn't call Symbol#info". That happend indirectly if we call `companionModule`. This commit just converts the name of `class TupleN` to a term name, rather than getting the name of its companion. No test is included. This is tested upstream in: https://jenkins.scala-ide.org:8496/jenkins/view/Memory%20Leak%20Tests/job/scalac-memory-leaks-test-2.11.0/
* | | | | | | | | Fix typo in compiler's error message: anoynmous => anonymousPavel Pavlov2014-02-051-1/+1
|/ / / / / / / /
* | | | | | | | Merge pull request #3439 from demobox/issue-8215Adriaan Moors2014-02-031-11/+28
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | SI-8215: Document IllegalStateExceptions thrown by uninitialized MatchIterator from Regex (review by @heathermiller)
| * | | | | | | | SI-8215 Documenting the possibility of IllegalStateExceptions when using ↵Andrew Phillips2014-02-011-2/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | MatchIterator See https://groups.google.com/forum/#!topic/scala-language/2T2wKVQiyVg
| * | | | | | | | SI-8215 Removing ASCII art class diagram in Scaladoc for RegexAndrew Phillips2014-02-011-9/+1
| | |_|_|/ / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Content Hierarchy contains the same information, properly formatted. See https://groups.google.com/d/msg/scala-language/2T2wKVQiyVg/3-iu19XSTxwJ
* | | | | | | | SI-4014 Scaladoc omits @authorKonstantin Fedorov2014-02-022-2/+15
| |_|_|_|_|_|/ |/| | | | | |
* | | | | | | Merge pull request #3448 from retronym/topic/opt10Grzegorz Kossakowski2014-02-021-4/+23
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Optimizations in tail calls
| * | | | | | | Optimization in TailCallsJason Zaugg2014-01-311-2/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Only store the position and reason for a failure to tailcall transform a method if we ever need to report it, ie, if the method was annotated with @tailrec. Saves object hashing and map updates, profiling suggests that this reduces the tailcalls phase from about 2% of compilation time to about 1%. Also, clear the maps eagerly after each compilation unit, rather than letting them accumulate entries for the entire run. Working with smaller maps can't hurt.
| * | | | | | | Optimize tailcall eliminationJason Zaugg2014-01-311-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | From the "if a tree falls" department: don't bother create a finely distinguished error messages about why the transform is inapplicable if the current context doesn't demand it.
| * | | | | | | Don't try to eliminate tail calls in constructors.Jason Zaugg2014-01-311-1/+6
| | |_|_|_|/ / | |/| | | | |
* | | | | | | Merge pull request #3445 from retronym/topic/opt7Grzegorz Kossakowski2014-02-029-26/+81
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Grab bag of compiler optimizations
| * | | | | | | Optimize use of methodTypeSchemaJason Zaugg2014-02-011-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Cache it, rather than recreating it for each candidate overriden method we encounter. We can't do this eagerly as we trip a cycle in neg/t5093.scala.
| * | | | | | | Optimize lookup of tree/symbol attachment search.Jason Zaugg2014-02-013-5/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use `hasAttachment` rather than `getAttachment.exists`
| * | | | | | | More overrides for SetNJason Zaugg2014-02-011-0/+46
| | | | | | | |
| * | | | | | | Implicits: Move shadowing checks after plausibility checksJason Zaugg2014-02-011-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Shadowing is rarer than implausbility; this seems to be the most efficient way to order these filters.
| * | | | | | | Optimization in InstantiateDependentMapJason Zaugg2014-02-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Avoid creating a throwaway array in existentialsNeeded.
| * | | | | | | Optimize typedDefDef: disable some checks post typerJason Zaugg2014-01-311-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | isPossibleRefinement reported as 1% of my profile, about half of that was reported from the `EraserTyper`. This commit restricts `checkMethodStructuralCompatible` to the typer phase, and also moves in the feature warning for implicits which was nearby. I've also made a minor optimization to `overriddenSymbol` by avoiding computing the method schema repeatedly.
| * | | | | | | Typers#stabilize is a noop in erasure's typer.Jason Zaugg2014-01-312-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Anything we can do to make erasure faster.
| * | | | | | | Optimize TreeInfo#isMacroApplication.Jason Zaugg2014-01-311-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's called rather frequently. Tree#symbol is a megamorphic call, which featured in profiles.