summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBurak Emir <emir@epfl.ch>2005-12-15 10:12:11 +0000
committerBurak Emir <emir@epfl.ch>2005-12-15 10:12:11 +0000
commitb68121ff0e8037e49455634b20c3c5d56b4df91a (patch)
tree17556842a9498708ab5207f6f06ce847616f307b
parentf88572e6dde3e01bbf9a504fc7350cc9f770f05c (diff)
downloadscala-b68121ff0e8037e49455634b20c3c5d56b4df91a.tar.gz
scala-b68121ff0e8037e49455634b20c3c5d56b4df91a.tar.bz2
scala-b68121ff0e8037e49455634b20c3c5d56b4df91a.zip
slight change, when adding Iterable, inserting ...
slight change, when adding Iterable, inserting a space now fixes bug #508
-rw-r--r--sources/scala/tools/scalac/transformer/matching/PatternNode.scala35
1 files changed, 30 insertions, 5 deletions
diff --git a/sources/scala/tools/scalac/transformer/matching/PatternNode.scala b/sources/scala/tools/scalac/transformer/matching/PatternNode.scala
index 37e1fdbd33..e42ea061a8 100644
--- a/sources/scala/tools/scalac/transformer/matching/PatternNode.scala
+++ b/sources/scala/tools/scalac/transformer/matching/PatternNode.scala
@@ -112,6 +112,7 @@ package scala.tools.scalac.transformer.matching {
* "q matches" => "p matches"
*/
def isSameAs(q: PatternNode): boolean = {
+ //Console.println("isSameAs("+this+","+q+")");
this match {
case ConstrPat(_) =>
q match {
@@ -135,6 +136,8 @@ package scala.tools.scalac.transformer.matching {
/** returns true if "q matches" => "p matches"
*/
def subsumes(q:PatternNode): Boolean = {
+ //Console.print("subsumes("+this+","+q+")");
+ /* val res = */
this match {
case DefaultPat() =>
q match {
@@ -160,23 +163,45 @@ package scala.tools.scalac.transformer.matching {
case ConstantPat(pval) =>
q match {
case ConstantPat(qval) =>
- pval.equals(qval);
+ pval == qval;
case _ =>
false;
}
case VariablePat(tree) =>
q match {
case VariablePat(other) =>
- (tree.symbol() != null) &&
- (!tree.symbol().isNone()) &&
- (!tree.symbol().isError()) &&
- (tree.symbol() == other.symbol());
+ val treesym = tree match {
+ case _:Tree.Ident => tree.symbol();
+ case _:Tree.Apply => TreeInfo.methSymbol( tree );
+ }
+ val othersym = tree match {
+ case _:Tree.Ident => tree.symbol();
+ case _:Tree.Apply => TreeInfo.methSymbol( tree );
+ }
+/*
+ Console.println("VPat, getc = "+tree.getClass());
+ Console.println("[tree.symbol() = "+tree.symbol());
+ if (tree.symbol() != null) {
+ Console.println("[other.symbol() = "+other.symbol());
+ Console.println("[ ==? "+(tree.symbol() == other.symbol()));
+
+ Console.println("\n\n[treesym != null? "+ tree.symbol() != null);
+ Console.println("\n\n[!treesym.isNone? "+ !tree.symbol().isNone());
+ Console.println("\n\n[!treesym.isError? "+ !tree.symbol().isError());
+ }
+*/
+ (treesym != null) &&
+ (!treesym.isNone()) &&
+ (!treesym.isError()) &&
+ (treesym == othersym);
case _ =>
false;
}
case _ =>
false;
}
+ /*Console.println("="+res);
+ return res;*/
}
override def toString(): String = {