summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Minor style cleanups, no changes in logicLukas Rytz2016-10-274-35/+11
|
* Robustly identify unpickling the current module classLukas Rytz2016-10-271-11/+11
| | | | | | | | | | | | | | | | | | When unpickling a class, if the name and owner matches the current `classRoot` of the unpickling Scan, that `classRoot` symbol is used instead of creating a new symbol. If, in addition, the class being unpickled has the MODULE flag, the unpickler should use the `moduleRoot.moduleClass` symbol (instead of creating a new one). To identify the module class, the current implementation compares the name and owner to the `classRoot`. This fails in case the `classRoot` is `NoSymbol`, which can happen in corner cases (when a type alias shadows a class symbol, scala-dev#248). In this patch we identify the module class by comparing the name and owner to the `moduleRoot` symbol directly (using a `toTypeName`).
* Classfile parser and unpickler require class and module symbol argumentsLukas Rytz2016-10-273-32/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | In SymbolLoaders, when seeing a classfile `Foo.class`, we always (unconditionally) create 3 symbols: a class, a module and a module class. Some symbols get invalidated later (`.exists`). Until now, the classfile parser (and unpickler) received the "root" symbol as argument, which is the symbol whose type is being completed. This is either the class symbol or the module symbol. The classfile parser would then try to lookup the other symbol through `root.companionClass` or `root.companionModule`. Howver, this lookup can fail. One example is scala-dev#248: when a type alias (in a package object) shadows a class symbol, `companionClass` will fail. The implementations of the classfile parser / unpickler assume that both the `clazz` and the `staticModule` symbols are available. This change makes sure that they are always passed in explicitly. Before this patch, in the example of scala-dev#248, the `classRoot` of the unpickler was NoSymbol. This caused a bug when unpickling the module class symbol, causing a second module class symbol to be created mistakingly. The next commit cleans up this logic, more details there. This second symbol would then cause the crash in the backend because it doesn't have an `associatedFile`, therefore `isCoDefinedWith` would spuriously return `true`.
* Clean up cross-check in classfile parser, remove unnecessary assignmentLukas Rytz2016-10-271-6/+3
| | | | | | | | | | | | | | One of the first entries in the classfile is the class name. The classfile parser performs a cross-check by looking up the class sybmol corresponding to that name and ensures it's the same as `clazz`, the class symbol that the parser currently populates. Since 322c980 ("Another massive IDE checkin"), if at the time of the check `clazz` but the lookup returns some class, the `clazz` field is assigned. The commit following this one makes sure `clazz` is never NoSymbol, so the assignment can safely be removed.
* Clean up lookup class by name in the classfile parserLukas Rytz2016-10-271-46/+26
| | | | | | | | | | | | | | | | | | | There was a piece of logic essentially duplicating getClassByName in Mirrors (split up a fully qualified class name by ".", look up pieces). That piece of code was added in 0ce0ad5 to fix one example in SI-2464. However, since 020053c (2012, 2.10) that code was broken: the line ss = name.subName(0, start) should be ss = name.subName(start, name.length).toTypeName As a result, the code would always create a stub symbol. Returning a stub seems to be the right thing to do anyway, and the fact that we were doing so during two major releases is a good proof.
* Don't follow type aliases in getClassByName and friendsLukas Rytz2016-10-261-1/+0
| | | | | | | | | | | | | | | | | | This makes getClassByName fail / getClassIfDefined return NoSymbol when querying an alias. The current behavior can confuse the classfile parser: when parsing a class, a cross-check verifies that `pool.getClassSymbol(nameIdx)` returns the symbol of the class currently being parsed. If there's a type alias that shadows the linked class, following the alias would return an unrelated class. (The cross-check didn't fail because there are some other guards around it) The logic to follow aliases was was added in ff98878, without a clear explanation. Note that `requiredClass[C]` works if `C` is an alias, it is expanded by the compiler.
* Ensure companionClass returns a class, not a type aliasLukas Rytz2016-10-264-3/+11
| | | | | | | | | | | | This fixes scala/scala-dev#248, where a type alias reached the backend through this method. This is very similar to the fix for SI-5031, which changed it only in ModuleSymbol, but not in Symbol. The override in ModuleSymbol is actually unnecessary (it's identical), so it's removed in this commit. It was added for unclear reasons in 296b706.
* Merge pull request #5383 from SethTisue/post-rc1-cleanupsSeth Tisue2016-10-2420-275/+242
|\ | | | | assorted cleanups
| * assorted typo fixes, cleanup, updating of commentsSeth Tisue2016-10-2418-66/+54
| | | | | | | | | | | | just in time for Halloween. "boostrap" is definitely the most adorable typo evah -- and one of the most common, too. but we don't want to scare anybody.
| * re-enable (or simplify) various tests now that STARR is bumpedSeth Tisue2016-10-241-206/+185
| |
| * SI-9516 remove now-unneeded codeSeth Tisue2016-10-241-3/+3
|/ | | | now that STARR includes the relevant fix
* Merge pull request #5466 from dragos/issue/remove-println-SI-8717Lukas Rytz2016-10-213-6/+4
|\ | | | | Replace println with log calls in BrowsingLoaders
| * Replace println with log calls in BrowsingLoadersIulian Dragos2016-10-193-6/+4
| | | | | | | | | | | | | | This alternative symbol loader is used in the presentation compiler and may generate output even when the compiler should be silent. See SI-8717 for more context, even though this does not really fix the ticket.
* | Merge pull request #5451 from lifuhuang/patch-1Lukas Rytz2016-10-211-3/+3
|\ \ | | | | | | Replace deprecated conforms
| * | Replace deprecated conformsLifu Huang2016-10-091-3/+3
| | | | | | | | | Replace deprecated conforms with identity.
* | | Merge pull request #5393 from som-snytt/issue/nowarn-thistype-discardLukas Rytz2016-10-215-21/+17
|\ \ \ | | | | | | | | No warn when discarding r.f(): r.type
| * | | No warn when discarding r.f(): r.typeSom Snytt2016-09-105-21/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The paradigm is `def add(x: X): Unit = listBuffer += x`. The value that is discarded is not new information. Also cleans up the recent tweaks to help messaging. Adds newlines in case they ask for multiple helps.
* | | | Merge pull request #5371 from chrisokasaki/issue/9906Seth Tisue2016-10-201-0/+19
|\ \ \ \ | | | | | | | | | | SI-9906: override ListBuffer.last/lastOption to run in O(1) time
| * | | | SI-9906: override ListBuffer.last/lastOption to run in O(1) timechrisokasaki2016-08-301-0/+19
| | | | | | | | | | | | | | | | | | | | Also update scaladocs for those two methods.
* | | | | Merge pull request #5400 from sjrd/rewrite-traversablelike-stringprefixSeth Tisue2016-10-202-17/+100
|\ \ \ \ \ | | | | | | | | | | | | Rewrite TraversableLike.stringPrefix not to blow up code size in Scala.js.
| * | | | | Rewrite TraversableLike.stringPrefix not to blow up code size in Scala.js.Sébastien Doeraene2016-09-152-17/+100
| | |/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The commit 30876fe2dd8cbe657a6cad6b11bbc34f10c29b36 changed `TraversableLike.stringPrefix` to report nicer results for inner classes and method-local classes. The changes included calls to `String.split()`, `Character.isDigit()` and `Character.isUpperCase()`. This was particularly bad for Scala.js, because those methods bring with them huge parts of the JDK (the `java.util.regex.*` implementation on the one hand, and the Unicode database on the other hand), which increased generated code size by 6 KB after minimification and gzip for an application that does not otherwise use those methods. This sudden increase is tracked in the Scala.js bug tracker at https://github.com/scala-js/scala-js/issues/2591. This commit rewrites `TraversableLike.stringPrefix` in a very imperative way, without resorting to those methods. The behavior is (mostly) preserved. There can be different results when `getClass().getName()` contains non-ASCII lowercase letters and/or digits. Those will now be recognized as user-defined instead of likely compiler-synthesized (which is a progression). There still are false positives for ASCII lowercase letters, which cause the `stringPrefix` to be empty (as before). Since the new implementation is imperative anyway, at least I made it not allocate anything but the result `String` in the common case where the result does not contain any `.`.
* | | | | Merge pull request #5406 from dsbos/dsbos-SI-9924Seth Tisue2016-10-201-1/+1
|\ \ \ \ \ | | | | | | | | | | | | SI-9924: Fix: Spec. refers to U+007F (DELETE) as printable character
| * | | | | SI-9924: Fix: Spec. refers to U+007F (DELETE) as printable characterDaniel Barclay2016-09-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed "\u0020 - \u007F" to "\u0020 - \u007E". (Also fixed/clarified punctuation and grammar.)
* | | | | | Merge pull request #5439 from som-snytt/issue/fields-fieldwidthSeth Tisue2016-10-206-12/+12
|\ \ \ \ \ \ | | | | | | | | | | | | | | Shorten fields phase description
| * | | | | | Don't clip descrip when -YdebugSom Snytt2016-09-301-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -Ydebug is supposed to show everything about the phases, including full description (if otherwise clipped) and any phases that are not "enabled" by options.
| * | | | | | Shorten fields phase descriptionSom Snytt2016-09-306-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Makes fields fit the field width, which is fitting. `s/including/add` seems sufficient. Possibly, "synthesize" is an extravagance for "add", but "add" is used previously in that column. Resolve, load, translate, add, synthesize, replace, erase, move, eliminate, remove, generate. Would love to learn a word that says what typer does, if the word "type" is too redundant or overloaded, besides the food metaphor. Also "meat-and-potatoes" implies basic, simple, not fussy or fancy. There are many devices, like the heart or a Ferrari engine, that are fundamental without being unfussy.
* | | | | | | Merge pull request #5441 from dsbos/dsbos-SpecFixQuotesSeth Tisue2016-10-205-111/+111
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | SI-9959: Change `...' to ‘...’ (Unicode quotes) in ENBF (per intent per README.md).
| * | | | | | | Fixed some ‘...‘ (two open quotes) to ‘...’ (open vs. close quotes) ↵Daniel Barclay2016-10-031-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | in ENBF.
| * | | | | | | Change `...' to ‘...’ (Unicode quotes) in ENBF (per intent per README.md).Daniel Barclay2016-10-035-109/+109
| |/ / / / / / | | | | | | | | | | | | | | | | | | | | | Also added a missing closing quote in SimplePattern production involving StableId.
* | | | | | | Merge pull request #5450 from adriaanm/dev240Seth Tisue2016-10-201-2/+10
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Repl prints '\n' as newline, not "^J"
| * | | | | | | Repl prints '\n' as newline, not "^J"Adriaan Moors2016-10-081-2/+10
| | |_|_|_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | Work around a weird bug in JLine. Fix https://github.com/scala/scala-dev/issues/240
* | | | | | | Merge pull request #5463 from adriaanm/merge-2.11-to-2.12Seth Tisue2016-10-207-24/+109
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Merge 2.11 to 2.12
| * \ \ \ \ \ \ Merge 2.11.x into 2.12.xAdriaan Moors2016-10-201-18/+22
| |\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | Include PRs #5464, #5467
| | * \ \ \ \ \ \ Merge pull request #5464 from retronym/backport/5386Seth Tisue2016-10-193-2/+7
| | |\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | [backport] Bump sbt.version to 0.13.12, without breaking
| | | * | | | | | | [backport] Bump sbt.version to 0.13.12, without breakingDale Wijnand2016-10-193-2/+7
| | | | | | | | | |
| | * | | | | | | | Merge pull request #5467 from som-snytt/issue/9832-2.11-cleanupSeth Tisue2016-10-191-18/+22
| | |\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | SI-9832 Fix line endings in junit test
| | | * | | | | | | | SI-9832 Fix line endings in junit testSom Snytt2016-10-191-18/+22
| | | | | | | | | | |
| * | | | | | | | | | Merge 2.11.x into 2.12.x, skipping backportsAdriaan Moors2016-10-180-0/+0
| |\| | | | | | | | |
| | * | | | | | | | | Merge pull request #5343 from milessabin/topic/si-2712-backportAdriaan Moors2016-10-1835-6/+509
| | |\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | SI-2712 Add support for higher order unification
| | | * | | | | | | | | SI-2712 Add support for higher order unificationMiles Sabin2016-08-1535-6/+509
| | | | | | | | | | | |
| * | | | | | | | | | | Merge 2.11.x into 2.12.xAdriaan Moors2016-10-182-5/+76
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix conflict in #5453: ``` - def help: String = { + override def help: String = { ```
| | * | | | | | | | | | Merge pull request #5453 from som-snytt/issue/9832-2.11Adriaan Moors2016-10-182-5/+76
| | |\ \ \ \ \ \ \ \ \ \ | | | | |/ / / / / / / / | | | |/| | | | | | | | SI-9832 -Xlint:help shows default
| | | * | | | | | | | | SI-9832 -Xlint:help shows defaultSom Snytt2016-10-112-5/+76
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conclude help method with the default list. Extra words are supplied for underscore.
| * | | | | | | | | | | Merge 2.11.x into 2.12.x, skipping backportsAdriaan Moors2016-10-180-0/+0
| |\| | | | | | | | | |
| | * | | | | | | | | | Merge pull request #5345 from milessabin/topic/si-7046-backportAdriaan Moors2016-10-1821-13/+252
| | |\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | [nomerge] Partial fix for SI-7046
| | | * | | | | | | | | | Partial fix for SI-7046Miles Sabin2016-08-1521-13/+252
| | | | |/ / / / / / / / | | | |/| | | | | | | |
| | * | | | | | | | | | Merge pull request #5341 from milessabin/topci/si-9760-backportAdriaan Moors2016-10-182-1/+18
| | |\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | SI-9760 Fix for higher-kinded GADT refinement
| | | * | | | | | | | | | SI-9760 Fix for higher-kinded GADT refinementMiles Sabin2016-08-152-1/+18
| | | |/ / / / / / / / /
| * | | | | | | | | | | Merge 2.11.x into 2.12.x, including #5239, #5240Adriaan Moors2016-10-182-2/+6
| |\| | | | | | | | | |
| | * | | | | | | | | | Merge pull request #5240 from som-snytt/issue/9336-paste-tabAdriaan Moors2016-10-181-2/+5
| | |\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | SI-9336 Enable paste detect in jline