summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2008-04-02 14:43:16 +0000
committerMartin Odersky <odersky@gmail.com>2008-04-02 14:43:16 +0000
commitfd417cfa960542d72e54cafd44eff8941fff8f1e (patch)
tree437db04e06a295ebb309bc72daa9110cc14d8201
parent694b5caf290c9cda64077878e3cebf6f324b929c (diff)
downloadscala-fd417cfa960542d72e54cafd44eff8941fff8f1e.tar.gz
scala-fd417cfa960542d72e54cafd44eff8941fff8f1e.tar.bz2
scala-fd417cfa960542d72e54cafd44eff8941fff8f1e.zip
moved swing classes to package scala.swing; fix...
moved swing classes to package scala.swing; fixed bugs for regexes and parsers; fixed t0674.
-rw-r--r--src/compiler/scala/tools/nsc/symtab/Names.scala53
-rw-r--r--src/library/scala/Function.scala3
-rw-r--r--src/library/scala/Iterator.scala8
-rw-r--r--src/library/scala/LazyCharSequence.scala2
-rw-r--r--src/library/scala/io/UTF8Codec.scala1
-rw-r--r--src/library/scala/util/matching/Regex.scala2
-rw-r--r--src/library/scala/util/parsing/combinator/RegexParsers.scala6
-rw-r--r--src/library/scala/util/parsing/combinator/StdRegexParsers.scala28
-rw-r--r--src/swing/scala/swing/Button.scala2
-rw-r--r--src/swing/scala/swing/Caret.scala2
-rw-r--r--src/swing/scala/swing/Color.scala2
-rw-r--r--src/swing/scala/swing/Component.scala31
-rw-r--r--src/swing/scala/swing/ComponentList.scala2
-rw-r--r--src/swing/scala/swing/Container.scala4
-rw-r--r--src/swing/scala/swing/Dimension.scala2
-rw-r--r--src/swing/scala/swing/EmptyBorder.scala2
-rw-r--r--src/swing/scala/swing/FormattedTextField.scala2
-rw-r--r--src/swing/scala/swing/Frame.scala2
-rw-r--r--src/swing/scala/swing/GUIApplication.scala2
-rw-r--r--src/swing/scala/swing/Label.scala2
-rw-r--r--src/swing/scala/swing/MainFrame.scala2
-rw-r--r--src/swing/scala/swing/Orientation.scala2
-rw-r--r--src/swing/scala/swing/Panel.scala2
-rw-r--r--src/swing/scala/swing/Publisher.scala2
-rw-r--r--src/swing/scala/swing/Reactions.scala2
-rw-r--r--src/swing/scala/swing/Reactor.scala2
-rw-r--r--src/swing/scala/swing/ScrollPane.scala2
-rw-r--r--src/swing/scala/swing/SimpleGUIApplication.scala2
-rw-r--r--src/swing/scala/swing/Slider.scala2
-rw-r--r--src/swing/scala/swing/Spreadsheet.scala2
-rw-r--r--src/swing/scala/swing/SwingComponent.scala2
-rw-r--r--src/swing/scala/swing/Table.scala2
-rw-r--r--src/swing/scala/swing/TextComponent.scala2
-rw-r--r--src/swing/scala/swing/TextField.scala2
-rw-r--r--src/swing/scala/swing/event/ButtonPressed.scala2
-rw-r--r--src/swing/scala/swing/event/CaretUpdate.scala2
-rw-r--r--src/swing/scala/swing/event/CellModified.scala2
-rw-r--r--src/swing/scala/swing/event/Event.scala2
-rw-r--r--src/swing/scala/swing/event/TableChanged.scala2
-rw-r--r--src/swing/scala/swing/event/TableResized.scala2
-rw-r--r--src/swing/scala/swing/event/TextModified.scala2
-rw-r--r--src/swing/scala/swing/event/WindowActivated.scala2
-rw-r--r--src/swing/scala/swing/event/WindowClosed.scala2
-rw-r--r--src/swing/scala/swing/event/WindowClosing.scala2
-rw-r--r--src/swing/scala/swing/event/WindowDeactivated.scala2
-rw-r--r--src/swing/scala/swing/event/WindowDeiconified.scala2
-rw-r--r--src/swing/scala/swing/event/WindowEvent.scala2
-rw-r--r--src/swing/scala/swing/event/WindowIconified.scala2
-rw-r--r--src/swing/scala/swing/event/WindowOpened.scala2
-rw-r--r--src/swing/scala/swing/model/Matrix.scala2
-rw-r--r--src/swing/scala/swing/test/CelsiusConverter.scala2
-rw-r--r--src/swing/scala/swing/test/CelsiusConverter2.scala2
-rw-r--r--src/swing/scala/swing/test/HelloWorld.scala2
-rw-r--r--src/swing/scala/swing/test/SwingApp.scala2
-rw-r--r--test/files/pos/t0674.scala22
55 files changed, 132 insertions, 116 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/Names.scala b/src/compiler/scala/tools/nsc/symtab/Names.scala
index 63754e56df..70da3a3cb5 100644
--- a/src/compiler/scala/tools/nsc/symtab/Names.scala
+++ b/src/compiler/scala/tools/nsc/symtab/Names.scala
@@ -8,6 +8,7 @@ package scala.tools.nsc.symtab
import scala.tools.nsc.util.NameTransformer
import scala.tools.util.UTF8Codec
+import java.security.MessageDigest
/** The class <code>Names</code> ...
*
@@ -18,9 +19,12 @@ class Names {
// Operations -------------------------------------------------------------
- private val HASH_SIZE = 0x8000
- private val HASH_MASK = 0x7FFF
- private val NAME_SIZE = 0x20000
+ private final val HASH_SIZE = 0x8000
+ private final val HASH_MASK = 0x7FFF
+ private final val NAME_SIZE = 0x20000
+ private final val MAX_LEN = 255 // for longer names use a partial MD5 hash
+ private final val PREFIX_LEN = 128 // the length of the prefix to keep unhashed
+ private final val SUFFIX_LEN = 64 // the length of the suffix to keep unhashed
final val nameDebug = false
@@ -80,6 +84,26 @@ class Names {
else nc = nc + len
}
+ private lazy val md5 = MessageDigest.getInstance("MD5")
+
+ private def toMD5(cs: Array[Char], offset: Int, len: Int): String = {
+ val bytes = new Array[Byte](cs.length * 4)
+ val len = UTF8Codec.encode(cs, 0, bytes, 0, cs.length)
+ md5.update(bytes, 0, len)
+ val hash = md5.digest()
+ val sb = new StringBuilder
+ sb.append(cs, 0, PREFIX_LEN)
+ sb.append("$$$$")
+ for (i <- 0 until hash.length) {
+ val b = hash(i)
+ sb.append(((b >> 4) & 0xF).toHexString)
+ sb.append((b & 0xF).toHexString)
+ }
+ sb.append("$$$$")
+ sb.append(cs, len - SUFFIX_LEN, SUFFIX_LEN)
+ sb.toString
+ }
+
/** Create a term name from the characters in <code>cs[offset..offset+len-1]</code>.
*
* @param cs ...
@@ -87,17 +111,18 @@ class Names {
* @param len ...
* @return the created term name
*/
- def newTermName(cs: Array[Char], offset: Int, len: Int): Name = {
- val h = hashValue(cs, offset, len) & HASH_MASK
- var n = termHashtable(h)
- while ((n ne null) && (n.length != len || !equals(n.start, cs, offset, len)))
- n = n.next;
- if (n eq null) {
- n = new TermName(nc, len, h)
- enterChars(cs, offset, len)
- }
- n
- }
+ def newTermName(cs: Array[Char], offset: Int, len: Int): Name =
+ if (len <= MAX_LEN) {
+ val h = hashValue(cs, offset, len) & HASH_MASK
+ var n = termHashtable(h)
+ while ((n ne null) && (n.length != len || !equals(n.start, cs, offset, len)))
+ n = n.next;
+ if (n eq null) {
+ n = new TermName(nc, len, h)
+ enterChars(cs, offset, len)
+ }
+ n
+ } else newTermName(toMD5(cs, offset, len))
/** create a term name from string
*/
diff --git a/src/library/scala/Function.scala b/src/library/scala/Function.scala
index 12e124779b..9df4ceefe7 100644
--- a/src/library/scala/Function.scala
+++ b/src/library/scala/Function.scala
@@ -27,6 +27,9 @@ object Function {
*/
def chain[a](fs: Seq[a => a]): a => a = { x => (x /: fs) ((x, f) => f(x)) }
+ /** The constant function */
+ def const[T, U](x: T)(y: U): T = x
+
/** Currying for functions of arity 2. This transforms a function
* of arity 2 into a a unary function returning another unary function.
*
diff --git a/src/library/scala/Iterator.scala b/src/library/scala/Iterator.scala
index c539932e53..1f75ba85aa 100644
--- a/src/library/scala/Iterator.scala
+++ b/src/library/scala/Iterator.scala
@@ -235,6 +235,14 @@ trait Iterator[+A] {
def drop(n: Int): Iterator[A] =
if (n > 0 && hasNext) { next; drop(n - 1) } else this
+ /** A sub-iterator of <code>until - from elements
+ * starting at index <code>from</code>
+ *
+ * @param from The index of the first element of the slice
+ * @param until The index of the element following the slice
+ */
+ def slice(from: Int, until: Int): Iterator[A] = drop(from).take(until - from)
+
/** Returns a new iterator that maps all elements of this iterator
* to new elements using function <code>f</code>.
*/
diff --git a/src/library/scala/LazyCharSequence.scala b/src/library/scala/LazyCharSequence.scala
index 38427348f7..bde51f8bd1 100644
--- a/src/library/scala/LazyCharSequence.scala
+++ b/src/library/scala/LazyCharSequence.scala
@@ -237,7 +237,7 @@ private class Page(val num: Int) {
/** The currently last page in the sequence; might change as more charcaters are appended */
final def latest: Page = {
- if (later.next != null) later = later.latest
+ if (later.next != null) later = later.next.latest
later
}
diff --git a/src/library/scala/io/UTF8Codec.scala b/src/library/scala/io/UTF8Codec.scala
index 76173cf9eb..6318d9c495 100644
--- a/src/library/scala/io/UTF8Codec.scala
+++ b/src/library/scala/io/UTF8Codec.scala
@@ -18,6 +18,7 @@ package scala.io
object UTF8Codec {
final val UNI_REPLACEMENT_CHAR: Int = 0x0000FFFD
+
/** convert a codepoint to utf-8 bytes
* @author buraq
* @param ch codepoint
diff --git a/src/library/scala/util/matching/Regex.scala b/src/library/scala/util/matching/Regex.scala
index 947175f945..32fc300bf1 100644
--- a/src/library/scala/util/matching/Regex.scala
+++ b/src/library/scala/util/matching/Regex.scala
@@ -245,6 +245,8 @@ object Regex {
matcher.group
}
+ override def toString = super[Iterator].toString
+
/** The index of the first matched character */
def start: Int = matcher.start
diff --git a/src/library/scala/util/parsing/combinator/RegexParsers.scala b/src/library/scala/util/parsing/combinator/RegexParsers.scala
index 7f373133eb..37b5f1d10c 100644
--- a/src/library/scala/util/parsing/combinator/RegexParsers.scala
+++ b/src/library/scala/util/parsing/combinator/RegexParsers.scala
@@ -18,11 +18,11 @@ trait RegexParsers extends Parsers {
type Elem = Char
- var skipWhitespace = true
+ protected val whiteSpace = """\s+""".r
- private val whiteSpace = """\s+""".r
+ def skipWhitespace = whiteSpace.toString.length > 0
- private def handleWhiteSpace(source: CharSequence, offset: Int): Int =
+ protected def handleWhiteSpace(source: CharSequence, offset: Int): Int =
if (skipWhitespace)
(whiteSpace findPrefixMatchOf (source subSequence offset)) match {
case Some(matched) => offset + matched.end
diff --git a/src/library/scala/util/parsing/combinator/StdRegexParsers.scala b/src/library/scala/util/parsing/combinator/StdRegexParsers.scala
deleted file mode 100644
index 146c5a99a5..0000000000
--- a/src/library/scala/util/parsing/combinator/StdRegexParsers.scala
+++ /dev/null
@@ -1,28 +0,0 @@
-/* __ *\
-** ________ ___ / / ___ Scala API **
-** / __/ __// _ | / / / _ | (c) 2006-2007, LAMP/EPFL **
-** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
-** /____/\___/_/ |_/____/_/ | | **
-** |/ **
-\* */
-
-// $Id$
-
-package scala.util.parsing.combinator
-
-import java.util.regex._
-import scala.util.parsing.input.CharSequenceReader
-
-trait StdRegexParsers extends RegexParsers {
- def ident: Parser[String] =
- """[a-zA-Z_]\w*""".r
- def wholeNumber: Parser[String] =
- """\d+""".r
- def decimalNumber: Parser[String] =
- """(\d+(\.\d*)?|\d*.\d+)""".r
- def stringLiteral: Parser[String] =
- "\""+"""([^"\p{Cntrl}\\]|\\[\\/bfnrt]|\\u[a-fA-F0-9]{4})*"""+"\"".r
- def floatingPointNumber: Parser[String] =
- """-?(\d+(\.\d*)?|\d*\.\d+)[eEfFdD]?([+-]?\d+)?""".r
-
-}
diff --git a/src/swing/scala/swing/Button.scala b/src/swing/scala/swing/Button.scala
index 5f945611c5..f00d23474f 100644
--- a/src/swing/scala/swing/Button.scala
+++ b/src/swing/scala/swing/Button.scala
@@ -1,4 +1,4 @@
-package swing
+package scala.swing
import javax.swing._
import event._
diff --git a/src/swing/scala/swing/Caret.scala b/src/swing/scala/swing/Caret.scala
index 9c3cc903de..68e8b2c108 100644
--- a/src/swing/scala/swing/Caret.scala
+++ b/src/swing/scala/swing/Caret.scala
@@ -1,4 +1,4 @@
-package swing;
+package scala.swing;
import javax.swing
diff --git a/src/swing/scala/swing/Color.scala b/src/swing/scala/swing/Color.scala
index fff628d8bd..ebbd526865 100644
--- a/src/swing/scala/swing/Color.scala
+++ b/src/swing/scala/swing/Color.scala
@@ -1,4 +1,4 @@
-package swing;
+package scala.swing;
case class Color(r: Int, g: Int, b: Int) extends java.awt.Color(r, g, b) {
def this(col: java.awt.Color) = this(col.getRed, col.getGreen, col.getBlue)
diff --git a/src/swing/scala/swing/Component.scala b/src/swing/scala/swing/Component.scala
index a022340103..a302ca6e91 100644
--- a/src/swing/scala/swing/Component.scala
+++ b/src/swing/scala/swing/Component.scala
@@ -1,28 +1,13 @@
-package swing
+package scala.swing
-import java.awt.Font
-import javax.swing.border.Border
+import javax.swing._;
+import java.awt._;
-object Component {
- val ClientKey = "scala.swingWrapper"
- def wrapperFor[C<:Component](c: javax.swing.JComponent): C = c.getClientProperty(ClientKey).asInstanceOf[C]
-}
-
-abstract class Component extends UIElement with Showable.Swing with Reactor {
- lazy val peer: javax.swing.JComponent = new javax.swing.JComponent {}
- peer.putClientProperty(Component.ClientKey, this)
-
- def minimumSize = peer.getMinimumSize
- def minimumSize_=(x: Dimension) = peer.setMinimumSize(x.peer)
- def maxiumumSize = peer.getMaximumSize
- def maxiumumSize_=(x: Dimension) = peer.setMaximumSize(x.peer)
- def preferredSize = peer.getPreferredSize
- def preferredSize_=(x: Dimension) = peer.setPreferredSize(x.peer)
-
- def xAlignment: Double = peer.getAlignmentX
- def xAlignment_=(x: Double) = peer.setAlignmentX(x.toFloat)
- def yAlignment: Double = peer.getAlignmentY
- def yAlignment_=(x: Double) = peer.setAlignmentY(x.toFloat)
+abstract class Component
+extends Object
+with Reactor
+{
+ val acomponent: java.awt.Component
def foreground: Color = new Color(peer.getForeground)
def foreground_=(x: Color) = peer.setForeground(x)
diff --git a/src/swing/scala/swing/ComponentList.scala b/src/swing/scala/swing/ComponentList.scala
index fe1a66a1c4..6582b08b5a 100644
--- a/src/swing/scala/swing/ComponentList.scala
+++ b/src/swing/scala/swing/ComponentList.scala
@@ -1,4 +1,4 @@
-package swing
+package scala.swing
import javax.swing._
import event._
diff --git a/src/swing/scala/swing/Container.scala b/src/swing/scala/swing/Container.scala
index 72cf15d440..4397c3a46f 100644
--- a/src/swing/scala/swing/Container.scala
+++ b/src/swing/scala/swing/Container.scala
@@ -1,6 +1,4 @@
-package swing
-
-import scala.collection.mutable.Buffer
+package scala.swing
abstract class Container(override val peer: javax.swing.JComponent) extends Component {
def this() = this(new javax.swing.JComponent {})
diff --git a/src/swing/scala/swing/Dimension.scala b/src/swing/scala/swing/Dimension.scala
index 85a2c0a841..872f2022b2 100644
--- a/src/swing/scala/swing/Dimension.scala
+++ b/src/swing/scala/swing/Dimension.scala
@@ -1,4 +1,4 @@
-package swing
+package scala.swing
object Dimension {
def apply(w: Int, h: Int) = new Dimension {
diff --git a/src/swing/scala/swing/EmptyBorder.scala b/src/swing/scala/swing/EmptyBorder.scala
index 0bbcc1e409..41570fe4ab 100644
--- a/src/swing/scala/swing/EmptyBorder.scala
+++ b/src/swing/scala/swing/EmptyBorder.scala
@@ -1,4 +1,4 @@
-package swing
+package scala.swing
object EmptyBorder {
def apply(top: int, left: int, bottom: int, right: int) =
diff --git a/src/swing/scala/swing/FormattedTextField.scala b/src/swing/scala/swing/FormattedTextField.scala
index 7b88d1b5e8..86cf35d0c6 100644
--- a/src/swing/scala/swing/FormattedTextField.scala
+++ b/src/swing/scala/swing/FormattedTextField.scala
@@ -1,4 +1,4 @@
-package swing;
+package scala.swing;
import javax.swing._
import java.awt.event._
diff --git a/src/swing/scala/swing/Frame.scala b/src/swing/scala/swing/Frame.scala
index d1ad443fe0..edf895fcfc 100644
--- a/src/swing/scala/swing/Frame.scala
+++ b/src/swing/scala/swing/Frame.scala
@@ -1,4 +1,4 @@
-package swing
+package scala.swing
import javax.swing.JFrame
import event._
diff --git a/src/swing/scala/swing/GUIApplication.scala b/src/swing/scala/swing/GUIApplication.scala
index 39c2a96561..f629a59efa 100644
--- a/src/swing/scala/swing/GUIApplication.scala
+++ b/src/swing/scala/swing/GUIApplication.scala
@@ -1,4 +1,4 @@
-package swing
+package scala.swing
import javax.swing._
import event.Event
diff --git a/src/swing/scala/swing/Label.scala b/src/swing/scala/swing/Label.scala
index 98ad0ff4d3..6e1fdc62cf 100644
--- a/src/swing/scala/swing/Label.scala
+++ b/src/swing/scala/swing/Label.scala
@@ -1,4 +1,4 @@
-package swing;
+package scala.swing;
import javax.swing._;
diff --git a/src/swing/scala/swing/MainFrame.scala b/src/swing/scala/swing/MainFrame.scala
index ea35bccd53..e8399dc7f8 100644
--- a/src/swing/scala/swing/MainFrame.scala
+++ b/src/swing/scala/swing/MainFrame.scala
@@ -1,4 +1,4 @@
-package swing
+package scala.swing
import event._
diff --git a/src/swing/scala/swing/Orientation.scala b/src/swing/scala/swing/Orientation.scala
index ceb02f9778..7b73b15d22 100644
--- a/src/swing/scala/swing/Orientation.scala
+++ b/src/swing/scala/swing/Orientation.scala
@@ -1,4 +1,4 @@
-package swing
+package scala.swing
import javax.swing.SwingConstants._
diff --git a/src/swing/scala/swing/Panel.scala b/src/swing/scala/swing/Panel.scala
index 40fb69a6d6..40c30dbfd6 100644
--- a/src/swing/scala/swing/Panel.scala
+++ b/src/swing/scala/swing/Panel.scala
@@ -1,4 +1,4 @@
-package swing
+package scala.swing
abstract class Panel extends Container {
override lazy val peer: javax.swing.JPanel = new javax.swing.JPanel
diff --git a/src/swing/scala/swing/Publisher.scala b/src/swing/scala/swing/Publisher.scala
index 76023aadf3..28462055cc 100644
--- a/src/swing/scala/swing/Publisher.scala
+++ b/src/swing/scala/swing/Publisher.scala
@@ -1,4 +1,4 @@
-package swing
+package scala.swing
import scala.collection.mutable.HashSet
import event.Event
diff --git a/src/swing/scala/swing/Reactions.scala b/src/swing/scala/swing/Reactions.scala
index 9322c181a0..af2ca7e2fa 100644
--- a/src/swing/scala/swing/Reactions.scala
+++ b/src/swing/scala/swing/Reactions.scala
@@ -1,4 +1,4 @@
-package swing
+package scala.swing
import event.Event
diff --git a/src/swing/scala/swing/Reactor.scala b/src/swing/scala/swing/Reactor.scala
index 0867454f44..30606665ce 100644
--- a/src/swing/scala/swing/Reactor.scala
+++ b/src/swing/scala/swing/Reactor.scala
@@ -1,4 +1,4 @@
-package swing;
+package scala.swing;
trait Reactor {
val reactions = new Reactions
diff --git a/src/swing/scala/swing/ScrollPane.scala b/src/swing/scala/swing/ScrollPane.scala
index b6cb577175..50f9496cbb 100644
--- a/src/swing/scala/swing/ScrollPane.scala
+++ b/src/swing/scala/swing/ScrollPane.scala
@@ -1,4 +1,4 @@
-package swing;
+package scala.swing;
import javax.swing.JScrollPane
diff --git a/src/swing/scala/swing/SimpleGUIApplication.scala b/src/swing/scala/swing/SimpleGUIApplication.scala
index 208a85d1b4..efbe580116 100644
--- a/src/swing/scala/swing/SimpleGUIApplication.scala
+++ b/src/swing/scala/swing/SimpleGUIApplication.scala
@@ -1,4 +1,4 @@
-package swing
+package scala.swing
import javax.swing._
diff --git a/src/swing/scala/swing/Slider.scala b/src/swing/scala/swing/Slider.scala
index 10b56fe458..e4927709ca 100644
--- a/src/swing/scala/swing/Slider.scala
+++ b/src/swing/scala/swing/Slider.scala
@@ -1,4 +1,4 @@
-package swing
+package scala.swing
import event._
import Swing._
diff --git a/src/swing/scala/swing/Spreadsheet.scala b/src/swing/scala/swing/Spreadsheet.scala
index 62228890a3..9c175b1f3f 100644
--- a/src/swing/scala/swing/Spreadsheet.scala
+++ b/src/swing/scala/swing/Spreadsheet.scala
@@ -1,4 +1,4 @@
-package swing
+package scala.swing
import javax.swing.table.{AbstractTableModel, TableCellRenderer}
import javax.swing.event.{TableModelListener, TableModelEvent}
diff --git a/src/swing/scala/swing/SwingComponent.scala b/src/swing/scala/swing/SwingComponent.scala
index e035518a8c..28231eb9a5 100644
--- a/src/swing/scala/swing/SwingComponent.scala
+++ b/src/swing/scala/swing/SwingComponent.scala
@@ -1,4 +1,4 @@
-package swing
+package scala.swing
import javax.swing._
import java.awt._
diff --git a/src/swing/scala/swing/Table.scala b/src/swing/scala/swing/Table.scala
index a55c231fdf..7358928568 100644
--- a/src/swing/scala/swing/Table.scala
+++ b/src/swing/scala/swing/Table.scala
@@ -1,4 +1,4 @@
-package swing
+package scala.swing
import model.Matrix
import javax.swing._
diff --git a/src/swing/scala/swing/TextComponent.scala b/src/swing/scala/swing/TextComponent.scala
index ba535efb08..ae496a5ba5 100644
--- a/src/swing/scala/swing/TextComponent.scala
+++ b/src/swing/scala/swing/TextComponent.scala
@@ -1,4 +1,4 @@
-package swing
+package scala.swing
import javax.swing._
import javax.swing.text._
diff --git a/src/swing/scala/swing/TextField.scala b/src/swing/scala/swing/TextField.scala
index ab5043c1ac..7604d2719b 100644
--- a/src/swing/scala/swing/TextField.scala
+++ b/src/swing/scala/swing/TextField.scala
@@ -1,4 +1,4 @@
-package swing
+package scala.swing
import javax.swing._
import java.awt.event._
diff --git a/src/swing/scala/swing/event/ButtonPressed.scala b/src/swing/scala/swing/event/ButtonPressed.scala
index aa35f8ea72..b0d7dc05c9 100644
--- a/src/swing/scala/swing/event/ButtonPressed.scala
+++ b/src/swing/scala/swing/event/ButtonPressed.scala
@@ -1,3 +1,3 @@
-package swing.event
+package scala.swing.event
case class ButtonPressed(override val source: Button) extends ComponentEvent(source)
diff --git a/src/swing/scala/swing/event/CaretUpdate.scala b/src/swing/scala/swing/event/CaretUpdate.scala
index a16d2a532a..7bb6638ec9 100644
--- a/src/swing/scala/swing/event/CaretUpdate.scala
+++ b/src/swing/scala/swing/event/CaretUpdate.scala
@@ -1,3 +1,3 @@
-package swing.event
+package scala.swing.event
case class CaretUpdate(override val source: TextComponent) extends ComponentEvent(source)
diff --git a/src/swing/scala/swing/event/CellModified.scala b/src/swing/scala/swing/event/CellModified.scala
index 266c625cc7..7a42a82317 100644
--- a/src/swing/scala/swing/event/CellModified.scala
+++ b/src/swing/scala/swing/event/CellModified.scala
@@ -1,3 +1,3 @@
-package swing.event
+package scala.swing.event
//case class CellModified(source: Table, col: Int, row: int, value: String) extends Event(source)
diff --git a/src/swing/scala/swing/event/Event.scala b/src/swing/scala/swing/event/Event.scala
index 9df216819e..1fb2f472c3 100644
--- a/src/swing/scala/swing/event/Event.scala
+++ b/src/swing/scala/swing/event/Event.scala
@@ -1,3 +1,3 @@
-package swing.event
+package scala.swing.event
abstract class Event(val source: UIElement)
diff --git a/src/swing/scala/swing/event/TableChanged.scala b/src/swing/scala/swing/event/TableChanged.scala
index 5354219f7b..92a6cd5881 100644
--- a/src/swing/scala/swing/event/TableChanged.scala
+++ b/src/swing/scala/swing/event/TableChanged.scala
@@ -1,4 +1,4 @@
-package swing.event
+package scala.swing.event
case class TableChanged(override val source: Table, firstRow: Int, lastRow: Int, column: Int) extends ComponentEvent(source) {
println("table changed: "+source+"/"+firstRow+"-"+lastRow+":"+column)
diff --git a/src/swing/scala/swing/event/TableResized.scala b/src/swing/scala/swing/event/TableResized.scala
index a2b598ba53..c2d03dfa91 100644
--- a/src/swing/scala/swing/event/TableResized.scala
+++ b/src/swing/scala/swing/event/TableResized.scala
@@ -1,3 +1,3 @@
-package swing.event
+package scala.swing.event
case class TableResized(override val source: Table) extends ComponentEvent(source)
diff --git a/src/swing/scala/swing/event/TextModified.scala b/src/swing/scala/swing/event/TextModified.scala
index 7ea4ff6b1c..b40bcc5a0e 100644
--- a/src/swing/scala/swing/event/TextModified.scala
+++ b/src/swing/scala/swing/event/TextModified.scala
@@ -1,3 +1,3 @@
-package swing.event
+package scala.swing.event
//case class TextModified(override val source: TextComponent) extends ContentModified(source)
diff --git a/src/swing/scala/swing/event/WindowActivated.scala b/src/swing/scala/swing/event/WindowActivated.scala
index b2a9095fa6..c2ed2f688a 100644
--- a/src/swing/scala/swing/event/WindowActivated.scala
+++ b/src/swing/scala/swing/event/WindowActivated.scala
@@ -1,3 +1,3 @@
-package swing.event
+package scala.swing.event
case class WindowActivated(override val source: Frame) extends WindowEvent(source)
diff --git a/src/swing/scala/swing/event/WindowClosed.scala b/src/swing/scala/swing/event/WindowClosed.scala
index f2c50bf146..d719e476f1 100644
--- a/src/swing/scala/swing/event/WindowClosed.scala
+++ b/src/swing/scala/swing/event/WindowClosed.scala
@@ -1,3 +1,3 @@
-package swing.event
+package scala.swing.event
case class WindowClosed(override val source: Frame) extends WindowEvent(source)
diff --git a/src/swing/scala/swing/event/WindowClosing.scala b/src/swing/scala/swing/event/WindowClosing.scala
index 309516fd89..5f753651cd 100644
--- a/src/swing/scala/swing/event/WindowClosing.scala
+++ b/src/swing/scala/swing/event/WindowClosing.scala
@@ -1,3 +1,3 @@
-package swing.event
+package scala.swing.event
case class WindowClosing(override val source: Frame) extends WindowEvent(source)
diff --git a/src/swing/scala/swing/event/WindowDeactivated.scala b/src/swing/scala/swing/event/WindowDeactivated.scala
index d012167f98..ca5f330073 100644
--- a/src/swing/scala/swing/event/WindowDeactivated.scala
+++ b/src/swing/scala/swing/event/WindowDeactivated.scala
@@ -1,3 +1,3 @@
-package swing.event
+package scala.swing.event
case class WindowDeactivated(override val source: Frame) extends WindowEvent(source)
diff --git a/src/swing/scala/swing/event/WindowDeiconified.scala b/src/swing/scala/swing/event/WindowDeiconified.scala
index 3820b67024..828a65ae6e 100644
--- a/src/swing/scala/swing/event/WindowDeiconified.scala
+++ b/src/swing/scala/swing/event/WindowDeiconified.scala
@@ -1,3 +1,3 @@
-package swing.event
+package scala.swing.event
case class WindowDeiconified(override val source: Frame) extends WindowEvent(source)
diff --git a/src/swing/scala/swing/event/WindowEvent.scala b/src/swing/scala/swing/event/WindowEvent.scala
index dd28f822ed..13bf3b1de0 100644
--- a/src/swing/scala/swing/event/WindowEvent.scala
+++ b/src/swing/scala/swing/event/WindowEvent.scala
@@ -1,3 +1,3 @@
-package swing.event
+package scala.swing.event
abstract class WindowEvent(source: Frame) extends Event(source)
diff --git a/src/swing/scala/swing/event/WindowIconified.scala b/src/swing/scala/swing/event/WindowIconified.scala
index 1ca67dc126..1a18d7179c 100644
--- a/src/swing/scala/swing/event/WindowIconified.scala
+++ b/src/swing/scala/swing/event/WindowIconified.scala
@@ -1,3 +1,3 @@
-package swing.event
+package scala.swing.event
case class WindowIconified(override val source: Frame) extends WindowEvent(source)
diff --git a/src/swing/scala/swing/event/WindowOpened.scala b/src/swing/scala/swing/event/WindowOpened.scala
index b1f8a3a7d5..e6f45dc747 100644
--- a/src/swing/scala/swing/event/WindowOpened.scala
+++ b/src/swing/scala/swing/event/WindowOpened.scala
@@ -1,3 +1,3 @@
-package swing.event
+package scala.swing.event
case class WindowOpened(override val source: Frame) extends WindowEvent(source)
diff --git a/src/swing/scala/swing/model/Matrix.scala b/src/swing/scala/swing/model/Matrix.scala
index 9bd4c9c4d0..6342d65dc7 100644
--- a/src/swing/scala/swing/model/Matrix.scala
+++ b/src/swing/scala/swing/model/Matrix.scala
@@ -1,4 +1,4 @@
-package swing.model
+package scala.swing.model
trait Matrix[A]extends Function2[Int, Int, A] {
diff --git a/src/swing/scala/swing/test/CelsiusConverter.scala b/src/swing/scala/swing/test/CelsiusConverter.scala
index 493a901890..b1aef5f077 100644
--- a/src/swing/scala/swing/test/CelsiusConverter.scala
+++ b/src/swing/scala/swing/test/CelsiusConverter.scala
@@ -1,4 +1,4 @@
-package swing.test
+package scala.swing.test
import swing._
import event._
diff --git a/src/swing/scala/swing/test/CelsiusConverter2.scala b/src/swing/scala/swing/test/CelsiusConverter2.scala
index 5df70adcb0..d19ce9e4e4 100644
--- a/src/swing/scala/swing/test/CelsiusConverter2.scala
+++ b/src/swing/scala/swing/test/CelsiusConverter2.scala
@@ -1,4 +1,4 @@
-package swing.test
+package scala.swing.test
import swing._
import event._
diff --git a/src/swing/scala/swing/test/HelloWorld.scala b/src/swing/scala/swing/test/HelloWorld.scala
index 4cbf254bb2..366252c3c9 100644
--- a/src/swing/scala/swing/test/HelloWorld.scala
+++ b/src/swing/scala/swing/test/HelloWorld.scala
@@ -1,4 +1,4 @@
-package swing.test
+package scala.swing.test
import swing._
diff --git a/src/swing/scala/swing/test/SwingApp.scala b/src/swing/scala/swing/test/SwingApp.scala
index b66d0a0e48..3be407411a 100644
--- a/src/swing/scala/swing/test/SwingApp.scala
+++ b/src/swing/scala/swing/test/SwingApp.scala
@@ -1,4 +1,4 @@
-package swing.test
+package scala.swing.test
import swing._
import swing.event._
diff --git a/test/files/pos/t0674.scala b/test/files/pos/t0674.scala
new file mode 100644
index 0000000000..9f7a78dda3
--- /dev/null
+++ b/test/files/pos/t0674.scala
@@ -0,0 +1,22 @@
+object Test extends Application {
+println(
+for(a <- Some(1);
+ b <- Some(2);
+ c <- Some(3);
+ d <- Some(4);
+ e <- Some(5);
+ f <- Some(6);
+ g <- Some(7);
+ h <- Some(8);
+ i <- Some(9);
+ j <- Some(10);
+ k <- Some(11);
+ l <- Some(12);
+ m <- Some(13);
+ n <- Some(14);
+ o <- Some(15);
+ p <- Some(16);
+ q <- Some(17);
+ r <- Some(18);
+ s <- Some(19)) yield a)
+}