summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #994 from phaller/issue/5314Grzegorz Kossakowski2012-09-2821-31/+388
|\ | | | | SI-5314 - CPS transform of return statement fails (resubmission of #987)
| * Improve doc comment on adaptTypeOfReturn in CPSAnnotationCheckerphaller2012-08-201-3/+7
| |
| * Simplify the adaptation of types of return expressionsphaller2012-08-128-11/+86
| | | | | | | | | | | | | | | | | | | | Add `adaptTypeOfReturn` hook to `AnnotationCheckers`. Move adaptation of types of return expressions from `addAnnotations` to `typedReturn` via `adaptTypeOfReturn` hook. This resolves an inconsistency where previously types could have a plus marker without additional CPS annotations. This also adds additional test cases.
| * Revert "Add missing cases in tail return transform"phaller2012-08-094-26/+8
| | | | | | | | This reverts commit 8d020fab9758ced93eb18fa51c906b95ec104aed.
| * Add missing cases in tail return transformphaller2012-08-094-8/+26
| | | | | | | | | | Disabled warnings that no longer apply because of tail returns. Add several test cases.
| * Replace CheckCPSMethodTraverser with additional parameter on transformer methodsphaller2012-08-085-68/+29
| | | | | | | | | | | | | | Other fixes: - remove CPSUtils.allCPSMethods - add clarifying comment about adding a plus marker to a return expression
| * SI-5314 - CPS transform of return statement failsphaller2012-08-0819-15/+332
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Enable return expressions in CPS code if they are in tail position. Note that tail returns are only removed in methods that do not call `shift` or `reset` (otherwise, an error is reported). Addresses the issues pointed out in a previous pull request: https://github.com/scala/scala/pull/720 - Addresses all issues mentioned here: https://github.com/scala/scala/pull/720#issuecomment-6429705 - Move transformation methods to SelectiveANFTransform.scala: https://github.com/scala/scala/pull/720#commitcomment-1477497 - Do not keep a list of tail returns. Tests: - continuations-neg/t5314-missing-result-type.scala - continuations-neg/t5314-type-error.scala - continuations-neg/t5314-npe.scala - continuations-neg/t5314-return-reset.scala - continuations-run/t5314.scala - continuations-run/t5314-2.scala - continuations-run/t5314-3.scala
* | Merge pull request #1402 from scalamacros/topic/reflectionEugene Burmako2012-09-2770-764/+531
|\ \ | | | | | | reflection and macro cleanup
| * | moves Context.ParseError outside the cakeEugene Burmako2012-09-272-12/+7
| | | | | | | | | | | | | | | I did this for ReificationError a long time ago. Must've probably forgot to do the same for ParseError.
| * | revives macros.InfrastructureEugene Burmako2012-09-278-79/+38
| | | | | | | | | | | | | | | Takes macros.Settings, throws away its mutable parts, moves classPath from Run back to the top level - and unites all that in the Infrastructure trait.
| * | moves Context.runtimeUniverse to TreeBuild.mkRuntimeUniverseRefEugene Burmako2012-09-276-12/+11
| | | | | | | | | | | | Scaladoc-driven cleanup for the win
| * | a more precise type for Context.mirrorEugene Burmako2012-09-272-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | scala.reflect.api.Mirror is the most basic contract for mirrors. Currently scala.reflect.api.Universe.Mirror is simply an abstract type type Mirror >: Null <: scala.reflect.api.Mirror[self.type], and scala.reflect.macros.Universe doesn't override that type, so from the user standpoint at the moment scala.reflect.api.Mirror == c.mirror, however, in the future this might be a source of errors.
| * | gets rid of macros.InfrastructureEugene Burmako2012-09-278-32/+12
| | | | | | | | | | | | | | | | | | currentRun goes to Enclosures and becomes enclosingRun currentClassPath gets integrated into Run
| * | simplifies Context.Run and Context.CompilationUnitEugene Burmako2012-09-277-39/+40
| | | | | | | | | | | | | | | By turning them from abstract types into full-fledged traits implemented by our internal Run and CompilationUnit.
| * | exposes Position.source as SourceFileEugene Burmako2012-09-274-17/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It was useful to pretend that SourceFile isn't a part of the API, when it's physical location was in scala-compiler.jar. Afterwards Position and SourceFile have been moved to scala-reflect.jar, and (what's more important) scala-reflect.jar gained experimental status, meaning that we're not bound by backward compatibility in 2.10.0. Therefore I'd say we should expose a full-fledged SourceFile in Position.source (just as we do for Symbol.associatedFile) and later find out how to strip down its interface to something suitable for public consumption.
| * | removes extraneous stuff from macros.InfrastructureEugene Burmako2012-09-274-69/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | libraryClassLoader can be derived from currentClassPath currentMacro can be trivially derived from macroApplication Backend-detection methods forXXX (as in forJVM or forScaladoc) might be useful, but current design of this API is not future-proof. I'm not able to come up with a better design on the spot, so let's remove this functionality for the moment.
| * | merges macros.CapturedVariables into macros.UniverseEugene Burmako2012-09-275-38/+13
| | | | | | | | | | | | | | | | | | | | | | | | Back then we didn't have a notion of a macro-specific universe, so I had to expose these methods in Context. Now we have our very own macros.Universe, so capturing methods have landed there.
| * | merges macros.Exprs and macros.TypeTags into ContextEugene Burmako2012-09-278-38/+6
| | | | | | | | | | | | | | | The former is a one-method trait, the latter is a two-method trait. In a scaladoc these guys don't look like the pull their weight.
| * | removes front ends from scala-reflect.jarEugene Burmako2012-09-2713-214/+180
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It was an interesting idea to give macro developers control over front ends, but it hasn't given any visible results. To the contrast, front ends have proven useful for toolboxes to easily control what errors get printed where. Therefore I'm moving front ends to scala-compiler.jar to clean up the API. Yay for scaladoc-driven development!
| * | PositionApi => PositionEugene Burmako2012-09-274-172/+171
| | | | | | | | | | | | Continues the series of Scaladoc-driven optimizations to scala-reflect.jar.
| * | hides BuildUtils from ScaladocEugene Burmako2012-09-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | This is an internal implementation class, only necessary for reification (exposes some really internal stuff required to recreate the trees, the stuff for which the public API is insufficient or too verbose). Therefore we don't need it in Scaladoc.
| * | MirrorOf => MirrorEugene Burmako2012-09-2724-69/+63
| | | | | | | | | | | | | | | The name looks weird in the scaladoc overview panel, so I decided to do a last-minute rename.
| * | docs.pre-lib now checks for mods in reflectEugene Burmako2012-09-271-0/+1
| | |
| * | no longer docs scala.reflect.ioEugene Burmako2012-09-272-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | The only place we use something from scala.reflect.io in the public API is Symbol.associatedFile, so I've excluded scala.reflect.io from scaladoc and added a "warning: experimental" comment to associatedFile instead. I'd argue that this greatly simplifies the surface of reflection API (typing scala.reflect in the search bar now yields 3 packages instead of 4).
| * | no longer docs internal scala.reflect packagesEugene Burmako2012-09-271-7/+7
| | |
* | | Merge pull request #1409 from jsuereth/fix/string-interpolation-docGrzegorz Kossakowski2012-09-271-3/+60
|\ \ \ | |/ / |/| | Finish docs for string interpolation.
| * | Finish docs for string interpolation.Josh Suereth2012-09-271-3/+60
|/ /
* | Merge pull request #1393 from scalamacros/topic/leaks-in-toolboxesGrzegorz Kossakowski2012-09-275-90/+166
|\ \ | | | | | | SI-6412 alleviates leaks in toolboxes, attempt #2
| * | SI-6412 alleviates leaks in toolboxes, attempt #2Eugene Burmako2012-09-275-90/+166
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Turns importer caches into fully weak hash maps, and also applies manual cleanup to toolboxes every time they are used. It's not enough, because reflection-mem-typecheck test is still leaking at a rate of ~100kb per typecheck, but it's much better than it was before. We'll fix the rest later, after 2.10.0-final. For more information, see https://issues.scala-lang.org/browse/SI-6412 and http://groups.google.com/group/scala-internals/browse_thread/thread/eabcf3d406dab8b2 In comparison with https://github.com/scala/scala/commit/b403c1d, the original commit that implemented the fix, this one doesn't crash tests. The problem with the original commit was that it called tryFixup() before updating the cache, leading to stack overflows.
* | | Merge pull request #1408 from scalamacros/topic/direct-testPaul Phillips2012-09-262-2/+2
|\ \ \ | | | | | | | | hardens DirectTest against missing -d settings
| * | | hardens DirectTest against missing -d settingsEugene Burmako2012-09-262-2/+2
| |/ / | | | | | | | | | | | | And also explicitly specifies -d in a test where I forgot to do that. Double checking never hurts.
* | | Merge pull request #1407 from dragos/issue/fix-SI-6429Paul Phillips2012-09-261-1/+1
|\ \ \ | | | | | | | | Don't call `updateInfo` during typing.
| * | | Don't call `updateInfo` during typing.Iulian Dragos2012-09-261-1/+1
| | | | | | | | | | | | | | | | We resort to `setInfo`, basically removing the previous info. This "fixes" a possible race condition in typing ModuleDefs by making the typer always 'win'. See the assertion stack trace in SI-6429.
* | | | Merge pull request #1387 from paulp/topic/210-quieter-warningsPaul Phillips2012-09-2620-63/+64
|\ \ \ \ | |_|/ / |/| | | Fixing -Xlint and acting on its advice for 2.10.
| * | | Move -Xdead-code out of the standard -Xlint.Paul Phillips2012-09-262-2/+3
| | | | | | | | | | | | | | | | It has become extremely noisy for reasons not yet known.
| * | | Privatize some collections internals.Paul Phillips2012-09-261-5/+5
| | | | | | | | | | | | | | | | These should not be public vars.
| * | | Refine an -Xlint warning.Paul Phillips2012-09-261-5/+7
| | | | | | | | | | | | | | | | It should not warn about default getters.
| * | | Explicit type application in cps plugin.Paul Phillips2012-09-261-1/+1
| | | | | | | | | | | | | | | | -Xlint revealed a strange type was being inferred here.
| * | | Don't overload implicit methods.Paul Phillips2012-09-262-3/+3
| | | | | | | | | | | | | | | | It is the cause of much unhappiness, and it is not necessary.
| * | | Don't write public methods with non-public parameters.Paul Phillips2012-09-263-7/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the parameter types of a method have lower visibility than the method itself, then the method cannot be overridden because the parameter types cannot be expressed. This is a confusing and frustrating situation to expose via public API. Such methods should either have access as strong as their parameter types, or be made final.
| * | | Don't write side-effecting nullary methods.Paul Phillips2012-09-266-26/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Style says never write methods like this: def foo: Unit If it is Unit, then it is side-effecting, and should be def foo(): Unit Since -Xlint warns about this, we must adhere to its dictate.
| * | | Avoid relying on auto-tupling.Paul Phillips2012-09-265-14/+14
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When you call Some(a, b, c) The compiler does eventually figure out that you meant Some((a, b, c)) However the compiler finds this inordinately taxing, and because this auto-tupling is dangerous, -Xlint warns about it. In the interests of being able to hear -Xlint's important points, we write Some((a, b, c)) to give it less to warn about.
* | | Merge pull request #1380 from scalamacros/ticket/6277Eugene Burmako2012-09-2627-64/+164
|\ \ \ | | | | | | | | SI-6277 fix for isXXX methods in reflection
| * | | SI-6277 fixes flags, annotations & privateWithinEugene Burmako2012-09-2616-43/+131
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `Symbol.getFlag`, 'Symbol.hasFlag`, `Symbol.hasAllFlags`, `Symbol.annotations` and `Symbol.privateWithin` now trigger automatic initialization of symbols if they are used in a runtime reflection universe and some other conditions are met (see `Symbol.needsInitialize` for details). As the performance testing in https://github.com/scala/scala/pull/1380 shows, this commit introduces a ~2% performance regression of compilation speed. Unfortunately all known solutions to the bug at hand (A, B & C - all of those) introduce perf regressions (see the pull request linked above for details). However we're under severe time pressure, so there's no more time to explore. Therefore I suggest this is reasonable to accept this performance hit, because we've just gained 6% from removing scala.reflect.base, and even before that we were well within our performance goal for 2.10.0-final.
| * | | distinguishes flag-agnostic completersEugene Burmako2012-09-2410-18/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | At times it's useful to know whether a lazy type can change the flags of the underlying symbol or not. If the completer is flag-agnostic, this means that we can safely use flag-inspection facilities such as hasFlag and isXXX tests without fear of looking into not yet initialized data.
| * | | minor cleanup for reflectionEugene Burmako2012-09-223-5/+5
| | | |
* | | | Merge pull request #1396 from axel22/issue/6410Josh Suereth2012-09-262-0/+11
|\ \ \ \ | | | | | | | | | | SI-6410 add test cases.
| * | | | SI-6410 add test cases.Aleksandar Prokopec2012-09-252-0/+11
| | | | |
* | | | | Merge pull request #1397 from jsuereth/fix/SI-6409Grzegorz Kossakowski2012-09-261-0/+3
|\ \ \ \ \ | | | | | | | | | | | | Improves SI-6409 - Add note to string flatMap about evaluation.
| * | | | | Improves SI-6409 - Add note to string flatMap about evaluation.Josh Suereth2012-09-251-0/+3
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | Note: flatMap has to evaluate the stream until it finds a head for the new stream. This is a limitation that will exist for 2.10.0, but the bug will remain open.