From cdffcf8962c9fa606c027fcb5a50a4273976a576 Mon Sep 17 00:00:00 2001 From: Paul Phillips Date: Tue, 23 Apr 2013 16:09:16 -0700 Subject: Eliminated the accumulated feature warnings. No, this isn't busywork, how dare you suggest such a thing. I intend my tombstone to say HERE LIES EXTEMPORE, WHO ELIMINATED A LOT OF SIP-18 WARNINGS REST IN PEACE --- src/compiler/scala/tools/nsc/Main.scala | 2 ++ .../scala/tools/nsc/ast/parser/Scanners.scala | 1 + src/compiler/scala/tools/nsc/io/Jar.scala | 2 +- .../scala/tools/nsc/transform/patmat/Solving.scala | 1 + .../scala/tools/nsc/typechecker/Namers.scala | 1 + .../tools/nsc/typechecker/SyntheticMethods.scala | 1 + .../scala/tools/nsc/typechecker/TypeStrings.scala | 4 +-- .../scala/tools/nsc/typechecker/Typers.scala | 2 +- src/compiler/scala/tools/reflect/FastTrack.scala | 2 +- src/compiler/scala/tools/util/VerifyClass.scala | 2 +- src/library/scala/collection/Searching.scala | 5 +-- .../scala/concurrent/duration/Duration.scala | 1 + .../concurrent/impl/ExecutionContextImpl.scala | 10 +++--- src/reflect/scala/reflect/api/Names.scala | 2 ++ .../scala/reflect/internal/Definitions.scala | 1 + .../reflect/internal/JMethodOrConstructor.scala | 1 + src/reflect/scala/reflect/internal/Mode.scala | 2 ++ .../scala/reflect/internal/util/package.scala | 11 ++++--- src/reflect/scala/reflect/macros/Enclosures.scala | 4 ++- src/repl/scala/tools/nsc/interpreter/IMain.scala | 1 + .../scala/tools/nsc/doc/ScaladocAnalyzer.scala | 38 +++++++++++----------- 21 files changed, 56 insertions(+), 38 deletions(-) (limited to 'src') diff --git a/src/compiler/scala/tools/nsc/Main.scala b/src/compiler/scala/tools/nsc/Main.scala index 9f6f483ad8..a66ee572a9 100644 --- a/src/compiler/scala/tools/nsc/Main.scala +++ b/src/compiler/scala/tools/nsc/Main.scala @@ -5,6 +5,8 @@ package scala.tools package nsc +import scala.language.postfixOps + /** The main class for NSC, a compiler for the programming * language Scala. */ diff --git a/src/compiler/scala/tools/nsc/ast/parser/Scanners.scala b/src/compiler/scala/tools/nsc/ast/parser/Scanners.scala index eb31f7a66e..d22311afe9 100644 --- a/src/compiler/scala/tools/nsc/ast/parser/Scanners.scala +++ b/src/compiler/scala/tools/nsc/ast/parser/Scanners.scala @@ -13,6 +13,7 @@ import scala.annotation.{ switch, tailrec } import scala.collection.{ mutable, immutable } import mutable.{ ListBuffer, ArrayBuffer } import scala.xml.Utility.{ isNameStart } +import scala.language.postfixOps /** See Parsers.scala / ParsersCommon for some explanation of ScannersCommon. */ diff --git a/src/compiler/scala/tools/nsc/io/Jar.scala b/src/compiler/scala/tools/nsc/io/Jar.scala index ee3e2b04d1..2967f67e9c 100644 --- a/src/compiler/scala/tools/nsc/io/Jar.scala +++ b/src/compiler/scala/tools/nsc/io/Jar.scala @@ -10,7 +10,7 @@ import java.io.{ InputStream, OutputStream, IOException, FileNotFoundException, import java.util.jar._ import scala.collection.JavaConverters._ import Attributes.Name -import scala.language.implicitConversions +import scala.language.{ implicitConversions, postfixOps } // Attributes.Name instances: // diff --git a/src/compiler/scala/tools/nsc/transform/patmat/Solving.scala b/src/compiler/scala/tools/nsc/transform/patmat/Solving.scala index a0fb6e82fc..3c7dc79636 100644 --- a/src/compiler/scala/tools/nsc/transform/patmat/Solving.scala +++ b/src/compiler/scala/tools/nsc/transform/patmat/Solving.scala @@ -8,6 +8,7 @@ package scala.tools.nsc.transform.patmat import scala.collection.mutable import scala.reflect.internal.util.Statistics +import scala.language.postfixOps // naive CNF translation and simple DPLL solver trait Solving extends Logic { diff --git a/src/compiler/scala/tools/nsc/typechecker/Namers.scala b/src/compiler/scala/tools/nsc/typechecker/Namers.scala index de3010c371..f84a758281 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Namers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Namers.scala @@ -9,6 +9,7 @@ package typechecker import scala.collection.mutable import scala.annotation.tailrec import symtab.Flags._ +import scala.language.postfixOps /** This trait declares methods to create symbols and to enter them into scopes. * diff --git a/src/compiler/scala/tools/nsc/typechecker/SyntheticMethods.scala b/src/compiler/scala/tools/nsc/typechecker/SyntheticMethods.scala index 7e36b90b31..26b38e924a 100644 --- a/src/compiler/scala/tools/nsc/typechecker/SyntheticMethods.scala +++ b/src/compiler/scala/tools/nsc/typechecker/SyntheticMethods.scala @@ -9,6 +9,7 @@ package typechecker import scala.collection.{ mutable, immutable } import symtab.Flags._ import scala.collection.mutable.ListBuffer +import scala.language.postfixOps /** Synthetic method implementations for case classes and case objects. * diff --git a/src/compiler/scala/tools/nsc/typechecker/TypeStrings.scala b/src/compiler/scala/tools/nsc/typechecker/TypeStrings.scala index eb05486dca..afe6875218 100644 --- a/src/compiler/scala/tools/nsc/typechecker/TypeStrings.scala +++ b/src/compiler/scala/tools/nsc/typechecker/TypeStrings.scala @@ -153,7 +153,7 @@ trait TypeStrings { private type JClass = java.lang.Class[_] private val ObjectClass = classOf[java.lang.Object] private val primitives = Set[String]("byte", "char", "short", "int", "long", "float", "double", "boolean", "void") - private val primitiveMap = primitives.toList map { x => + private val primitiveMap = (primitives.toList map { x => val key = x match { case "int" => "Integer" case "char" => "Character" @@ -165,7 +165,7 @@ trait TypeStrings { } ("java.lang." + key) -> ("scala." + value) - } toMap + }).toMap def isAnonClass(cl: Class[_]) = { val xs = cl.getName.reverse takeWhile (_ != '$') diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala index 2ea986def7..0d619ea046 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala @@ -3963,7 +3963,7 @@ trait Typers extends Adaptations with Tags { case Apply(fn, args) if matches(fn) => Some((applyOp(args), fn)) case Assign(lhs, _) if matches(lhs) => Some((nme.updateDynamic, lhs)) case _ if matches(t) => Some((nme.selectDynamic, t)) - case _ => t.children flatMap findSelection headOption + case _ => (t.children flatMap findSelection).headOption } findSelection(cxTree) match { case Some((opName, treeInfo.Applied(_, targs, _))) => diff --git a/src/compiler/scala/tools/reflect/FastTrack.scala b/src/compiler/scala/tools/reflect/FastTrack.scala index aa4ddc8ba8..3cf19396ee 100644 --- a/src/compiler/scala/tools/reflect/FastTrack.scala +++ b/src/compiler/scala/tools/reflect/FastTrack.scala @@ -26,7 +26,7 @@ trait FastTrack { final class FastTrackEntry(pf: PartialFunction[Applied, MacroContext => Tree]) extends (MacroArgs => Any) { def validate(tree: Tree) = pf isDefinedAt Applied(tree) - def apply(margs: MacroArgs) = { + def apply(margs: MacroArgs): margs.c.Expr[Nothing] = { val MacroArgs(c, _) = margs // Macros validated that the pf is defined here - and there's not much we could do if it weren't. c.Expr[Nothing](pf(Applied(c.expandee))(c))(c.WeakTypeTag.Nothing) diff --git a/src/compiler/scala/tools/util/VerifyClass.scala b/src/compiler/scala/tools/util/VerifyClass.scala index d208a9f9c2..3c203e1cf2 100644 --- a/src/compiler/scala/tools/util/VerifyClass.scala +++ b/src/compiler/scala/tools/util/VerifyClass.scala @@ -3,7 +3,7 @@ package scala.tools.util import scala.tools.nsc.io._ import java.net.URLClassLoader import scala.collection.JavaConverters._ - +import scala.language.postfixOps object VerifyClass { diff --git a/src/library/scala/collection/Searching.scala b/src/library/scala/collection/Searching.scala index 03eb4283ad..8957771988 100644 --- a/src/library/scala/collection/Searching.scala +++ b/src/library/scala/collection/Searching.scala @@ -8,6 +8,7 @@ package scala.collection +import scala.language.implicitConversions import scala.annotation.tailrec import scala.collection.generic.IsSeqLike import scala.math.Ordering @@ -50,7 +51,7 @@ object Searching { * sequence, or the `InsertionPoint` where the element would be inserted if * the element is not in the sequence. */ - final def search[B >: A](elem: B)(implicit ord: Ordering[B]): SearchResult = + final def search[B >: A](elem: B)(implicit ord: Ordering[B]): SearchResult = coll match { case _: IndexedSeq[A] => binarySearch(elem, -1, coll.length)(ord) case _ => linearSearch(coll.view, elem, 0)(ord) @@ -77,7 +78,7 @@ object Searching { * the element is not in the sequence. */ final def search[B >: A](elem: B, from: Int, to: Int) - (implicit ord: Ordering[B]): SearchResult = + (implicit ord: Ordering[B]): SearchResult = coll match { case _: IndexedSeq[A] => binarySearch(elem, from-1, to)(ord) case _ => linearSearch(coll.view(from, to), elem, from)(ord) diff --git a/src/library/scala/concurrent/duration/Duration.scala b/src/library/scala/concurrent/duration/Duration.scala index 6c6155279d..cbc31a7eed 100644 --- a/src/library/scala/concurrent/duration/Duration.scala +++ b/src/library/scala/concurrent/duration/Duration.scala @@ -10,6 +10,7 @@ package scala.concurrent.duration import java.lang.{ Double => JDouble, Long => JLong } import scala.language.implicitConversions +import scala.language.postfixOps object Duration { diff --git a/src/library/scala/concurrent/impl/ExecutionContextImpl.scala b/src/library/scala/concurrent/impl/ExecutionContextImpl.scala index e4a0f464f9..ed04293e0d 100644 --- a/src/library/scala/concurrent/impl/ExecutionContextImpl.scala +++ b/src/library/scala/concurrent/impl/ExecutionContextImpl.scala @@ -30,7 +30,7 @@ private[scala] class ExecutionContextImpl private[impl] (es: Executor, reporter: } // Implement BlockContext on FJP threads - class DefaultThreadFactory(daemonic: Boolean) extends ThreadFactory with ForkJoinPool.ForkJoinWorkerThreadFactory { + class DefaultThreadFactory(daemonic: Boolean) extends ThreadFactory with ForkJoinPool.ForkJoinWorkerThreadFactory { def wire[T <: Thread](thread: T): T = { thread.setDaemon(daemonic) thread.setUncaughtExceptionHandler(uncaughtExceptionHandler) @@ -72,7 +72,7 @@ private[scala] class ExecutionContextImpl private[impl] (es: Executor, reporter: getInt("scala.concurrent.context.maxThreads", _.toInt)) val threadFactory = new DefaultThreadFactory(daemonic = true) - + try { new ForkJoinPool( desiredParallelism, @@ -98,13 +98,13 @@ private[scala] class ExecutionContextImpl private[impl] (es: Executor, reporter: def execute(runnable: Runnable): Unit = executor match { case fj: ForkJoinPool => - val fjt = runnable match { + val fjt: ForkJoinTask[_] = runnable match { case t: ForkJoinTask[_] => t - case r => new ExecutionContextImpl.AdaptedForkJoinTask(r) + case r => new ExecutionContextImpl.AdaptedForkJoinTask(r) } Thread.currentThread match { case fjw: ForkJoinWorkerThread if fjw.getPool eq fj => fjt.fork() - case _ => fj execute fjt + case _ => fj execute fjt } case generic => generic execute runnable } diff --git a/src/reflect/scala/reflect/api/Names.scala b/src/reflect/scala/reflect/api/Names.scala index e7840a13fb..0a85237a4e 100644 --- a/src/reflect/scala/reflect/api/Names.scala +++ b/src/reflect/scala/reflect/api/Names.scala @@ -1,6 +1,8 @@ package scala.reflect package api +import scala.language.implicitConversions + /** * EXPERIMENTAL * diff --git a/src/reflect/scala/reflect/internal/Definitions.scala b/src/reflect/scala/reflect/internal/Definitions.scala index 5392daf674..dafaf03eaf 100644 --- a/src/reflect/scala/reflect/internal/Definitions.scala +++ b/src/reflect/scala/reflect/internal/Definitions.scala @@ -6,6 +6,7 @@ package scala.reflect package internal +import scala.language.postfixOps import scala.annotation.{ switch, meta } import scala.collection.{ mutable, immutable } import Flags._ diff --git a/src/reflect/scala/reflect/internal/JMethodOrConstructor.scala b/src/reflect/scala/reflect/internal/JMethodOrConstructor.scala index 3d1d1bf451..d17e2488af 100644 --- a/src/reflect/scala/reflect/internal/JMethodOrConstructor.scala +++ b/src/reflect/scala/reflect/internal/JMethodOrConstructor.scala @@ -5,6 +5,7 @@ package scala.reflect package internal +import scala.language.implicitConversions import java.lang.{ Class => jClass } import java.lang.annotation.{ Annotation => jAnnotation } import java.lang.reflect.{ diff --git a/src/reflect/scala/reflect/internal/Mode.scala b/src/reflect/scala/reflect/internal/Mode.scala index 850e3b5669..c007a8bec9 100644 --- a/src/reflect/scala/reflect/internal/Mode.scala +++ b/src/reflect/scala/reflect/internal/Mode.scala @@ -6,6 +6,8 @@ package scala.reflect package internal +import scala.language.implicitConversions + object Mode { private implicit def liftIntBitsToMode(bits: Int): Mode = apply(bits) def apply(bits: Int): Mode = new Mode(bits) diff --git a/src/reflect/scala/reflect/internal/util/package.scala b/src/reflect/scala/reflect/internal/util/package.scala index 1ca57b81ed..49164d366c 100644 --- a/src/reflect/scala/reflect/internal/util/package.scala +++ b/src/reflect/scala/reflect/internal/util/package.scala @@ -2,6 +2,8 @@ package scala package reflect package internal +import scala.language.existentials // SI-6541 + package object util { import StringOps.longestCommonPrefix @@ -25,11 +27,10 @@ package object util { if (isModule) (name split '$' filterNot (_ == "")).last + "$" - else if (isAnon) { - val parents = clazz.getSuperclass :: clazz.getInterfaces.toList - parents map (c => shortClass(c)) mkString " with " - } - else shortenName(name) + else if (isAnon) + clazz.getSuperclass :: clazz.getInterfaces.toList map (c => shortClass(c)) mkString " with " + else + shortenName(name) } /** * Adds the `sm` String interpolator to a [[scala.StringContext]]. diff --git a/src/reflect/scala/reflect/macros/Enclosures.scala b/src/reflect/scala/reflect/macros/Enclosures.scala index fd91333dae..a3baec9042 100644 --- a/src/reflect/scala/reflect/macros/Enclosures.scala +++ b/src/reflect/scala/reflect/macros/Enclosures.scala @@ -1,6 +1,8 @@ package scala.reflect package macros +import scala.language.existentials // SI-6541 + /** * EXPERIMENTAL * @@ -100,4 +102,4 @@ trait Enclosures { */ case class EnclosureException(expected: Class[_], enclosingTrees: List[Tree]) extends Exception(s"Couldn't find a tree of type $expected among enclosing trees $enclosingTrees") -} \ No newline at end of file +} diff --git a/src/repl/scala/tools/nsc/interpreter/IMain.scala b/src/repl/scala/tools/nsc/interpreter/IMain.scala index 83cd9829e4..dda26aa6b7 100644 --- a/src/repl/scala/tools/nsc/interpreter/IMain.scala +++ b/src/repl/scala/tools/nsc/interpreter/IMain.scala @@ -29,6 +29,7 @@ import java.util.concurrent.Future import scala.reflect.runtime.{ universe => ru } import scala.reflect.{ ClassTag, classTag } import StdReplTags._ +import scala.language.implicitConversions /** An interpreter for Scala code. * diff --git a/src/scaladoc/scala/tools/nsc/doc/ScaladocAnalyzer.scala b/src/scaladoc/scala/tools/nsc/doc/ScaladocAnalyzer.scala index 003c439f65..d407b93a4b 100644 --- a/src/scaladoc/scala/tools/nsc/doc/ScaladocAnalyzer.scala +++ b/src/scaladoc/scala/tools/nsc/doc/ScaladocAnalyzer.scala @@ -11,6 +11,8 @@ import scala.reflect.internal.Chars._ import symtab._ import typechecker.Analyzer import scala.reflect.internal.util.{ BatchSourceFile, RangePosition } +import scala.tools.nsc.doc.base.{ CommentFactoryBase, MemberLookupBase, LinkTo, LinkToExternal } +import scala.language.postfixOps trait ScaladocAnalyzer extends Analyzer { val global : Global // generally, a ScaladocGlobal @@ -151,27 +153,25 @@ abstract class ScaladocSyntaxAnalyzer[G <: Global](val global: G) extends Syntax private var docBuffer: StringBuilder = null // buffer for comments (non-null while scanning) private var inDocComment = false // if buffer contains double-star doc comment - private var lastDoc: DocComment = null // last comment if it was double-star doc + private var lastDoc: DocComment = null // last comment if it was double-star doc - private lazy val unmooredParser = { // minimalist comment parser - import scala.tools.nsc.doc.base.{comment => _, _} - new { - val global: Global = ScaladocSyntaxAnalyzer.this.global - } with CommentFactoryBase with MemberLookupBase { - import global.{ settings, Symbol } - def parseComment(comment: DocComment) = { - val nowarnings = settings.nowarn.value - settings.nowarn.value = true - try parseAtSymbol(comment.raw, comment.raw, comment.pos) - finally settings.nowarn.value = nowarnings - } - - override def internalLink(sym: Symbol, site: Symbol): Option[LinkTo] = None - override def chooseLink(links: List[LinkTo]): LinkTo = links.headOption orNull - override def toString(link: LinkTo): String = "No link" - override def findExternalLink(sym: Symbol, name: String): Option[LinkToExternal] = None - override def warnNoLink: Boolean = false + private object unmooredParser extends { // minimalist comment parser + val global: Global = ScaladocSyntaxAnalyzer.this.global + } + with CommentFactoryBase with MemberLookupBase { + import global.{ settings, Symbol } + def parseComment(comment: DocComment) = { + val nowarnings = settings.nowarn.value + settings.nowarn.value = true + try parseAtSymbol(comment.raw, comment.raw, comment.pos) + finally settings.nowarn.value = nowarnings } + + override def internalLink(sym: Symbol, site: Symbol): Option[LinkTo] = None + override def chooseLink(links: List[LinkTo]): LinkTo = links.headOption orNull + override def toString(link: LinkTo): String = "No link" + override def findExternalLink(sym: Symbol, name: String): Option[LinkToExternal] = None + override def warnNoLink: Boolean = false } /** -- cgit v1.2.3