summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | | | [nomaster] SI-8764 fix return type of case class productElement under ↵Antoine Gourlay2014-09-097-1/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Xexperimental Under Xexperimental, productElement now returns the lub instead of the weak lub of case class parameter types (numeric widening shouldn't magically happen *inside* productElement). This was removed from 2.12.x in 6317ae2.
* | | | | | Merge pull request #3967 from retronym/topic/mathjaxGrzegorz Kossakowski2014-09-091-1/+1
|\ \ \ \ \ \ | | | | | | | | | | | | | | Fix broken URL for MathJAX Javascript dependency.
| * | | | | | Fix broken URL for MathJAX Javascript dependency.Jason Zaugg2014-09-081-1/+1
| | |/ / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Loaded using an DNS alias for the CDN, as per the [instructions](http://docs.mathjax.org/en/latest/configuration.html) I also switched from `latest` to `2.3-latest`, so that we don't automatically perform major upgrades.
* | | | | | Merge pull request #3946 from gourlaysama/wip/t5254Grzegorz Kossakowski2014-09-092-11/+46
|\ \ \ \ \ \ | | | | | | | | | | | | | | SI-5254 running an empty scala script should succeed
| * | | | | | SI-5254 running an empty scala script should succeedAntoine Gourlay2014-08-262-11/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The script runner made the assumption that "compilation succeeded" implies "there is a Main class to run", but this can be wrong if the script is empty (or only contains imports/comments). The ScriptRunner now uses the ClassPath utility to check if there really is a main class. If not, it doesn't try to run it and returns peacefully. This also makes `scala -e ''` succeed.
* | | | | | | Merge pull request #3801 from Ichoran/issue/8474Grzegorz Kossakowski2014-09-092-16/+47
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | SI-8474 Inconsistent behavior of patch method
| * | | | | | | SI-8474 Inconsistent behavior of patch methodRex Kerr2014-08-242-16/+47
| | |_|_|_|_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Changed Iterator to be consistent with other collections. Also fixed SeqViewLike to validate/constrain inputs. No specific tests; quasi-comprehensive collection tests will cover this later.
* | | | | | | Merge pull request #3939 from lrytz/ystatsLukas Rytz2014-09-0815-209/+416
|\ \ \ \ \ \ \ | |_|_|/ / / / |/| | | | | | -Ystatistics accepts a list of phases for which to print stats
| * | | | | | Make MultiChoiceSetting.compute easier to understandLukas Rytz2014-09-081-18/+11
| | | | | | |
| * | | | | | Address PR feedback, fix MultiChoiceSetting.containsLukas Rytz2014-09-083-22/+20
| | | | | | |
| * | | | | | Use Enumeration for MultiChoiceSettingSom Snytt2014-09-058-168/+288
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is pretty easy, since a ValueSet is a BitSet. When the setting is updated, recompute the current set of values, which is cheap and succinct. Checking a flag is also easy and fast. Choices in MultiChoiceSettings may enable other choices.
| * | | | | | -Ystatistics accepts a list of phases, cleanups in MultiChoiceSettingLukas Rytz2014-09-0210-164/+254
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | MultiChoiceSetting and Xlint with its deprecated aliases is now a bit simpler, but there's still room for improvement, as noted in comments.
| * | | | | | Fix assertThrows, and the behaviors that it shadowedLukas Rytz2014-09-024-6/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The test in StdNamesTest was introduced in cff8b569, where newTermName would throw on a negative length. In b090f97 this was changed to fix the negative length, but the test was not adapted (as it didn't fail).
* | | | | | | Merge pull request #3935 from lrytz/t8803Jason Zaugg2014-09-054-5/+90
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | SI-8803 generate super accessor for super[A], if A is outer superclass
| * | | | | | | SI-8803 generate super accessor for super[A], if A is outer superclassLukas Rytz2014-08-204-5/+90
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | class C extends A with T { class I { C.super[T] C.super[A] } } A super call in a nested class of the form super[T] where T is a parent trait of the outer class doesn't need an accessor: mixin can directly re-route the call to the correct implementation class - it's statically known to be T$class. However, if a nested class accesses super[A] and A is the superclass of the outer class (not a trait), then we need a super accessor in the outer class. We need to add the mixin name to the super accessor name, otherwise it clashes with non-qualified super accessors.
* | | | | | | | Merge pull request #3961 from lrytz/t8786-disable-testJason Zaugg2014-09-041-1/+3
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | SI-8786 disable part of thest that's failing the jdk8 build
| * | | | | | | | SI-8786 disable part of test that's failing the jdk8 buildLukas Rytz2014-09-041-1/+3
| | | | | | | | |
* | | | | | | | | Merge pull request #3932 from gourlaysama/wip/t8498Jason Zaugg2014-09-043-5/+9
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | SI-8498 @compileTimeOnly should be aware of bridge methods.
| * | | | | | | | | SI-8498 @compileTimeOnly should be aware of bridge methods.Antoine Gourlay2014-08-213-5/+9
| | |/ / / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Calling a @compileTimeOnly method from another @compileTimeOnly method happens when the former gets a bridge method. It should not throw an error. Calling the bridge or the method will anyway.
* | | | | | | | | Merge pull request #3951 from pawel-wiejacha/2.11.x_SI-8810_fixGrzegorz Kossakowski2014-09-033-45/+18
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | scaladoc: fixed code block indentation normalization
| * | | | | | | | | SI-8810 scaladoc: fixed code block indentation normalizationPaweł Wiejacha2014-09-033-45/+18
| | | | | | | | | |
* | | | | | | | | | Merge pull request #3960 from gourlaysama/wip/t8113Vlad Ureche2014-09-033-2/+43
|\ \ \ \ \ \ \ \ \ \ | |_|_|/ / / / / / / |/| | | | | | | | | SI-8113 scaladoc: allow a newline between a link target and title
| * | | | | | | | | SI-8113 allow a newline between a link target and titleAntoine Gourlay2014-09-033-2/+43
|/ / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Parsing "[[http://foo.bar link title]]" stops at the first whitespace. This breaks pretty badly in: [[http://foo.bar link title]] It stops after "link", interprets what it parsed as a link to a member, obviously fails, and then just ouputs "title". It should at least return a proper error, or, even better, just allow a newline between the target and title. I went for the latter.
* | | | | | | | | Merge pull request #3955 from som-snytt/issue/8410Grzegorz Kossakowski2014-09-033-2/+18
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | SI-8410 Don't warn fatally on disabled flag
| * | | | | | | | | SI-8410 Summarize if warnings and not disabledSom Snytt2014-09-011-5/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Simplify the conditional and emit the summary if there were buffered warnings and the user didn't explicitly disable this setting. The working assumption is that using fatal-warnings to turn on summaries was either an outdated heuristic or just due to a faulty merge. Or wait, was it for -feature, which is not enabled when warnings are issued against it?
| * | | | | | | | | SI-8410 Don't warn fatally on disabled flagSom Snytt2014-09-013-3/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since boolean settings can now be set false by user, summary warnings should not be issued when the flag is explicitly off (as opposed to unset, default). In particular, `-Xfatal-warnings` should not fail if there were no warnings otherwise. ``` $ ~/scala-2.11.2/bin/scalac -d /tmp -deprecation:false test/files/pos/t8410.scala $ ~/scala-2.11.2/bin/scalac -d /tmp -deprecation:false -Xfatal-warnings test/files/pos/t8410.scala warning: there were three deprecation warnings; re-run with -deprecation for details error: No warnings can be incurred under -Xfatal-warnings. one warning found one error found ``` After this commit: ``` $ skalac -d /tmp -Xfatal-warnings test/files/pos/t8410.scala warning: there were three deprecation warnings; re-run with -deprecation for details error: No warnings can be incurred under -Xfatal-warnings. one warning found one error found $ skalac -d /tmp -deprecation:false -Xfatal-warnings test/files/pos/t8410.scala ``` Similarly for other collecting flags: ``` $ skalac -d /tmp -optimise -Yinline-warnings -deprecation:false -Xfatal-warnings test/files/pos/t8410.scala test/files/pos/t8410.scala:14: warning: Could not inline required method dropWhile because access level required by callee not matched by caller. def k = List(0).dropWhile(_ < 1) // inlining warns doubly ^ test/files/pos/t8410.scala:14: warning: At the end of the day, could not inline @inline-marked method dropWhile def k = List(0).dropWhile(_ < 1) // inlining warns doubly ^ error: No warnings can be incurred under -Xfatal-warnings. two warnings found one error found $ skalac -d /tmp -optimise -Yinline-warnings:false -deprecation:false -Xfatal-warnings test/files/pos/t8410.scala ``` Footnote: handling of deprecated locals also changed in 2014: ``` $ ~/scala-2.11.0-M7/bin/scalac -d /tmp -deprecation -Xfatal-warnings test/files/pos/t8410.scala test/files/pos/t8410.scala:8: warning: method f in object Test is deprecated: Console println f // warns ^ error: No warnings can be incurred under -Xfatal-warnings. one warning found one error found $ ~/scala-2.11.0-M8/bin/scalac -d /tmp -deprecation -Xfatal-warnings test/files/pos/t8410.scala test/files/pos/t8410.scala:5: warning: method _f is deprecated: def g = { @deprecated("","") def _f = f ; _f } // warns in 2.11.0-M8 ^ test/files/pos/t8410.scala:6: warning: class X is deprecated: def x = { @deprecated("","") class X { def x = f } ; new X().x } // warns in 2.11.0-M8 ^ test/files/pos/t8410.scala:8: warning: method f in object Test is deprecated: Console println f // warns ^ error: No warnings can be incurred under -Xfatal-warnings. three warnings found one error found ```
* | | | | | | | | | Merge pull request #3958 from lrytz/merge/2.10-to-2.11-sept-2Jason Zaugg2014-09-033-1/+25
|\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | Merge 2.10 to 2.11
| * \ \ \ \ \ \ \ \ \ Merge branch '2.10.x' into merge/2.10-to-2.11-sept-2Lukas Rytz2014-09-020-0/+0
| |\ \ \ \ \ \ \ \ \ \ | | | |_|_|_|_|_|_|/ / | | |/| | | | | | | |
| | * | | | | | | | | Merge pull request #3937 from som-snytt/issue/8787-doc-backportGrzegorz Kossakowski2014-09-021-186/+291
| | |\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | [backport] SI-8787 Backport Regex doc
| | | * | | | | | | | | [backport] SI-8787 Backport Regex docSom Snytt2014-08-261-186/+291
| | |/ / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Backport the doc with two material changes: 1. need to use Groups to extract from Match, so say that in lieu of the 2.11 advice that the Regex instance can be used without recomputing the match; 2. and relatedly, in 2.10 there is no secondary constructor, so the doc for group names is moved back up to the class doc. Original doc update on PR #3923 was: 0e26910372d349c6ff7bbaa17fc8fe0bf568c5fe f98c53cb03f800b3d790f3866ab90f827fd131f5
| | * | | | | | | | | Merge pull request #3865 from xeno-by/topic/extractor-macros-210xGrzegorz Kossakowski2014-08-195-42/+114
| | |\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | [backport] transformers no longer ignore UnApply.fun
| | | * | | | | | | | | [backport] transformers no longer ignore UnApply.funEugene Burmako2014-07-035-42/+114
| | | | |_|_|_|_|_|_|/ | | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Backports 7122560063 and 4133eb8454 from the 2.11.x branch
| | * | | | | | | | | Merge pull request #3860 from gourlaysama/wip/t7710-backportGrzegorz Kossakowski2014-08-193-3/+39
| | |\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | [backport] SI-7710 fix memory performance of RegexParsers in jdk7u6+
| | | * | | | | | | | | [backport] SI-7710 fix memory performance of RegexParsers in jdk7u6+Antoine Gourlay2014-08-123-3/+39
| | | |/ / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Backport of scala/scala-parser-combinators@91584dc. --- Starting with 1.7.0_06 [1], String.substring no longer reuses the internal char array of the String but make a copy instead. Since we call subSequence twice for *every* input character, this results in horrible parse performance and GC. With the benchmark from the (duplicate) ticket SI-8542, I get: BEFORE: parseAll(new StringReader(String)) For 100 items: 49 ms For 500 items: 97 ms For 1000 items: 155 ms For 5000 items: 113 ms For 10000 items: 188 ms For 50000 items: 1437 ms === parseAll(String) For 100 items: 4 ms For 500 items: 67 ms For 1000 items: 372 ms For 5000 items: 5693 ms For 10000 items: 23126 ms For 50000 items: 657665 ms AFTER: parseAll(new StringReader(String)) For 100 items: 43 ms For 500 items: 118 ms For 1000 items: 217 ms For 5000 items: 192 ms For 10000 items: 196 ms For 50000 items: 1424 ms === parseAll(String) For 100 items: 2 ms For 500 items: 8 ms For 1000 items: 16 ms For 5000 items: 79 ms For 10000 items: 161 ms For 50000 items: 636 ms [1] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6924259
| * | / / / / / / / / Merge commit 'b5759ef' into merge/2.10-to-2.11-sept-2Lukas Rytz2014-09-023-1/+25
|/| | | | | | | | | | | |/ / / / / / / / /
| * | | | | | | | | Merge pull request #3904 from kzys/jira-8314-2.10.xGrzegorz Kossakowski2014-08-072-0/+19
| |\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | Prevent SI-8314 by adding a test
| | * | | | | | | | | Prevent SI-8314 by adding a testKato Kazuyoshi2014-07-312-0/+19
| |/ / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The original issue was fixed already. This test is just for make sure.
| * | | | | | | | | Merge pull request #3752 from jeroentervoorde/SI_8589Adriaan Moors2014-07-041-1/+6
| |\ \ \ \ \ \ \ \ \ | | |/ / / / / / / / | |/| | | | | | | | SI-8589 Performance improvement for ArrayCharSequence.toString
| | * | | | | | | | SI-8589 Performance improvement for ArrayCharSequence.toStringJeroen ter Voorde2014-06-191-1/+6
| |/ / / / / / / /
* | | | | | | | | Merge pull request #3952 from gourlaysama/wip/t8828-lint-innacessibleGrzegorz Kossakowski2014-09-023-1/+22
|\ \ \ \ \ \ \ \ \ | |_|_|_|_|/ / / / |/| | | | | | | | SI-8828 fix regression in Xlint visibility warning for sealed classes
| * | | | | | | | SI-8828 fix regression in Xlint visibility warning for sealed classesAntoine Gourlay2014-08-283-1/+22
| | |/ / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 5dfcf5e reverted a change to `Symbol#isEffectivelyFinal` (made in adeffda) that broke overriding checks, and moved the new enhanced version to a new method. However, the test for inaccessible type access still uses the old one, so it lost the ability to see that the owner of some method is either final or sealed and not overridden. This just makes it use the new `isEffectivelyFinalOrNotOverriden`.
* | | | | | | | Merge pull request #3956 from gourlaysama/wip/interp-warnGrzegorz Kossakowski2014-09-023-4/+4
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | fix a few string interpolation typos
| * | | | | | | | SI-7931 fix Dscala.repl.vids and some string interpolation typosAntoine Gourlay2014-09-023-4/+4
| |/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | That nice little `-Dscala.repl.vids` feature regressed in f56f9a3c when a string.format was replaced by string interpolation. The ones in scala-reflect were caught by Xlint (who knew building with Xlint was actually useful...), the other was just luck.
* | | | | | | | Merge pull request #3948 from retronym/ticket/8823Grzegorz Kossakowski2014-09-022-1/+11
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | SI-8823 Exclude specialized methods from extension method rewrite
| * | | | | | | | SI-8823 Exclude specialized methods from extension method rewriteJason Zaugg2014-08-272-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If a value class extends a specialized class, it can sprout specialized members after the specialization info transformer has run. However, we only install extension methods for class members we know about at the extmethods phase. This commit simply disables rewiring calls to these methods in erasure to an extention method. This follows the approach taken from super accessors. Note: value class type parameters themselves currently are not allowed to be specialized.
* | | | | | | | | Merge pull request #3931 from lrytz/opt/tracked-finalLukas Rytz2014-09-0129-1787/+2418
|\ \ \ \ \ \ \ \ \ | |_|/ / / / / / / |/| | | | | | | | GenBCode refactoring (remove Tracked) and fix InnerClass / EnclosingMethod attributes
| * | | | | | | | Small cleanup in toTypeKind.Lukas Rytz2014-09-011-11/+2
| | | | | | | | |
| * | | | | | | | Fix InnerClass / EnclosingMethod attributesLukas Rytz2014-09-0123-255/+1090
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit seems bigger than it is. Most of it is tests, and moving some code around. The actual changes are small, but a bit subtle. The InnerClass and EnclosingMethod attributes should now be close to the JVM spec (which is summarized in BTypes.scala). New tests make sure that changes to these attributes, and changes to the way Java reflection sees Scala classfiles, don't go unnoticed. A new file, BCodeAsmCommon, holds code that's shared between the two backend (it could hold more, future work). In general, the difficulty with emitting InnerClass / EnclosingMethod is that we need to find out source-level properties. We need to make sure to do enough phase-travelling, and work around destructive changes to the ownerchain in lambdalift (we use originalOwner a lot). The change to JavaMirrors is prompted by the change to the EnclosingMethod attribute, which changes Java reflection's answer to getEnclosingMethod and getEnclosingConstructor. Classes defined in field initializers no longer have an enclosing method, just an enclosing class, which broke an assumption in JavaMirrors. There's one change in erasure. Before this change, when an object declaration implements / overrides a method, and a bridge is required, then the bridge method was actually a ModuleSymbol (it would get the lateMETHOD flag and be emitted as a method anyway). This is confusing, when iterating through the members of a class, you can find two modules with the same name, and one of them doesn't have a module class. Now, such bridge methods will be MethodSymbols. Removed Symbol.originalEnclosingMethod, that is a backend thing and doesn't need to live in the symbol API.
| * | | | | | | | Don't traverse all trees in delambdafy phase if delambdafy:inlineLukas Rytz2014-09-011-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If delambdafy:method is not enabled, the delambdafy method is a nop.
| * | | | | | | | Fix indentation in delambdafyLukas Rytz2014-08-191-25/+25
| | | | | | | | |