From e2a34984527c0437cd42476934d0c22164551eed Mon Sep 17 00:00:00 2001 From: Jason Zaugg Date: Thu, 17 Oct 2013 14:15:28 +0200 Subject: Make parameters to implicit value classes private 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 --- test/files/presentation/ide-bug-1000531.check | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'test/files/presentation/ide-bug-1000531.check') diff --git a/test/files/presentation/ide-bug-1000531.check b/test/files/presentation/ide-bug-1000531.check index be8805330a..9a2cad5fd2 100644 --- a/test/files/presentation/ide-bug-1000531.check +++ b/test/files/presentation/ide-bug-1000531.check @@ -3,7 +3,7 @@ reload: CrashOnLoad.scala askTypeCompletion at CrashOnLoad.scala(6,12) ================================================================================ [response] askCompletionAt (6,12) -retrieved 124 members +retrieved 120 members [inaccessible] protected[package lang] def clone(): Object [inaccessible] protected[package lang] def finalize(): Unit [inaccessible] protected[this] def reversed: List[B] @@ -121,8 +121,4 @@ final def synchronized[T0](x$1: T0): T0 final def wait(): Unit final def wait(x$1: Long): Unit final def wait(x$1: Long,x$2: Int): Unit -private[this] val __leftOfArrow: java.util.Iterator[B] -private[this] val __resultOfEnsuring: java.util.Iterator[B] -private[this] val __stringToFormat: java.util.Iterator[B] -private[this] val __thingToAdd: java.util.Iterator[B] ================================================================================ -- cgit v1.2.3