summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Fixed handling of empty keys in emitSWITCH.Grzegorz Kossakowski2012-02-011-0/+10
| | | | | | | | | | | | | | | | The problem of emitSWITCH not handling empty keys popped up when I tried to implement unfolding of pattern alternatives in genicode instead of in typers/explicitouter. This change makes perfect sense in isolation as bytecode allows LOOKUPSWITCHes that have only default case. I actually verified that this kind of bytecode is generated by javac when one has switch statement with only default case defined. Review by @paulp or @dragos.
* Improved warning for insensible comparisons.Paul Phillips2012-01-311-4/+7
| | | | | Utilize knowledge of case class synthetic equals to rule out some comparisons statically. Closes SI-5426.
* Print compound types legibly.Paul Phillips2012-01-302-19/+35
| | | | | | | | | This one's about a million years overdue. Try this on for size, from the command line: printf ":power\nList(1).?.baseClasses.sigs >\n" | scala Also, a little more power mode refinement.
* Merge branch 'develop'Paul Phillips2012-01-304-137/+172
|\
| *-. Merge remote-tracking branches 'axel22/issue/4147', 'axel22/issue/5374' and ↵Paul Phillips2012-01-302-2/+2
| |\ \ | | | | | | | | | | | | 'hubertp/ticket/4336' into develop
| | | * Closes #4336.Hubert Plociniczak2012-01-301-1/+1
| | | | | | | | | | | | | | | | Some of the type params might already be instantiated if explicit type application is done. Review by @adriaanm
| | * | Merge branch 'master' into issue/5374aleksandar2012-01-30133-6023/+3884
| | |\|
| | * | Changed the serialVersionUID in List serialization start marker.aleksandar2012-01-301-1/+1
| | | |
| * | | Merge pull request #1 from lpereir4/avlAleksandar Prokopec2012-01-302-135/+170
| |\ \ \ | | |_|/ | |/| | AvlTree performance improvements
| | * | Use of polymorphic dispatch instead of pattern matching.Lucien Pereira2012-01-282-127/+168
| | | | | | | | | | | | | | | | Use a specialized iterator.
| | * | Getting rid of closure creation occuring for each rebalancing. Tail ↵Lucien Pereira2012-01-151-34/+28
| | | | | | | | | | | | | | | | recursion is not necessary here.
| | * | syntactic error correctionLucien Pereira2012-01-141-1/+1
| | | |
* | | | A couple power mod conveniences.Paul Phillips2012-01-302-56/+91
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | And disambiguations. And renamed all kinds of methods to something less inscrutable. Moved all the instance-to-compiler-structure implicit behind a wrapper to avoid accidental conversions. The wrapper has a single method, ?, which you can experience like so: // Sorry tab completion doesn't yet figure out implicit conversions scala> val x = Map(1 -> 2).? x: $r.power.InternalInfo[scala.collection.immutable.Map[Int,Int]] = Map(1 -> 2) (Map) scala> x. asInstanceOf baseTypeSeq baseTypeSeqMap baseTypeWhichDefines companion decls declsOriginal declsOverride erasure fullManifest glb info isInstanceOf lub memberMethods memberTypes members membersDeclared membersInherited membersUnabridged moduleClass name owner owners pkg pkgClass pkgClassSymbols pkgClasses pkgMembers pkgName pkgSymbols shortClass signature symbol toString tpe // This uses an implicit to install sigs (and another for '>' which is // the generic printing function) but transparency, one step at a time. scala> Map(1 -> 2).?.membersDeclared.sigs > def $init$(): Unit override def empty: scala.collection.immutable.Map[A,B] override def toMap[T,U](implicit ev: <:<[(A, B),(T, U)]): scala.collection.immutable.Map[T,U] override def seq: scala.collection.immutable.Map[A,B] def withDefault[B1 >: B](d: A => B1): scala.collection.immutable.Map[A,B1] def withDefaultValue[B1 >: B](d: B1): scala.collection.immutable.Map[A,B1] override def updated[B1 >: B](key: A,value: B1): scala.collection.immutable.Map[A,B1] def +[B1 >: B](kv: (A, B1)): scala.collection.immutable.Map[A,B1]
| | |
| \ \
*-. \ \ Merge remote-tracking branches 'scalamacros/topic/yshowsymkinds' and ↵Paul Phillips2012-01-297-39/+78
|\ \ \ \ | | | | | | | | | | | | | | | 'scalamacros/ticket/5418' into develop
| * | | | -Yshow-symkinds: prints kinds next to symbol namesEugene Burmako2012-01-287-39/+78
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This very situational option proved to be very useful when debugging https://issues.scala-lang.org/browse/SI-5415 With the help of -Yshow-symkinds, it became possible to distinguish a free var from a module symbol, which gave precise indication of the root of the bug.
* | | | More method synthesis unification.Paul Phillips2012-01-286-171/+182
| | | |
* | | | Cleaned up polymorphic method creation.Paul Phillips2012-01-283-67/+54
| | | | | | | | | | | | | | | | | | | | I love the smell of polymorphic method synthesis in the early afternoon.
* | | | Changed partest to use UTF-8.Paul Phillips2012-01-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Finally had a concrete motivation to change partest's inexplicable ISO-8859-1 encoding to UTF-8. My test case would cause it to barf "illegal character". Is this going to break on windows or something? If so, it's time to fix the broken place which can't handle UTF-8.
* | | | Make 'illegal' characters less annoying.Paul Phillips2012-01-271-1/+1
| | | | | | | | | | | | | | | | At least tell us what they are.
* | | | Revert "-Yshow-symkinds: prints kinds next to symbol names"Paul Phillips2012-01-277-77/+39
| | | | | | | | | | | | | | | | This reverts commit 6a5901461c1aaac7dd8786cb374b079520895527.
| | | |
| \ \ \
*-. \ \ \ Merge remote-tracking branches 'scalamacros/topic/yshowsymkinds' and ↵Paul Phillips2012-01-2710-53/+99
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | 'axel22/feature/immutable-thread-safe' into develop
| | * | | | Set fields in immutable hash maps and hash sets to vals.aleksandar2012-01-263-14/+22
| | |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is part of an effort to make the immutable collections (more) thread safe. The `::` still has non-final member fields for head and tail, but there is not much that can be done right now about that, since these fields are used by list buffers. Tried writing a test with unsafe initialization, but could not invent a scenario which actually fails, at least on the JDK6.
| * / / / -Yshow-symkinds: prints kinds next to symbol namesEugene Burmako2012-01-277-39/+77
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This very situational option proved to be very useful when debugging https://issues.scala-lang.org/browse/SI-5415 With the help of -Yshow-symkinds, it became possible to distinguish a free var from a module symbol, which gave precise indication of the root of the bug. This changeset also upgrades stringification of symbols and types, so I'd like to get a review by @paulp and @odersky.
* | | | Disabled "not found" suggestions.Paul Phillips2012-01-261-0/+4
| | | | | | | | | | | | | | | | | | | | The benchmarks charts are confusing me and I want to rule it out as a problem by not having it exist for a while.
* | | | Intercept assert and require calls.Paul Phillips2012-01-2621-74/+143
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | And abort calls, and unhandled exceptions, all so I can supplement the error message with a little of the vast quantity of useful information which we possess but do not reveal. "Details are sketchy," says the officer tasked with investigating the crash, but no longer. Also took the opportunity to eliminate a bunch of one-argument assertions and requirements if I thought there was any chance I'd someday be facing them on the wrong end of an incident. Have you ever dreamed that instead of this experience: % scalac -optimise <long list of files> error: java.lang.AssertionError: assertion failed: Record Record(anonymous class JavaToScala$$anonfun$makeScalaPackage$1,Map()) does not contain a field value owner$1 Things could proceed more like this: % scalac -optimise <long list of files> error: while compiling: src/compiler/scala/reflect/runtime/JavaToScala.scala current phase: closelim library version: version 2.10.0.rdev-4267-2012-01-25-gc94d342 compiler version: version 2.10.0.rdev-4270-2012-01-26-gd540ddf reconstructed args: -Ydead-code -optimise -Yinline -Yclosure-elim -Yinline-handlers -d /tmp error: java.lang.AssertionError: [etc] You are not dreaming! IT'S ALL HAPPENING
* | | | Fix for recently induced -optimise crasher.Paul Phillips2012-01-262-3/+14
| | | | | | | | | | | | | | | | | | | | | | | | "Induced" but not in my estimation "caused". Would like to understand why the enclosed test case crashes under -optimise without this change to AddInterfaces.
* | | | Put a stake in partest-alternative.Paul Phillips2012-01-2630-3852/+0
|/ / / | | | | | | | | | I look forward to partest-emo and partest-trance.
| | |
| \ \
*-. \ \ Merge remote-tracking branches 'axel22/issue/5374' and 'axel22/issue/5375' ↵Paul Phillips2012-01-255-31/+83
|\ \ \ \ | | |_|/ | |/| | | | | | into develop
| | * | Fix for SI-5375.aleksandar2012-01-253-27/+35
| | | | | | | | | | | | | | | | | | | | Changed CompositeThrowable to inherit Exception instead of Throwable. A few minor fixes for the jdk1.5 parallel collection tasks.
| * | | Refine fix for SI-5374 - make list deserialization backward-compatible.aleksandar2012-01-252-4/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is done by structurally serializing list nodes, but prepending a special `ListSerializationStart` symbol ahead of the list. If this symbol is not in the object input stream, the deserialization reverts to the old mode. Note there is not much to be done for list buffers - their serialization was broken before, so legacy serialized list buffers are no longer deserializable. However, their serialVersionUID was changed to reflect this, so deserializing a legacy list buffer should fail fast.
* | | | Merge remote-tracking branch 'odersky/topic/reflect' into developPaul Phillips2012-01-2545-459/+924
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/compiler/scala/reflect/internal/Symbols.scala src/compiler/scala/reflect/internal/Types.scala src/compiler/scala/tools/nsc/typechecker/Typers.scala src/library/scala/reflect/api/Trees.scala
| * | | | Tightening of constructors in Symbols, to force everyone to use the factory ↵Martin Odersky2012-01-251-10/+10
| | | | | | | | | | | | | | | | | | | | methods that take account of synchronization when run under reflection.
| * | | | More work on making reflection thread-safe.Martin Odersky2012-01-258-27/+35
| | | | |
| * | | | Protecting the constructors of Scopes and Symbols so that everyone is forced ↵Martin Odersky2012-01-252-3/+11
| | | | | | | | | | | | | | | | | | | | to go through the factory method, which adds on synchronization when run under reflection.
| * | | | Making Definitions thread-safe by replacing a bunch of vars with lazy vals.Martin Odersky2012-01-251-58/+53
| | | | |
| * | | | Making reflection thread-safe.Martin Odersky2012-01-2537-337/+718
| | | | | | | | | | | | | | | | | | | | The idea is that all operations that need to be synchronized are overriden in classes reflect.runtime.Synchronized*. Sometimes this applies to operations defined in SymbolTable, which can be directly overridden. Sometimes it is more convenient to generate SynchronizedClazz subclasses of SymbolTable classes Clazz. In the latter case, all instance creation must go over factory methods that can be overridden in the Synchronized traits.
| * | | | Cleanup and better documentation of reflect.api.Symbols traitMartin Odersky2012-01-251-28/+63
| | | | |
| * | | | Added doc comments to Names trait.Martin Odersky2012-01-251-3/+30
| | | | |
| | | | |
| \ \ \ \
| \ \ \ \
| \ \ \ \
*---. \ \ \ \ Merge remote-tracking branches 'hubertp/topic/errors', ↵Paul Phillips2012-01-253-6/+8
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | 'scalamacros/topic/antbuildexception', 'leifwickland/SI-5405' and 'axel22/issue/5377' into develop
| | | * | | | | Update for fix for SI-5377.aleksandar2012-01-241-2/+3
| | | | |_|/ / | | | |/| | | | | | | | | | | | | | | | | Converting the buffer to another arraybuffer instead of to a list.
| | * | | | | SI-5405: Fix documentation error in scala.math.BigIntLeif Wickland2012-01-241-3/+3
| | | | | | |
| * | | | | | Scalac fork no longer dumps stacktraces on compilation errorsEugene Burmako2012-01-251-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Current behavior of scalacfork task is to fail the build when there are compilation errors reported by scalac fork. So far, so good. However, this functionality is implemented by throwing sys.error, which makes ant dump the entire stacktrace. This is annoying, since it almost certainly scrolls the screen away of the error (hello, dear 1366x768) and buries it under a meaningless stacktrace. Surprisingly, there is a very simple fix that remedies the situation. Credit goes to @bakoyaro from SO: http://bit.ly/xdR306
* | | | | | | Use context for buffering errors that cannot/shouldn't be reported in the ↵Hubert Plociniczak2012-01-2525-1167/+2119
|/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | given moment (instead of throwing type errors). This avoids previous problems where we were creating fake error trees in some incorrect places like in type completers in Namers etc. Implicits relied heavily on type errors being thrown but performance should stay the same due to some explicit checks/returns. Some of the problems involved how ambiguous error messages were collected/reported because it was very random (similarly for divergent implicits). This should be more explicit now. Reduced the number of unnecessary cyclic references being thrown (apart from those in Symbols/Types which don't have a context and need to stay for now as is). Review by @paulp, @odersky.
* | | | | | Renamed a method and made it more available.Paul Phillips2012-01-242-13/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We have too many methods called "widen" and/or "normalize". Renamed one of them to something more instructive. Or in the words of abe simpson, Dear Mr. President: There are too many states nowadays. Please eliminate three. P.S. I am not a crackpot.
* | | | | | Eliminated redundant function.Paul Phillips2012-01-241-9/+1
| | | | | |
* | | | | | Cleaner range counting.Paul Phillips2012-01-241-9/+27
| | | | | | | | | | | | | | | | | | | | | | | | Plus a big unit test I had lying around.
* | | | | | Got out in front of catastrophic failure.Paul Phillips2012-01-241-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Should be better than "typeConstructor inapplicable for <none>" being the default message communicating "something is wrong with your attempt to use a compiler programatically."
* | | | | | Created NoAbstractFile.Paul Phillips2012-01-242-1/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A very distinguished value in case one feels (as this one does) that null is disheartening and Option only marginally better.
* | | | | | Moved some code.Paul Phillips2012-01-242-14/+24
|/ / / / / | | | | | | | | | | | | | | | From ConsoleReporter to Position so others can use it.
* | | | | Merge remote-tracking branches 'scalamacros/topic/partest' and ↵Paul Phillips2012-01-249-19/+69
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | 'gkossakowski/virtpatmat-emitswitch' into develop