diff options
author | Paul Phillips <paulp@improving.org> | 2010-12-29 01:52:23 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2010-12-29 01:52:23 +0000 |
commit | 6ae3eb1ad96270774e117e7931e48cd5ce98945a (patch) | |
tree | 5a85167bca58f1d37c540c726e7e15f85e7743d1 /src | |
parent | 969fd08a04cac5951d35e36ca639433355b5cf80 (diff) | |
download | scala-6ae3eb1ad96270774e117e7931e48cd5ce98945a.tar.gz scala-6ae3eb1ad96270774e117e7931e48cd5ce98945a.tar.bz2 scala-6ae3eb1ad96270774e117e7931e48cd5ce98945a.zip |
Some accumulated cleanup done while profiling a...
Some accumulated cleanup done while profiling and reducing uses of
length. No review.
Diffstat (limited to 'src')
22 files changed, 68 insertions, 112 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala b/src/compiler/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala index 81bb5db286..a78e46ea84 100644 --- a/src/compiler/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala +++ b/src/compiler/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala @@ -6,7 +6,7 @@ package scala.tools.nsc package ast.parser -import collection.mutable.Map +import scala.collection.{ mutable, immutable } import xml.{ EntityRef, Text } import xml.XML.{ xmlns } import symtab.Flags.MUTABLE @@ -184,7 +184,7 @@ abstract class SymbolicXMLBuilder(p: Parsers#Parser, preserveWS: Boolean) { def unparsed(pos: Position, str: String): Tree = atPos(pos)( New(_scala_xml_Unparsed, LL(const(str))) ) - def element(pos: Position, qname: String, attrMap: Map[String, Tree], args: Seq[Tree]): Tree = { + def element(pos: Position, qname: String, attrMap: mutable.Map[String, Tree], args: Seq[Tree]): Tree = { def handleNamespaceBinding(pre: String, z: String): Tree = { def mkAssign(t: Tree): Tree = Assign( Ident(_tmpscope), diff --git a/src/compiler/scala/tools/nsc/backend/ScalaPrimitives.scala b/src/compiler/scala/tools/nsc/backend/ScalaPrimitives.scala index 2754a7b113..70ab35b13c 100644 --- a/src/compiler/scala/tools/nsc/backend/ScalaPrimitives.scala +++ b/src/compiler/scala/tools/nsc/backend/ScalaPrimitives.scala @@ -8,8 +8,7 @@ package scala.tools.nsc package backend import scala.tools.nsc.backend.icode._ - -import scala.collection.mutable.{Map, HashMap} +import scala.collection.{ mutable, immutable } /** * Scala primitive operations are represented as methods in Any and @@ -203,13 +202,11 @@ abstract class ScalaPrimitives { final val D2F = 265 // RunTime.d2f(x) final val D2D = 266 // RunTime.d2d(x) - - private var primitives: Map[Symbol, Int] = _ + private val primitives: mutable.Map[Symbol, Int] = new mutable.HashMap() /** Initialize the primitive map */ def init { - primitives = new HashMap() - + primitives.clear() // scala.Any addPrimitive(Any_==, EQ) addPrimitive(Any_!=, NE) diff --git a/src/compiler/scala/tools/nsc/backend/WorklistAlgorithm.scala b/src/compiler/scala/tools/nsc/backend/WorklistAlgorithm.scala index cc2c2b3517..93c37cd5df 100644 --- a/src/compiler/scala/tools/nsc/backend/WorklistAlgorithm.scala +++ b/src/compiler/scala/tools/nsc/backend/WorklistAlgorithm.scala @@ -8,7 +8,7 @@ package scala.tools.nsc package backend import scala.tools.nsc.ast._ -import scala.collection.mutable.Stack +import scala.collection.{ mutable, immutable } /** * Simple implementation of a worklist algorithm. A processing @@ -26,7 +26,7 @@ import scala.collection.mutable.Stack */ trait WorklistAlgorithm { type Elem - type WList = Stack[Elem] + type WList = mutable.Stack[Elem] val worklist: WList diff --git a/src/compiler/scala/tools/nsc/backend/icode/Members.scala b/src/compiler/scala/tools/nsc/backend/icode/Members.scala index 6392131e58..fccab4a44c 100644 --- a/src/compiler/scala/tools/nsc/backend/icode/Members.scala +++ b/src/compiler/scala/tools/nsc/backend/icode/Members.scala @@ -9,7 +9,6 @@ package backend package icode import java.io.PrintWriter - import scala.collection.{ mutable, immutable } import mutable.{ HashMap, ListBuffer } import symtab.Flags.{ DEFERRED } @@ -219,8 +218,7 @@ trait Members { self: ICodes => * This method should be most effective after heavy inlining. */ def normalize: Unit = if (this.code ne null) { - import scala.collection.mutable.{Map, HashMap} - val nextBlock: Map[BasicBlock, BasicBlock] = HashMap.empty + val nextBlock: mutable.Map[BasicBlock, BasicBlock] = mutable.HashMap.empty for (b <- code.blocks.toList if b.successors.length == 1; val succ = b.successors.head; diff --git a/src/compiler/scala/tools/nsc/backend/icode/analysis/DataFlowAnalysis.scala b/src/compiler/scala/tools/nsc/backend/icode/analysis/DataFlowAnalysis.scala index dd9341ac91..c45983d5b6 100644 --- a/src/compiler/scala/tools/nsc/backend/icode/analysis/DataFlowAnalysis.scala +++ b/src/compiler/scala/tools/nsc/backend/icode/analysis/DataFlowAnalysis.scala @@ -7,7 +7,7 @@ package scala.tools.nsc package backend.icode.analysis -import scala.collection.mutable.{Map, HashMap, Set, HashSet, LinkedHashSet} +import scala.collection.{ mutable, immutable } /** A generic framework for data flow analysis. */ @@ -16,11 +16,10 @@ trait DataFlowAnalysis[L <: SemiLattice] { type P <: ProgramPoint[P] val lattice: L - val worklist: Set[P] = new LinkedHashSet - - val in: Map[P, lattice.Elem] = new HashMap - val out: Map[P, lattice.Elem] = new HashMap - val visited: HashSet[P] = new HashSet + val worklist: mutable.Set[P] = new mutable.LinkedHashSet + val in: mutable.Map[P, lattice.Elem] = new mutable.HashMap + val out: mutable.Map[P, lattice.Elem] = new mutable.HashMap + val visited: mutable.HashSet[P] = new mutable.HashSet /** collect statistics? */ var stat = true diff --git a/src/compiler/scala/tools/nsc/backend/icode/analysis/Liveness.scala b/src/compiler/scala/tools/nsc/backend/icode/analysis/Liveness.scala index 0e76044977..a211860754 100644 --- a/src/compiler/scala/tools/nsc/backend/icode/analysis/Liveness.scala +++ b/src/compiler/scala/tools/nsc/backend/icode/analysis/Liveness.scala @@ -9,7 +9,7 @@ package backend.icode package analysis import scala.collection.{ mutable, immutable } -import scala.collection.immutable.{ Set, ListSet } +import immutable.ListSet /** * Compute liveness information for local variables. diff --git a/src/compiler/scala/tools/nsc/doc/html/page/Template.scala b/src/compiler/scala/tools/nsc/doc/html/page/Template.scala index 9132d8754d..b6819e7a33 100644 --- a/src/compiler/scala/tools/nsc/doc/html/page/Template.scala +++ b/src/compiler/scala/tools/nsc/doc/html/page/Template.scala @@ -9,9 +9,7 @@ package html package page import model._ - -import scala.xml.{NodeSeq, Text} -import scala.collection.mutable.HashSet +import scala.xml.{ NodeSeq, Text } class Template(tpl: DocTemplateEntity) extends HtmlPage { diff --git a/src/compiler/scala/tools/nsc/interpreter/ReflectionCompletion.scala b/src/compiler/scala/tools/nsc/interpreter/ReflectionCompletion.scala index 70f1ffa5a7..440f2933f9 100644 --- a/src/compiler/scala/tools/nsc/interpreter/ReflectionCompletion.scala +++ b/src/compiler/scala/tools/nsc/interpreter/ReflectionCompletion.scala @@ -9,8 +9,6 @@ package interpreter import java.lang.reflect import reflect.{ Modifier, AccessibleObject } import Modifier.{ isPrivate, isProtected, isStatic } -import scala.reflect.NameTransformer -import scala.collection.mutable.HashMap import ReflectionCompletion._ trait ReflectionCompletion extends CompletionAware { diff --git a/src/compiler/scala/tools/nsc/interpreter/XMLCompletion.scala b/src/compiler/scala/tools/nsc/interpreter/XMLCompletion.scala index f2af57cc36..583e0adc58 100644 --- a/src/compiler/scala/tools/nsc/interpreter/XMLCompletion.scala +++ b/src/compiler/scala/tools/nsc/interpreter/XMLCompletion.scala @@ -8,10 +8,10 @@ package interpreter import xml.{ XML, Group, Node, NodeSeq } import XMLCompletion._ -import scala.collection.mutable.HashMap +import scala.collection.{ mutable, immutable } class XMLCompletion(root: Node) extends CompletionAware { - private val nodeCache = new HashMap[String, Node] + private val nodeCache = new mutable.HashMap[String, Node] private def getNode(s: String): Option[Node] = { completions // make sure cache is populated nodeCache get s diff --git a/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala b/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala index e20fdd7516..6d0100d705 100644 --- a/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala +++ b/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala @@ -7,10 +7,11 @@ package scala.tools.nsc package matching +import PartialFunction._ +import scala.collection.{ mutable, immutable } import util.Position import transform.ExplicitOuter import symtab.Flags -import collection._ import mutable.ListBuffer import immutable.IntMap import annotation.elidable @@ -28,7 +29,6 @@ trait ParallelMatching extends ast.TreeDSL import CODE._ import Types._ import Debug._ - import PartialFunction._ /** Transition **/ def toPats(xs: List[Tree]): List[Pattern] = xs map Pattern.apply diff --git a/src/compiler/scala/tools/nsc/util/ClassPath.scala b/src/compiler/scala/tools/nsc/util/ClassPath.scala index 4994542fdb..830fb9538e 100644 --- a/src/compiler/scala/tools/nsc/util/ClassPath.scala +++ b/src/compiler/scala/tools/nsc/util/ClassPath.scala @@ -7,10 +7,9 @@ package scala.tools.nsc package util -import java.io.{ File => JFile } import java.net.URL - -import scala.collection.mutable.{ListBuffer, ArrayBuffer, HashSet => MutHashSet} +import scala.collection.{ mutable, immutable } +import mutable.ListBuffer import io.{ File, Directory, Path, AbstractFile } import scala.tools.util.StringOps.splitWhere import Path.isJarOrZip diff --git a/src/library/scala/collection/IterableLike.scala b/src/library/scala/collection/IterableLike.scala index 00c2275ab5..70009391a2 100644 --- a/src/library/scala/collection/IterableLike.scala +++ b/src/library/scala/collection/IterableLike.scala @@ -6,10 +6,10 @@ ** |/ ** \* */ - package scala.collection + import generic._ -import immutable.{List, Stream} +import immutable.{ List, Stream } import annotation.unchecked.uncheckedVariance /** A template trait for iterable collections of type `Iterable[A]`. diff --git a/src/library/scala/collection/IterableViewLike.scala b/src/library/scala/collection/IterableViewLike.scala index a7578e9a01..a580fd7097 100644 --- a/src/library/scala/collection/IterableViewLike.scala +++ b/src/library/scala/collection/IterableViewLike.scala @@ -6,12 +6,9 @@ ** |/ ** \* */ - - package scala.collection import generic._ -import collection.immutable.Stream import TraversableView.NoBuilder /** A template trait for non-strict views of iterable collections. diff --git a/src/library/scala/collection/LinearSeqLike.scala b/src/library/scala/collection/LinearSeqLike.scala index 8bf45348db..397e4131c7 100644 --- a/src/library/scala/collection/LinearSeqLike.scala +++ b/src/library/scala/collection/LinearSeqLike.scala @@ -7,10 +7,9 @@ \* */ - package scala.collection -import generic._ +import generic._ import mutable.ListBuffer import immutable.List import scala.util.control.Breaks._ diff --git a/src/library/scala/collection/generic/TraversableForwarder.scala b/src/library/scala/collection/generic/TraversableForwarder.scala index 3995a5258b..ef42a7dcc0 100644 --- a/src/library/scala/collection/generic/TraversableForwarder.scala +++ b/src/library/scala/collection/generic/TraversableForwarder.scala @@ -6,14 +6,11 @@ ** |/ ** \* */ - - package scala.collection.generic -import scala.collection._ -import mutable.{Buffer, StringBuilder} -import immutable.{List, Stream} -// import immutable.{List, Nil, ::, Stream} +import scala.collection._ +import mutable.{ Buffer, StringBuilder } +import immutable.{ List, Stream } /** <p> * This trait implements a forwarder for traversable objects. It forwards diff --git a/src/library/scala/collection/mutable/LazyBuilder.scala b/src/library/scala/collection/mutable/LazyBuilder.scala index db6ca19f2b..aef47801c8 100644 --- a/src/library/scala/collection/mutable/LazyBuilder.scala +++ b/src/library/scala/collection/mutable/LazyBuilder.scala @@ -6,12 +6,9 @@ ** |/ ** \* */ - package scala.collection package mutable -import immutable.{List, Nil} - /** A builder that constructs its result lazily. Iterators or iterables to * be added to this builder with `++=` are not evaluated until `result` is called. * diff --git a/src/library/scala/reflect/Tree.scala b/src/library/scala/reflect/Tree.scala index ff7fc73c8a..7917d27166 100644 --- a/src/library/scala/reflect/Tree.scala +++ b/src/library/scala/reflect/Tree.scala @@ -7,11 +7,8 @@ \* */ - package scala.reflect -import collection.immutable.{List, Nil} - /** This type is required by the compiler and <b>should not be used in client code</b>. */ abstract class Tree diff --git a/src/library/scala/util/automata/BaseBerrySethi.scala b/src/library/scala/util/automata/BaseBerrySethi.scala index 63eb0aba9f..4e7c7c4f02 100644 --- a/src/library/scala/util/automata/BaseBerrySethi.scala +++ b/src/library/scala/util/automata/BaseBerrySethi.scala @@ -10,12 +10,8 @@ package scala.util.automata - import scala.util.regexp.{ Base } - import scala.collection.{ mutable, immutable } -import mutable.{ HashMap } -import immutable.{ Set } // todo: replace global variable pos with acc @@ -30,7 +26,7 @@ abstract class BaseBerrySethi { protected var pos = 0 // results which hold all info for the NondetWordAutomaton - protected var follow: HashMap[Int, Set[Int]] = _ + protected var follow: mutable.HashMap[Int, Set[Int]] = _ protected var finalTag: Int = _ diff --git a/src/library/scala/util/automata/DetWordAutom.scala b/src/library/scala/util/automata/DetWordAutom.scala index e1e19589c2..0af49e9d40 100644 --- a/src/library/scala/util/automata/DetWordAutom.scala +++ b/src/library/scala/util/automata/DetWordAutom.scala @@ -6,12 +6,9 @@ ** |/ ** \* */ - - package scala.util.automata - -import scala.collection.{Set, Map} +import scala.collection.{ mutable, immutable } /** A deterministic automaton. States are integers, where * 0 is always the only initial state. Transitions are represented @@ -24,21 +21,14 @@ import scala.collection.{Set, Map} * @version 1.0 */ abstract class DetWordAutom[T <: AnyRef] { - val nstates: Int val finals: Array[Int] - val delta: Array[Map[T,Int]] + val delta: Array[mutable.Map[T, Int]] val default: Array[Int] - def isFinal(q: Int) = finals(q) != 0 - def isSink(q: Int) = delta(q).isEmpty && default(q) == q - - def next(q: Int, label: T) = { - delta(q).get(label) match { - case Some(p) => p - case _ => default(q) - } - } + def isFinal(q: Int) = finals(q) != 0 + def isSink(q: Int) = delta(q).isEmpty && default(q) == q + def next(q: Int, label: T) = delta(q).getOrElse(label, default(q)) override def toString() = { val sb = new StringBuilder("[DetWordAutom nstates=") diff --git a/src/library/scala/util/automata/NondetWordAutom.scala b/src/library/scala/util/automata/NondetWordAutom.scala index 4434ed395d..ed3da00832 100644 --- a/src/library/scala/util/automata/NondetWordAutom.scala +++ b/src/library/scala/util/automata/NondetWordAutom.scala @@ -7,11 +7,9 @@ \* */ - package scala.util.automata -import scala.collection.{ immutable, mutable, Set, Seq, Map } -import immutable.{ BitSet } +import scala.collection.{ immutable, mutable } /** A nondeterministic automaton. States are integers, where * 0 is always the only initial state. Transitions are represented @@ -20,13 +18,13 @@ import immutable.{ BitSet } * All states are reachable. Accepting states are those for which * the partial function 'finals' is defined. */ -abstract class NondetWordAutom[T <: AnyRef] -{ +abstract class NondetWordAutom[T <: AnyRef] { + import immutable.BitSet + val nstates: Int val labels: Seq[T] - val finals: Array[Int] // 0 means not final - val delta: Array[Map[T, BitSet]] + val delta: Array[mutable.Map[T, BitSet]] val default: Array[BitSet] /** returns true if the state is final */ @@ -41,10 +39,10 @@ abstract class NondetWordAutom[T <: AnyRef] /** returns true if there are no accepting states */ final def isEmpty = (0 until nstates) forall (x => !isFinal(x)) - /** returns a bitset with the next states for given state and label */ + /** returns a BitSet with the next states for given state and label */ def next(q: Int, a: T): BitSet = delta(q).getOrElse(a, default(q)) - /** returns a bitset with the next states for given state and label */ + /** returns a BitSet with the next states for given state and label */ def next(Q: BitSet, a: T): BitSet = next(Q, next(_, a)) def nextDefault(Q: BitSet): BitSet = next(Q, default) diff --git a/src/library/scala/util/automata/SubsetConstruction.scala b/src/library/scala/util/automata/SubsetConstruction.scala index d5b1a19083..5b5df33b11 100644 --- a/src/library/scala/util/automata/SubsetConstruction.scala +++ b/src/library/scala/util/automata/SubsetConstruction.scala @@ -6,21 +6,21 @@ ** |/ ** \* */ - package scala.util.automata +import scala.collection.{ mutable, immutable } + class SubsetConstruction[T <: AnyRef](val nfa: NondetWordAutom[T]) { import nfa.labels - import collection.{ mutable, Map } - import collection.immutable.BitSet + import immutable.BitSet def selectTag(Q: BitSet, finals: Array[Int]) = Q map finals filter (_ > 0) min def determinize: DetWordAutom[T] = { // for assigning numbers to bitsets - var indexMap = Map[BitSet, Int]() - var invIndexMap = Map[Int, BitSet]() + var indexMap = collection.Map[BitSet, Int]() + var invIndexMap = collection.Map[Int, BitSet]() var ix = 0 // we compute the dfa with states = bitsets @@ -29,10 +29,10 @@ class SubsetConstruction[T <: AnyRef](val nfa: NondetWordAutom[T]) { var states = Set(q0, sink) // initial set of sets val delta = new mutable.HashMap[BitSet, mutable.HashMap[T, BitSet]] - var deftrans = Map(q0 -> sink, sink -> sink) // initial transitions - var finals: Map[BitSet, Int] = Map() - + var deftrans = mutable.Map(q0 -> sink, sink -> sink) // initial transitions + var finals: mutable.Map[BitSet, Int] = mutable.Map() val rest = new mutable.Stack[BitSet] + rest.push(sink, q0) def addFinal(q: BitSet) { @@ -40,8 +40,8 @@ class SubsetConstruction[T <: AnyRef](val nfa: NondetWordAutom[T]) { finals = finals.updated(q, selectTag(q, nfa.finals)) } def add(Q: BitSet) { - if (!states.contains(Q)) { - states = states + Q + if (!states(Q)) { + states += Q rest push Q addFinal(Q) } @@ -74,7 +74,7 @@ class SubsetConstruction[T <: AnyRef](val nfa: NondetWordAutom[T]) { // create DetWordAutom, using indices instead of sets val nstatesR = states.size - val deltaR = new Array[Map[T,Int]](nstatesR) + val deltaR = new Array[mutable.Map[T, Int]](nstatesR) val defaultR = new Array[Int](nstatesR) val finalsR = new Array[Int](nstatesR) @@ -83,7 +83,7 @@ class SubsetConstruction[T <: AnyRef](val nfa: NondetWordAutom[T]) { val trans = delta(Q) val transDef = deftrans(Q) val qDef = indexMap(transDef) - val ntrans = new mutable.HashMap[T,Int]() + val ntrans = new mutable.HashMap[T, Int]() for ((label, value) <- trans) { val p = indexMap(value) diff --git a/src/library/scala/util/automata/WordBerrySethi.scala b/src/library/scala/util/automata/WordBerrySethi.scala index 4a41cbbf5a..26f48441d8 100644 --- a/src/library/scala/util/automata/WordBerrySethi.scala +++ b/src/library/scala/util/automata/WordBerrySethi.scala @@ -10,8 +10,7 @@ package scala.util.automata -import scala.collection.{ immutable, mutable, Map } -import immutable.{ Set } +import scala.collection.{ immutable, mutable } import mutable.{ HashSet, HashMap } import scala.util.regexp.WordExp @@ -25,17 +24,14 @@ import scala.util.regexp.WordExp abstract class WordBerrySethi extends BaseBerrySethi { override val lang: WordExp - import lang.{ Alt, Eps, Letter, Meta, RegExp, Sequ, Star } + import lang.{ Alt, Eps, Letter, Meta, RegExp, Sequ, Star, _labelT } - protected var labels: HashSet[lang._labelT] = _ + protected var labels: HashSet[_labelT] = _ // don't let this fool you, only labelAt is a real, surjective mapping - protected var labelAt: immutable.Map[Int, lang._labelT] = _ // new alphabet "gamma" - - protected var deltaq: Array[HashMap[lang._labelT, List[Int]]] = _ // delta - - protected var defaultq: Array[List[Int]] = _ // default transitions - - protected var initials: Set[Int] = _ + protected var labelAt: Map[Int, _labelT] = _ // new alphabet "gamma" + protected var deltaq: Array[HashMap[_labelT, List[Int]]] = _ // delta + protected var defaultq: Array[List[Int]] = _ // default transitions + protected var initials: Set[Int] = _ /** Computes <code>first(r)</code> where the word regexp <code>r</code>. * @@ -75,13 +71,13 @@ abstract class WordBerrySethi extends BaseBerrySethi { */ /** called at the leaves of the regexp */ - protected def seenLabel(r: RegExp, i: Int, label: lang._labelT) { + protected def seenLabel(r: RegExp, i: Int, label: _labelT) { labelAt = labelAt.updated(i, label) this.labels += label } // overridden in BindingBerrySethi - protected def seenLabel(r: RegExp, label: lang._labelT): Int = { + protected def seenLabel(r: RegExp, label: _labelT): Int = { pos += 1 seenLabel(r, pos, label) pos @@ -95,7 +91,7 @@ abstract class WordBerrySethi extends BaseBerrySethi { } - protected def makeTransition(src: Int, dest: Int, label: lang._labelT) { + protected def makeTransition(src: Int, dest: Int, label: _labelT) { val q = deltaq(src) q.update(label, dest :: q.getOrElse(label, Nil)) } @@ -114,11 +110,11 @@ abstract class WordBerrySethi extends BaseBerrySethi { protected def initializeAutom() { finals = immutable.Map.empty[Int, Int] // final states - deltaq = new Array[HashMap[lang._labelT, List[Int]]](pos) // delta + deltaq = new Array[HashMap[_labelT, List[Int]]](pos) // delta defaultq = new Array[List[Int]](pos) // default transitions for (j <- 0 until pos) { - deltaq(j) = HashMap[lang._labelT, List[Int]]() + deltaq(j) = HashMap[_labelT, List[Int]]() defaultq(j) = Nil } } @@ -129,7 +125,7 @@ abstract class WordBerrySethi extends BaseBerrySethi { else makeTransition(j, k, labelAt(k)) } - def automatonFrom(pat: RegExp, finalTag: Int): NondetWordAutom[lang._labelT] = { + def automatonFrom(pat: RegExp, finalTag: Int): NondetWordAutom[_labelT] = { this.finalTag = finalTag pat match { @@ -150,14 +146,14 @@ abstract class WordBerrySethi extends BaseBerrySethi { val finalsArr = 0 until pos map (k => finals.getOrElse(k, 0)) toArray // 0 == not final val initialsArr = initials.toArray - val deltaArr: Array[Map[lang._labelT, immutable.BitSet]] = + val deltaArr: Array[mutable.Map[_labelT, immutable.BitSet]] = (0 until pos map { x => HashMap(delta1(x).toSeq map { case (k, v) => k -> immutable.BitSet(v: _*) } : _*) - }) toArray + }).toArray val defaultArr = 0 until pos map (k => immutable.BitSet(defaultq(k): _*)) toArray - new NondetWordAutom[lang._labelT] { + new NondetWordAutom[_labelT] { val nstates = pos val labels = WordBerrySethi.this.labels.toList val initials = initialsArr |