summaryrefslogtreecommitdiff
path: root/test/files
Commit message (Collapse)AuthorAgeFilesLines
...
* | | Revert "Fixing inliner visibility issue."Paul Phillips2012-01-173-15/+0
| | | | | | | | | | | | | | | | | | This reverts commit 2820770bffe2e7d180bccbcd7a3d83944b1dd8d6. Last minute change had unintended consequences.
* | | Fixing inliner visibility issue.Paul Phillips2012-01-173-0/+15
| | | | | | | | | | | | | | | | | | | | | Changes motivated by ICodeReader neglecting to utilize logic which exists in its superclass. Now you can enjoy empty package classes being inlined into other empty package classes. Closes SI-4925.
* | | Merge branch 'specialized/hlist' of https://github.com/dragos/scala into developPaul Phillips2012-01-172-0/+31
|\ \ \ | |/ / |/| |
| * | Make specialization pick up opportunities when the Iulian Dragos2012-01-172-0/+31
| | | | | | | | | | | | | | | | | | specialized method has additional (non-specialized) type parameters. This fix comes from Stefan's desire to specialize HLists (see corresponding test). review by @prokopec
* | | Improved a cyclic reference error message.Paul Phillips2012-01-164-6/+42
| | | | | | | | | | | | | | | "illegal cyclic reference involving value <import>" not so useful.
* | | Less regressive package object fix.Paul Phillips2012-01-163-0/+20
| | | | | | | | | | | | At least I think so.
* | | Merge remote-tracking branches 'odersky/pullrequest/interpolation' and ↵Paul Phillips2012-01-165-9/+44
|\ \ \ | |/ / |/| | | | | 'magarciaEPFL/fasterInliner' into develop
| * | A string interpolation implementation of SIP-11.Martin Odersky2012-01-165-9/+44
| | | | | | | | | | | | This is the complete implementation of SIP-11, in its version of 15-Jan-2012. For now, the interpolations are enabled only under the -Xexperimental flag.
* | | Merge remote-tracking branch 'origin/develop'Paul Phillips2012-01-153-12/+28
|\ \ \
| | \ \
| | \ \
| | \ \
| | \ \
| *---. | | Merge remote-tracking branches 'szabolcsberecz/xml-attribute-order', ↵Paul Phillips2012-01-153-12/+28
| |\ \ \| | | | | | |/ | | | |/| | | | | | 'szabolcsberecz/pathsettings-jar-location-fix', 'dcsobral/issue/5371' and 'dcsobral/issue/5370' into develop
| | * / | Preserve attribute order in inline XMLSzabolcs Berecz2012-01-143-12/+28
| | |/ /
* | / / Fixing checkfile.Paul Phillips2012-01-151-1/+1
|/ / /
* | | Fix for raw types issue found in the IDE.Paul Phillips2012-01-142-0/+10
| | |
* | | Test case backing spec.Paul Phillips2012-01-143-0/+39
| | | | | | | | | | | | Added code from SLS 2.0.2.
* | | Symbols making friends with Polly Morphism.Paul Phillips2012-01-141-4/+1
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since I have established (no small effort, this) that there is no need for certain important flags to be mutable for the entire lifetime of a symbol, I have codified this knowledge by moving it out of the flags entirely and into the inheritance hierarchy where its constant nature can find true happiness. AliasTypeSymbol ... it's an alias (forever!) AbstractTypeSymbol ... it's an abstract type (forever!) The only time DEFERRED is inspected is if the generic creation function is called (e.g. "newTypeSymbol", not "newAliasType") in which case the presence of the flag is used to determine which symbol to create. This is mostly for legacy support. Certain symbols were being created inconsistently with the others. Now every symbol is created by invoking a creation method on the owner, with the exception of FreeVar. I changed the owner of those from RootClass to NoSymbol because there is no reason for them to pollute the symbol hierarchy at the root. The signature of cloneSymbolImpl is now def cloneSymbolImpl(owner: Symbol, newFlags: Long): Symbol There is an overload with the old signature which calls that one with no flags. With this step, every symbol creation in trunk is performed with knowledge of the initial flags, opening the door to many optimizations in the Symbol and Type logic, not to mention boosting my sanity by at least five sanity points.
* | Fix for crasher in uncurry.Paul Phillips2012-01-131-0/+8
| | | | | | | | A small dose of packedType closes SI-4869.
* | Fix for spurious implicit ambiguity with package objects.Paul Phillips2012-01-132-0/+16
| | | | | | | | Closes SI-3999. Review by @odersky.
* | Fixed overloading in package objects.Paul Phillips2012-01-133-0/+79
|/ | | | | | | | | | | | | 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.
* Merge remote-tracking branch 'szabolcsberecz/xml-attribute-fixes' into developPaul Phillips2012-01-121-3/+22
|\
| * Cleanup after "Fixed equality and string representation of xml attributes ↵Szabolcs Berecz2012-01-121-3/+22
| | | | | | | | | | | | | | | | | | | | 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-124-1/+113
|\ \ \ \ | |_|_|/ |/| | | | | | | 'soc/SI-4627' into develop
| * | | Merge branch 'master' into issue/4147aleksandar2012-01-1254-78/+691
| |\ \ \ | | | | | | | | | | | | | | | | | | | | Conflicts: .gitignore
| * | | | Add mutable tree sets to the standard library.aleksandar2012-01-124-1/+113
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This implementation is based on AVL trees. The current implementation is contributed by Lucien Pereira. Fixes #4147.
* | | | | Disambiguate some type printing.Paul Phillips2012-01-124-2/+33
| |/ / / |/| | | | | | | | | | | Functions of functions use parens for grouping.
* | | | Optimizing TypeRef, starting with Symbols.Paul Phillips2012-01-111-6/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | | Updated checkfile with IndexedSeq signature.Paul Phillips2012-01-111-1/+1
| | | |
* | | | Revert "Accept prefixed xml attributes with null value"Paul Phillips2012-01-101-22/+3
| | | | | | | | | | | | | | | | | | | | This reverts commit 51089b34a7a535498dee42e6465d4d577d65b7d5. A scaladoc test is failing and I have no time to look at it.
* | | | Better error reporting regarding main methods.Paul Phillips2012-01-094-10/+83
| |/ / |/| | | | | | | | | | | | | | 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-092-1/+34
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | and 'szabolcsberecz/xml-attribute-fix'
| | | * | | Accept prefixed xml attributes with null valueSzabolcs Berecz2012-01-071-3/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-072-1/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | | | | Closes SI-5354.Martin Odersky2012-01-042-0/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Was going straight to the field and bypassing the null guard. Closes SI-5300.
* | | | | | TypeConstraint/TypeVar refinement.Paul Phillips2012-01-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-071-0/+10
| |_|/ / / |/| | | | | | | | | | | | | | Closes SI-3758.
* | | | | Remedy spurious bounds conformance failure.Paul Phillips2012-01-061-0/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | | | Fix for crasher where Arrays meet abstract types.Paul Phillips2012-01-062-0/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-062-0/+72
| | | | | | | | | | | | | | | | | | | | | | | | | 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-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | % 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-052-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | % 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
* | | | | Fix issue with higher-order type params.Paul Phillips2012-01-051-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | | | Optimization in refchecks.Paul Phillips2012-01-051-1/+1
| | | | | | | | | | | | | | | | | | | | Making the inherited java vararg check cheaper.
* | | | | Optimization in Constructors.Paul Phillips2012-01-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | Reworked some old code which was far too expensive for the job it was performing.
* | | | | Moved Origins into scala.reflect.internal.util.Paul Phillips2012-01-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | It's too handy and I can't reach it from key classes whose calls I want to profile.
* | | | | Don't mark mixed in methods as bridges.Paul Phillips2012-01-051-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Sometime during the signature-related chaos before 2.9.1, genjvm was modified to pin ACC_BRIDGE onto mixed-in methods. This isn't necessary to suppress the signature (which has already happened at that point) and has deleterious effects since many tools ignore bridge methods. Review by @odersky.
* | | | | Fix for NoSuchMethod in cleanup.Paul Phillips2012-01-042-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Don't assume that just because someone is calling x.toInt and x <: java.lang.Number, that it's a boxed primitive. Closes SI-5356.
* | | | | Closes SI-5354.Martin Odersky2012-01-042-0/+22
|/ / / / | | | | | | | | | | | | | | | | | | | | 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.
* | | | Added -Xlog-implicit-conversions.Paul Phillips2012-01-023-0/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | New command line option prints a message whenever the compiler inserts an implicit conversion. Implicit parameters are not under consideration here, since the primary motivation is to make it easy to inspect your code for unintentional conversions, since they can have dramatic performance implications. class A { def f(xs: Array[Byte]) = xs.size def g(xs: Array[Byte]) = xs.length } % scalac -Xlog-implicit-conversions logImplicits.scala logImplicits.scala:2: applied implicit conversion from xs.type to ?{val size: ?} = implicit def byteArrayOps(xs: Array[Byte]): scala.collection.mutable.ArrayOps[Byte] def f(xs: Array[Byte]) = xs.size ^
* | | | More uniformity for the parser.Paul Phillips2011-12-311-0/+13
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixing consecutive type application made it more obvious there was another missing bit of the parser, type application following function application. This should (and now does) work: object F { def apply[T] = List[T]() } def g() = F g()[String]
* | | More performance work.Paul Phillips2011-12-301-10/+5
| | | | | | | | | | | | | | | | | | | | | Custom versions of collections which methods which operate on 2 or 3 collections. Eliminated most users of zip/zipped. Cleaned up the kinds checking code somewhat. Reduced the number of silent typechecks being performed at named argument sites.