summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBurak Emir <emir@epfl.ch>2007-08-06 17:14:30 +0000
committerBurak Emir <emir@epfl.ch>2007-08-06 17:14:30 +0000
commit6b182eb90343a4b52d2ad1e70cee889fb622e71d (patch)
treee4508fcaaab49139d60a85097a04f0cc23a9b885
parentd5dceac54c9023c7e886c8199fa8e000b9b1e99b (diff)
downloadscala-6b182eb90343a4b52d2ad1e70cee889fb622e71d.tar.gz
scala-6b182eb90343a4b52d2ad1e70cee889fb622e71d.tar.bz2
scala-6b182eb90343a4b52d2ad1e70cee889fb622e71d.zip
use termSymbol to detect Ident(object) pattern,...
use termSymbol to detect Ident(object) pattern, marked problematic outer-tests
-rw-r--r--src/compiler/scala/tools/nsc/matching/ParallelMatching.scala24
-rw-r--r--src/compiler/scala/tools/nsc/matching/PatternMatchers.scala9
-rw-r--r--src/library/scala/xml/dtd/ContentModel.scala4
-rw-r--r--src/library/scala/xml/dtd/ElementValidator.scala2
4 files changed, 26 insertions, 13 deletions
diff --git a/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala b/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala
index 57c389b25a..5df7b3736d 100644
--- a/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala
+++ b/src/compiler/scala/tools/nsc/matching/ParallelMatching.scala
@@ -85,8 +85,10 @@ trait ParallelMatching {
case Ident(nme.WILDCARD) =>
isFlatCases(col.tail) // treat col.tail specially?
case i @ Ident(n) => // n ne nme.WILDCARD
+ assert(false)
( (i.symbol.flags & Flags.CASE) != 0) && directSubtype( i.tpe ) && isFlatCases(col.tail)
case s @ Select(_,_) => // i.e. scala.Nil
+ assert(false)
( (s.symbol.flags & Flags.CASE) != 0) && directSubtype( s.tpe ) && isFlatCases(col.tail)
case p =>
//Console.println(p.getClass)
@@ -860,16 +862,20 @@ object Rep {
case o @ Ident(n) =>
if (n != nme.WILDCARD) {
- //Console.println("/'''''''''''' 1"+o.tpe)
- //Console.println("/'''''''''''' 2"+o.symbol)
- //Console.println("/'''''''''''' 3"+o.symbol.tpe)
- //Console.println("/'''''''''''' 4"+o.symbol.tpe.prefix)
- //Console.println("/'''''''''''' 5"+o.symbol.tpe.prefix.isStable)
-
+ /*
+ Console.println("/'''''''''''' 1"+o.tpe)
+ Console.println("/'''''''''''' 2"+o.symbol)
+ Console.println("/'''''''''''' 3"+o.symbol.tpe)
+ Console.println("/'''''''''''' 4"+o.symbol.tpe.prefix)
+ Console.println("/'''''''''''' 5"+o.symbol.tpe.prefix.isStable)
+
+ Console.println("/'''''''''''' 6"+(o.symbol.tpe.typeSymbol hasFlag (Flags.CASE)))
+ Console.println("/'''''''''''' 7"+(o.symbol.tpe.termSymbol.hasFlag (Flags.CASE)))
+ */
val stpe =
- if (o.tpe./*term?*/symbol.isModule)
- singleType(o.tpe.prefix, o.symbol)
- else
+ if (o.tpe.termSymbol.isModule) {
+ singleType(o.tpe.prefix, o.symbol)
+ } else
singleType(NoPrefix, o.symbol)
val p = Ident(nme.WILDCARD) setType stpe
diff --git a/src/compiler/scala/tools/nsc/matching/PatternMatchers.scala b/src/compiler/scala/tools/nsc/matching/PatternMatchers.scala
index af294ce550..613880f004 100644
--- a/src/compiler/scala/tools/nsc/matching/PatternMatchers.scala
+++ b/src/compiler/scala/tools/nsc/matching/PatternMatchers.scala
@@ -202,7 +202,14 @@ trait PatternMatchers { self: transform.ExplicitOuter with PatternNodes with Par
nParallel += 1
return null
} catch {
- case e => return e // fallback
+ case e =>
+ /*
+ Console.println("!!!unit: "+cunit)
+ Console.println("!!!selector.pos: "+selector.pos)
+ cunit.warning(selector.pos, "going gaga here")
+ Console.println("!!!problem: "+e.getMessage)
+ */
+ return e // fallback
// non-fallback:
//case e: CantHandle => return e
diff --git a/src/library/scala/xml/dtd/ContentModel.scala b/src/library/scala/xml/dtd/ContentModel.scala
index 8b0b6e7ae3..740c9df175 100644
--- a/src/library/scala/xml/dtd/ContentModel.scala
+++ b/src/library/scala/xml/dtd/ContentModel.scala
@@ -43,7 +43,7 @@ object ContentModel extends WordExp {
while (it.hasNext) traverse(it.next)
}
def traverse(r: RegExp) {
- r match {
+ r match { // !!! check for match translation problem
case Letter(ElemName(name)) => s += name
case Star( x @ _ ) => traverse( x ) // bug if x@_*
case Sequ( xs @ _* ) => traverse1(xs)
@@ -83,7 +83,7 @@ object ContentModel extends WordExp {
c.toString(sb)
}
- def toString(r: RegExp, sb:StringBuilder): StringBuilder = r match {
+ def toString(r: RegExp, sb:StringBuilder): StringBuilder = r match { // !!! check for match translation problem
case Eps =>
sb
case Sequ(rs @ _*) =>
diff --git a/src/library/scala/xml/dtd/ElementValidator.scala b/src/library/scala/xml/dtd/ElementValidator.scala
index a841e5e76a..08d5cb2e1e 100644
--- a/src/library/scala/xml/dtd/ElementValidator.scala
+++ b/src/library/scala/xml/dtd/ElementValidator.scala
@@ -133,7 +133,7 @@ class ElementValidator() extends Function1[Node,Boolean] {
var res = false;
val jt = branches.elements;
while(jt.hasNext && !res)
- jt.next match {
+ jt.next match { // !!! check for match translation problem
case ContentModel.Letter(ElemName(Key)) => res = true;
case _ =>
}