summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Golfed about 20 lines into the sand trap.Paul Phillips2013-05-261-37/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | And it's a nice golf clinic and all, but let's remove our golf gloves and take in some film. for (stat <- defBuf.iterator ++ auxConstructorBuf.iterator) A quick count: - defBuf is a ListBuffer (1 mutant) - auxConstructorBuf is a ListBuffer (2 mutants) - two mutable iterators over mutable sequences (3, 4 mutants) - Iterator.++ joins them and is BY-NAME (4 mutants, 1 tragedy in waiting) - the joined Iterator is a new mutable structure (5 mutants, now 3 deep) - omittables is a mutable Set (6 mutants) - the 5-layer-3-deep iterator mutates omittables as it walks [The following is a public service breakdown. The letter sequence y-o-u is a local variable which should be replaced with your name, whoever "you" are, if you commit any code in these parts.] Hear my plea! YOU DON'T HAVE TO DO IT THIS WAY! It isn't simpler, faster, easier, more satisfying, shorter, more pixelated, there just isn't any advantage to it, even if you're lazy! Especially if you're lazy! Whatever combination of virtues and vices exist in your personal petri dish, this will never be a hilltop! PLEASE COME ENJOY A DRINK WITH ME AND MY FRIEND 'VAL' !! I'LL INTRODUCE YOU! I THINK YOU WILL REALLY LIKE HER! I HOPE YOU WILL SEE A LOT OF ONE ANOTHER! REMEMBER THAT NAME, 'VAL' !! SHE'LL HAVE HER EYE OUT FOR YOU!
* Reversing reversion of ac6504b8c4.Paul Phillips2013-05-261-4/+4
| | | | Putting back the bits I moved aside to get a clean rebase.
* skipping trips to specializeTypes when not necessary in constructorsMiguel Garcia2013-05-261-5/+13
|
* separation of concerns: guard non-specialized ctor-stats in constructorsMiguel Garcia2013-05-261-118/+123
|
* readability for intoConstructors transformerMiguel Garcia2013-05-261-11/+37
|
* separation of concerns: elision in constructorsMiguel Garcia2013-05-261-115/+135
|
* separation of concerns: delayed-init in constructorsMiguel Garcia2013-05-261-134/+141
|
* method transformClassTemplate() turned into class TemplateTransformerMiguel Garcia2013-05-261-572/+576
|
* eliding what the constructor phase elides but with less effort (2 of 2)Miguel Garcia2013-05-261-63/+1
| | | | | Removing the old implementation of elision in constructors in favor of the new one which is both faster, more readable.
* eliding what the constructor phase elides but with less effort (1 of 2)Miguel Garcia2013-05-261-2/+67
| | | | | | For now both old and new implementations of elision coexist, allowing cross-checking their results. In the next commit only the new one will remain.
* how stuff works: elision of param-accessor-fields and outer-accessorsMiguel Garcia2013-05-261-6/+64
|
* handling AnyVal special case early on to simplify logic afterwardsMiguel Garcia2013-05-261-6/+10
| | | | | | This way the contract of `transformClassTemplate()` can focus on non-AnyVal cases, which are more regular from the perspective of transforming their templates in the constructors phase.
* warn about uninitialized reads (in constructors), self-contained checkMiguel Garcia2013-05-261-37/+47
| | | | | | | The check in question relies on helper maps and methods that don't belong outside that check. This commit encapsulates those helpers into the newly added `checkUninitializedReads()` , thus uncluttering `transformClassTemplate()`
* Temporary reversion of a bit of d8b96bb858.Paul Phillips2013-05-261-4/+4
| | | | | | | If I reverse these few lines, I can rebase miguel's pull request cleanly; if I don't, git thinks there are enough merge conflicts to start a war. Something is suboptimal in that algorithm.
* Merge pull request #2584 from som-snytt/issue/repl-tools-jarPaul Phillips2013-05-265-92/+99
|\ | | | | SI-7410 REPL uses improved tools.jar locator
| * PathResolver uses platform EOL to mkStringsSom Snytt2013-05-231-61/+56
| |
| * SI-7410 REPL uses improved tools.jar locatorSom Snytt2013-05-235-39/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The logic in partest for snooping around for tools.jar is moved to PathResolver, and ILoop uses it from there. If JAVA_HOME is toolless, check out java.home. The use case was that Ubuntu installs with `java` at version 6 and `javac` at version 7; it's easy to wind up with JAVA_HOME pointing at the version 6 JRE, as I discovered. It's confusing when that happens. In future, partest might run under 7 and fork tests under 6, but those permutations are downstream.
* | Merge pull request #2591 from som-snytt/topic/partest-inchesPaul Phillips2013-05-26367-525/+1397
|\ \ | | | | | | SI-7003 Partest redirects stderr to log file
| * | SI-7198 Par-Test uses filters filesSom Snytt2013-05-2514-12/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Partest will also read files/filters and files/kind/filters for filter expressions (one per line, trimmed, leading #comments) which are taken as regexes. A test/files/filters is provided which attempts to quell HotSpot warnings; the test for this commit requires it. The elided lines can be revealed using the lemon juice of verbosity: apm@mara:~/projects/snytt/test$ ./partest --verbose --show-diff files/run/t7198.scala [snip] >>>>> Transcripts from failed tests >>>>> > partest files/run/t7198.scala % scalac t7198.scala [snip] % filtering t7198-run.log --Over the moon --Java HotSpot(TM) 64-Bit Server VM warning: Failed to reserve shared memory (errno = 28). The filtering operation is part of the transcript, which is printed on failure. No attempt is made to be clever about not slurping the filters file a thousand times. Previous literal patterns had to be updated because there's parens in them thar strings. Future feature: pattern aliases, define once globally and invoke in test filters.
| * | SI-7003 Partest redirects stderr to log fileSom Snytt2013-05-25364-525/+1366
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some scalac output is on stderr, and it's useful to see that in the log file, especially for debugging. Adds a line filter for logs, specified as "filter: pattern" in the test source. Backslashes are made forward only when detected as paths. Test alignments: Deprecations which do not pertain to the system under test are corrected in the obvious way. When testing deprecated API, suppress warnings by deprecating the Test object. Check files are updated with useful true warnings, instead of running under -nowarn. Language feature imports as required, instead of running under -language. Language feature not required, such as casual use of postfix. Heed useful warning. Ignore broken warnings. (Rarely, -nowarn.) Inliner warnings pop up under -optimise only, so for now, just filter them out where they occur. Debug output from the test required an update.
* | | Merge pull request #2594 from adriaanm/ticket-7287Paul Phillips2013-05-261-3/+9
|\ \ \ | | | | | | | | SI-7287 include all compiler sources in -src.jar
| * | | SI-7287 include all compiler sources in -src.jarAdriaan Moors2013-05-241-3/+9
| |/ /
* | | Merge pull request #2585 from paulp/pr/concision-contributionPaul Phillips2013-05-2654-359/+368
|\ \ \ | |/ / |/| | Concision contribution.
| * | A couple additional simplifications.Paul Phillips2013-05-241-3/+3
| | | | | | | | | | | | As noted by reviewer.
| * | Concision contribution.Paul Phillips2013-05-2354-350/+353
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We have lots of core classes for which we need not go through the symbol to get the type: ObjectClass.tpe -> ObjectTpe AnyClass.tpe -> AnyTpe I updated everything to use the concise/direct version, and eliminated a bunch of noise where places were calling typeConstructor, erasedTypeRef, and other different-seeming methods only to always wind up with the same type they would have received from sym.tpe. There's only one Object type, before or after erasure, with or without type arguments. Calls to typeConstructor were especially damaging because (see previous commit) it had a tendency to cache a different type than the type one would find via other means. The two types would compare =:=, but possibly not == and definitely not eq. (I still don't understand what == is expected to do with types.)
| * | Avoid caching different types in TypeSymbol.Paul Phillips2013-05-231-8/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Try to prevent TypeSymbols from caching a different typeref for tpe_* and typeConstructor if the symbol is monomorphic. I find this undesirable: scala> AnyRefClass.tpe eq AnyRefClass.typeConstructor res0: Boolean = true scala> AnyRefClass.tpe eq AnyRefClass.typeConstructor res1: Boolean = false
* | | Merge pull request #2573 from retronym/ticket/7499Paul Phillips2013-05-242-1/+9
|\ \ \ | | | | | | | | SI-7499 Additional test case for SI-7319
| * | | SI-7499 Additional test case for SI-7319Jason Zaugg2013-05-212-1/+9
| | | | | | | | | | | | | | | | From a duplicate ticket.
* | | | Merge pull request #2574 from paulp/issue/3425Paul Phillips2013-05-249-18/+1204
|\ \ \ \ | |_|/ / |/| | | SI-3425 erasure crash with refinement members.
| * | | Added another test.Paul Phillips2013-05-213-0/+1127
| | | | | | | | | | | | | | | | Probably overshot the mark a little.
| * | | SI-3425 erasure crash with refinement members.Paul Phillips2013-05-216-18/+77
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Checking that a refinement class symbol does not override any symbols does mean it will have to be invoke reflectively; but the converse is not true. It can override other symbols and still have to be called reflectively, because the overridden symbols may also be defined in refinement classes. scala> class Foo { type R1 <: { def x: Any } ; type R2 <: R1 { def x: Int } } defined class Foo scala> typeOf[Foo].member(TypeName("R2")).info.member("x": TermName).overrideChain res1: List[$r.intp.global.Symbol] = List(method x, method x) scala> res1 filterNot (_.owner.isRefinementClass) res2: List[$r.intp.global.Symbol] = List() And checking that "owner.info decl name == this" only works if name is not overloaded. So the logic is all in "isOnlyRefinementMember" now, and let's hope that suffices for a while.
* | | Merge pull request #2581 from soc/SI-6811-jsonPaul Phillips2013-05-233-0/+7
|\ \ \ | | | | | | | | SI-6811 Deprecate scala.util.parsing.json
| * | | SI-6811 Deprecate scala.util.parsing.jsonSimon Ochsenreither2013-05-223-0/+7
| | |/ | |/|
* | | Merge pull request #2576 from retronym/ticket/7436Paul Phillips2013-05-232-1/+10
|\ \ \ | |/ / |/| | SI-7436 Varargs awareness for super param aliasing.
| * | SI-7436 Varargs awareness for super param aliasing.Jason Zaugg2013-05-212-1/+10
| | | | | | | | | | | | | | | | | | | | | Don't consider a super class parameter accessor to be an alias if it is a repeated. Parameter aliases are used to avoid retaining redundant fields in the subclass; but that optimization is out of the question here.
* | | Merge pull request #2568 from scalamacros/topic/abstractfile-classloaderEugene Burmako2013-05-224-7/+17
|\ \ \ | |_|/ |/| | Moves AbstractFileClassLoader to scala-reflect.jar
| * | Moves AbstractFileClassLoader to scala-reflect.jarEugene Burmako2013-05-204-7/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | Its string name was used in ReflectionUtils and became broken after repl got factored out. This hints that that classloader belongs to where it is used, i.e. to scala-reflect.jar. Moreover AbstractFile is defined in scala-reflect.jar, so it's only logical to also define a derived classloader in scala-reflect.jar.
* | | Merge pull request #2564 from paulp/pr/infer-cleanupPaul Phillips2013-05-206-544/+392
|\ \ \ | | | | | | | | sanitation of Infer.
| * | | Swabbing exprTypeArgs.Paul Phillips2013-05-201-55/+50
| | | | | | | | | | | | | | | | | | | | Oh exprTypeArgs, you will send us to the poorhouse with your spendy ways. So many tuples have been dying needlessly.
| * | | Help makeFullyDefined allocate fewer ListBuffers.Paul Phillips2013-05-201-8/+7
| | | |
| * | | Tried to follow own advice with isCoercible.Paul Phillips2013-05-202-38/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Only to discover that it's really hard to move isCoercible anywhere because it wants to call inferView which, despite its suggestive name, is not visible in Infer. So I did what I could and documented it a little.
| * | | Wipe some dirt off protoTypeArgs's face.Paul Phillips2013-05-201-14/+8
| | | | | | | | | | | | | | | | He's a good kid, even if not the most hygenic.
| * | | Splashed soap and water on checkAccessible.Paul Phillips2013-05-201-67/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Yes checkAccessible, you patiently waited your turn. Do you like your new clothes? Oh, still not clean enough? I understand, but we must leave time for the other methods. Now run along and check something.
| * | | Pull some big chunks out of checkAccessible.Paul Phillips2013-05-201-0/+43
| | | | | | | | | | | | | | | | To streamline the essential logic.
| * | | Remove isPossiblyMissingArgs.Paul Phillips2013-05-202-18/+4
| | | | | | | | | | | | | | | | It has been hardcoded to return false for a long while anyway.
| * | | Make cookJavaRawInfo return this.type.Paul Phillips2013-05-201-2/+4
| | | | | | | | | | | | | | | | A lot more useful than Unit.
| * | | Annotated return type of a method.Paul Phillips2013-05-201-4/+3
| | | | | | | | | | | | | | | | | | | | | | | | Because nobody should have to guess a return type like (List[Type], Array[Int], Boolean). In fact nobody should ever experience such a return type at all.
| * | | Commented out code from 2008.Paul Phillips2013-05-201-7/+0
| | | |
| * | | Commented out code from 2007.Paul Phillips2013-05-201-43/+0
| | | | | | | | | | | | | | | | It's not exactly 2006-era code but it's still a little ripe.
| * | | Commented out code from 2006.Paul Phillips2013-05-201-13/+0
| | | | | | | | | | | | | | | | | | | | | | | | Yes, 2006. Perhaps we should have a "sunset provision" which removes commented-out code after seven years. Or even slightly sooner.