summaryrefslogtreecommitdiff
path: root/test/files/neg/logImplicits.check
Commit message (Collapse)AuthorAgeFilesLines
* Refactoring. Simplify inferImplicit's boolean leversAdriaan Moors2016-03-261-1/+1
|
* Optimize `implicit def Predef.<???>ArrayOps`xuwei-k2015-05-201-1/+1
| | | | | | | | | | | | | | Remove object allocation overhead by peeling off abstraction layer, revealing that the `ArrayOps` implicit conversions in `Predef` return value classes. d3f879a6b0 turned `ArrayOps.of<???>` into value classes, but the non-`AnyVal` result type of the corresponding `<???>arrayOps` implicit conversions (`ArrayOps[_]`) caused boxing anyway. The optimized versions are introduced under a new name, so that the old ones (without `implicit`) can be kept for binary compatibility, for now.
* SI-7784 Allow a singleton type over a constant value defn.Jason Zaugg2015-02-281-1/+1
| | | | | | When typechecking a `SingletonTypeTree`, we must `deconst` the type of the typechecked reference tree to avoid collapsing `a.type` into a constant type if `a` is a constant value definition.
* SI-8229 Source compatible name for implicit any2stringaddJason Zaugg2014-02-181-1/+1
| | | | | | | | | | To support the established pattern for disabling it for an compilation unit. Update scaladoc's knowledge of our "typeclasses". Leave a `private[scala]` version of `StringAdd` (public in bytecode) to ensure binary compatibility with 2.11.0-M8 for partest.
* Make parameters to implicit value classes privateJason Zaugg2013-11-121-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | So that they aren't offered as an autocomplete suggestion: implicit class Shouty(string: String) extends AnyVal { def SHOUT_! = string.toUpperCase + "!" } "". // autocompletion offers `.string` here The original incarnation of value classes didn't allow this sort of encapsulation, so we either invented goofy names like `__thingToAdd` or just picked `x` or `self`. But SI-7859 has delivered us the freedom to keep the accessor private. Should we keep any of these accessors around in a deprecated form? The implicit classes in Predef were added in 2.11.0-M2 (c26a8db067e4f), so they are okay. I think we can make reason that these APIs were both accidental and unlikely to be interpreted as public, so we can break them immediately. scala> Left(1).x res0: scala.util.Either[Int,Int] = Left(1) scala> import concurrent.duration._ import concurrent.duration._ scala> 1.n res1: Int = 1
* Maintenance of Predef.Paul Phillips2013-02-121-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1) Deprecates much of Predef and scala.Console, especially: - the read* methods (see below) - the set{Out,Err,In} methods (see SI-4793) 2) Removed long-deprecated: - Predef#exit - Predef#error should have gone, but could not due to sbt At least the whole source base has now been future-proofed against the eventual removal of Predef#error. The low justification for the read* methods should be readily apparent: they are little used and have no call to be in global namespace, especially given their weird ad hoc semantics and unreasonably tempting names such as readBoolean(). 3) Segregated the deprecated elements in Predef from the part which still thrives. 4) Converted all the standard Predef implicits into implicit classes, value classes where possible: - ArrowAssoc, Ensuring, StringFormat, StringAdd, RichException (value) - SeqCharSequence, ArrayCharSequence (non-value) Non-implicit deprecated stubs prop up the names of the formerly converting methods.
* Fix for one of the oldest open soundness bugs.Paul Phillips2012-05-041-4/+4
| | | | | | | | | | | | | | | | | | | Closes SI-963, since it was one of my random 30 it won the prize. The trick after adding the stability check (which has been sitting there commented out for 3+ years) was that implicit search depended on the wrongness, because memberWildcardType would create scopes with members of the form ?{ val name: tp } And since a def shouldn't match that, fixing it broke everything until I flipped it around: memberWildcardType should be seeking ?{ def name: tp } It could also search for a mutable value: the relevant quality is that it not be stable so it doesn't have a tighter type than the members it hopes to match.
* Added -Xlog-implicit-conversions.Paul Phillips2012-01-021-0/+19
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 ^