summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* 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
|
* Fix for crasher in uncurry.Paul Phillips2012-01-131-2/+6
| | | | A small dose of packedType closes SI-4869.
* Fix for spurious implicit ambiguity with package objects.Paul Phillips2012-01-131-5/+13
| | | | Closes SI-3999. Review by @odersky.
* Fixed overloading in package objects.Paul Phillips2012-01-131-1/+18
| | | | | | | | | | | | | Implementing a warning for the behavior described in SI-1987 gave me enough of a foot in the door to fix it rather than warning about it. I suppose this is a variation of rubber ducky debugging. % scalac -Ylog:typer test/files/run/t1987.scala [log typer] !!! Overloaded package object member resolved incorrectly. Discarded: def duh(n: Double): Unit Using: val duh: (n: Double)Unit <and> (n: Long)Unit Review by @odersky.
* Removed some unsociable exception behavior.Paul Phillips2012-01-131-7/+0
|
* Merge remote-tracking branch 'szabolcsberecz/xml-attribute-fixes' into developPaul Phillips2012-01-121-6/+9
|\
| * Cleanup after "Fixed equality and string representation of xml attributes ↵Szabolcs Berecz2012-01-121-6/+9
| | | | | | | | | | | | | | | | | | | | with null value" This commit reverts the following two commits: 5f2568e36b87d183fd4e4442d5c304db628846c4 - "Revert "Accept prefixed xml attributes with null value" b00002f9049c034510438881b4a4449d73fe2f54 - "Disabling some scaladoc tests." and fixes a scaladoc test broken by: 4787f883604d1344257c0b40c15790c3dde477f2 - "Fixed equality and string representation of xml attributes with null value"
| |
| \
| \
| \
*---. \ Merge remote-tracking branches 'axel22/issue/4147', 'schmmd/codec' and ↵Paul Phillips2012-01-1225-866/+422
|\ \ \ \ | |_|_|/ |/| | | | | | | 'soc/SI-4627' into develop
| | | * Clean up standard/swing library by deprecating/moving code examplesSimon Ochsenreither2011-12-0720-866/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Deprecate scala/xml/include/sax/Main.scala. Move scala/swing/test/* to docs/examples. Saves 160KB in scala-swing.jar. Fixes SI-4627.
| | * | Added toString to Codec class (uses Codec.name).Michael Schmitz2012-01-091-0/+3
| | | |
| * | | Merge branch 'master' into issue/4147aleksandar2012-01-12158-3773/+5443
| |\ \ \ | | | | | | | | | | | | | | | | | | | | Conflicts: .gitignore
| * | | | Add mutable tree sets to the standard library.aleksandar2012-01-124-0/+418
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This implementation is based on AVL trees. The current implementation is contributed by Lucien Pereira. Fixes #4147.
* | | | | Disambiguate some type printing.Paul Phillips2012-01-121-2/+5
| | | | | | | | | | | | | | | | | | | | Functions of functions use parens for grouping.
* | | | | Streamlining output of -Yinfer-debug.Paul Phillips2012-01-123-83/+55
| |/ / / |/| | | | | | | | | | | Also exposed some typevar related code outside a method.
* | | | Optimizing TypeRef, starting with Symbols.Paul Phillips2012-01-1140-590/+616
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are too many potential optimizations unavailable to us due to the lack of bright lines among different kinds of symbols. For instance the difference between a TypeSymbol which represents a type alias and one which represents an abstract type is only whether the DEFERRED flag is set. This creates issues. 1) There are many (many) places where tests are performed on every symbol which could be done more efficiently and (especially) more verifiably correctly with polymorphism. 2) TypeRefs based on those symbols are also checking that flag constantly, in perpetuity. A symbol created as an alias is never (to the best of my knowledge) going to intentionally morph into one representing an abstract type, nor vice versa. 3) One has no guarantees, because anyone can set or reset the DEFERRED flag at any time. So tackling more than one problem at once herein: 1) I created canonical symbol creation points which take the flags as an argument, so that there can be a difference between initializing a symbol's flags and setting/resetting them at arbitrary times. 2) I structured all the symbol creators to take arguments in the same order, which is: def newXXX(name: Name, ..., pos: Position = NoPosition, flags: Long = 0L) (Where "..." is for those symbols which require something beyond the name to create, such as a TypeSkolem's origin.) The name is first because it's the only always required argument. I left but deprecated the variations which take (pos, name). 3) I created subclasses of TypeRef based on the information which should be stable from creation time onward: - args or no args? - abstract type, type alias, or class? 2x3 == 6 and that's how many subclasses of TypeRef there are now. So now, for example, every TypeRef doesn't have to carry null symInfoCache and thisInfoCache fields for the benefit of the minority which use them. I still intend to realize the gain possible once we can evade the fields for pre and args without losing pattern matcher efficiency.
* | | | Inlining in Parsers.Paul Phillips2012-01-113-18/+19
| | | | | | | | | | | | | | | | | | | | | | | | Work around optimizer's unwillingness to inline trait methods by flipping to an abstract class. Also eliminated a couple other warnings noising up the optimized build.
* | | | Rescued some import-related code.Paul Phillips2012-01-102-15/+29
| | | | | | | | | | | | | | | | So I can get at it from the repl.
* | | | Traitified JavaConverters.Paul Phillips2012-01-101-1/+4
| | | | | | | | | | | | | | | | So it can be used as a mixin.
* | | | Merge remote-tracking branch 'odersky/master'Paul Phillips2012-01-107-7/+7
|\ \ \ \
| * | | | Fixing redundant type parameter in toIndexedSeq which causes suboptimal type ↵Martin Odersky2012-01-107-7/+7
| | | | | | | | | | | | | | | | | | | | inference
* | | | | Revert "Accept prefixed xml attributes with null value"Paul Phillips2012-01-101-9/+6
|/ / / / | | | | | | | | | | | | | | | | This reverts commit 51089b34a7a535498dee42e6465d4d577d65b7d5. A scaladoc test is failing and I have no time to look at it.
* | | | Revert "Restored an implicit."Paul Phillips2012-01-091-5/+3
| | | | | | | | | | | | | | | | | | | | | | | | This reverts commit daeb8f75ec3db065703d225fdb7f0aca34514333. That didn't go well.
* | | | Restored an implicit.Paul Phillips2012-01-091-3/+5
| | | | | | | | | | | | | | | | Because sbt's generated API code depends on it.
* | | | Better error reporting regarding main methods.Paul Phillips2012-01-093-33/+54
| |/ / |/| | | | | | | | | | | | | | Now notices most things which look like main methods and says something useful if they aren't usable as entry points. Closes SI-4749.
| | |
| \ \
| \ \
| \ \
*---. \ \ Merge remote-tracking branches 'odersky/master', 'odersky/topic/capturing' ↵Paul Phillips2012-01-095-11/+16
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | and 'szabolcsberecz/xml-attribute-fix'
| | | * | | Accept prefixed xml attributes with null valueSzabolcs Berecz2012-01-071-6/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changes makes PrefixedAttribute work the same way as UnprefixedAttribute with respect to null values: <t p:a={ null: String }/> is accepted and results in <t/>
| | | * | | Fixed equality and string representation of xml attributes with null valueSzabolcs Berecz2012-01-074-5/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Prior to this patch <t a={ null: String }/> was not equal to <t/> and it's string representation was "<t ></t>" instead of "<t></t>" This includes changing MetaData.normalize() so that it doesn't reverse the chain. On the downside, the iterate function in MetaData.normalize() is not tail-recursive now.
| | * | | | Changed boxing of free mutable variables to be flexible wrt when liftcode ↵Martin Odersky2012-01-028-122/+105
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | takes place. A major redesign that unifies the various different approaches to boxing of free variables. Free variables are marked with CAPTURED and eliminated by LambdaLift. I also added some hooks in MacroContext that a reifier needs to use.
| | * | | | Hardening of adaptoNewRun to survive issues in presentation compiler.Martin Odersky2012-01-011-4/+8
| | | | | | | | | | | | | | | | | | | | | | | | Previously, adaptToNewRun crashed when an object declaration got replaced by a value with the same name, because the module class no longer existed. This caused crashes in the presentation compiler when class files disappeared because of a clean build. The new behavior avoids assertion errors.
| * | | | | Closes SI-5354.Martin Odersky2012-01-042-7/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The reason why the test case compiled without error is pretty devious: When checking the `Foo.x' implicit, a CyclicReference error occurs which causes the alternative to be discarded. Why a CylicReference? Because the inferencer tries to decide whether the owner of `z` is a subclass of the owner od `x`. To do this, it computed the info of the owner of `z1`, which is not complete because no result type for `f1` was given. Hence a CyclicReference error. The fix is twofold: (1) We make isNonBottomSubClass smarter so that it always returns false if the symbol in question is not a type; hence the info need not be computed. (2) It's dubious to swallow CyclicReference errors anywhere, but I deemed it too risky to propagate them. But at least the CyclicReference is now logged if -Ylog-implicit is true. This hopefully spares future maintainers the same detective work I had to go through when digging this out.
* | | | | | Fix for PartialFunction NPE.Paul Phillips2012-01-081-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Was going straight to the field and bypassing the null guard. Closes SI-5300.
* | | | | | Don't hard fail over missing classfiles.Paul Phillips2012-01-071-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There's no need to blow up when a classfile references other classes which aren't present. We can struggle onward and maybe it'll turn out they had no intention of trying to get at the class that isn't there. I have all kinds of confidence scala will find a way to fail when the time comes. Closes SI-5343.
* | | | | | Cleanups in Cleanup.Paul Phillips2012-01-076-85/+120
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Seeing about getting delayedInit working (not to mention the breakage it is inflicting elsewhere) which led me into Cleanup and some of its buddies.
* | | | | | Made type constraint propagation off by default.Paul Phillips2012-01-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Wow, it fails only during strap.comp. That is certainly a first for me, managing to build quick and pass all the tests only to be unable to rebuild the compiler from quick. Must be something fascinating taking place in there. So for now I flipped the switch back down.
* | | | | | TypeConstraint/TypeVar refinement.Paul Phillips2012-01-072-24/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I zeroed in on the actual conditions under which the parameter bounds can be utilized without poisoning the well. Also fixed a bug in ClassfileParser where it would get confused and set Any as a lower bound, as well as a bug or at least misbehavior where a TypeBounds with only Any/Nothing as an upper/lower bound would be treated differently than one with no bound at all. Review by @moors.
* | | | | | Made Array manifests return type arguments.Paul Phillips2012-01-072-3/+3
| |_|/ / / |/| | | | | | | | | | | | | | Closes SI-3758.
* | | | | Remedy spurious bounds conformance failure.Paul Phillips2012-01-061-6/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Misters hkarg and hkparam have to work harder to see things from the same perspective, so they don't end up in a huff over bounds which were the same all along. Closes SI-5020, review by @moors.
* | | | | Output improvements for TypeVar tracing.Paul Phillips2012-01-061-10/+12
| | | | | | | | | | | | | | | | | | | | | | | | | You should really try this out, anonymous commit log reader. scala -Dscalac.debug.tvar
* | | | | Fix for crasher where Arrays meet abstract types.Paul Phillips2012-01-061-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This sort of thing was crashing. No longer. trait Fooz[Q <: Array[_]] { def f0(x: Q) = x.length }
* | | | | Fix for crasher during type inference.Paul Phillips2012-01-061-2/+11
| | | | | | | | | | | | | | | | | | | | | | | | | Well, "fix" is pretty generous, how about "workaround". It does seem to do the job. Closes SI-4070, review by @moors.
* | | | | TypeVar tracing.Paul Phillips2012-01-062-85/+162
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | % scala -Dscalac.debug.tvar scala> class Foo[CC[X] <: Traversable[X]] { def bar[T](xs: CC[T]) = xs.head } defined class Foo scala> new Foo bar List(1,2,3) [ create] ?CC ( In Foo[CC[X] <: Traversable[X]] ) [ create] ?CC ( In Foo[CC[X] <: Traversable[X]] ) [ setInst] Nothing ( In Foo[CC[X] <: Traversable[X]], CC=Nothing ) [ create] ?CC ( In Foo[CC[X] <: Traversable[X]] ) [ create] ?T ( In Foo[CC[X] <: Traversable[X]]#bar[T] ) [ create] ?A ( In List#apply[A] ) [ create] ?A ( In List#apply[A] ) [ setInst] Int ( In List#apply[A], A=Int ) [ create] ?CC ( In Foo[CC[X] <: Traversable[X]] ) [ create] ?T ( In Foo[CC[X] <: Traversable[X]]#bar[T] ) [ create] ?CC ( In Foo[CC[X] <: Traversable[X]] ) [ applyArgs] ?CC ( In Foo[CC[X] <: Traversable[X]], apply args ?T to CC ) [ setInst] List ( In Foo[CC[X] <: Traversable[X]], CC=List ) [ setInst] Int ( In Foo[CC[X] <: Traversable[X]]#bar[T], T=Int ) res0: Int = 1 Also, I gave TypeVar some polymorphism. Review by @moors.
* | | | | Error message improvement.Paul Phillips2012-01-051-4/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | % scalac files/neg/t5357.scala files/neg/t5357.scala:5: error: '=>' expected but ':' found. case A: N => 1 ^ one error found That's uggo! Now it says: % scalac files/neg/t5357.scala files/neg/t5357.scala:5: error: Pattern variables must start with a lower-case letter. (SLS 8.1.1.) case A: N => 1 ^ one error found
* | | | | Init order issue in Manifest toStrings.Paul Phillips2012-01-051-43/+22
| | | | | | | | | | | | | | | | | | | | | | | | | Making -Xcheckinit happy. Then cleaned up the anyval and phantom type manifests once in the neighborhood.
* | | | | Fix issue with higher-order type params.Paul Phillips2012-01-052-13/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I think I found an issue underlying more than one bit of sketchy behavior amongst CC[_] and friends. Plus, I managed to initialize TypeConstraints with the bounds of the originating type parameter. I feel like that should cause something nifty to happen somewhere, but I have seen neither confetti nor lasers in greater quantities than I usually do. Will keep my remaining eye out. Closes SI-5359, review by @moors.
* | | | | More consistent use of Names.Paul Phillips2012-01-0573-993/+1205
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Several large helpings of tedium later, fewer strings are being discarded like so much refuse. Some names now cache a String, but only "named Names", so it's not very many and they pay for themselves pretty quickly. Many fewer name-related implicit conversions now taking place. A number of efficiency related measures.
* | | | | Merge branches 'findMemberRewrite-redux' and 'jan4-map-paramss'Paul Phillips2012-01-0510-47/+51
|\ \ \ \ \
| * | | | | Consolidated misc collections helper methods.Paul Phillips2012-01-0510-47/+51
| | | | | | | | | | | | | | | | | | | | | | | | Streamlining some of our more common operations.
* | | | | | Optimization in refchecks.Paul Phillips2012-01-052-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | Making the inherited java vararg check cheaper.