summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2006-04-25 18:26:20 +0000
committerMartin Odersky <odersky@gmail.com>2006-04-25 18:26:20 +0000
commit692ce7bc6b15ce5fffee8709feafd6b1cd80ad0e (patch)
tree0469566b899005107db0bde2a4f03ed22a3ed213
parentb6f7fcc730d306504b5da28b7924ccf48f7e8b91 (diff)
downloadscala-692ce7bc6b15ce5fffee8709feafd6b1cd80ad0e.tar.gz
scala-692ce7bc6b15ce5fffee8709feafd6b1cd80ad0e.tar.bz2
scala-692ce7bc6b15ce5fffee8709feafd6b1cd80ad0e.zip
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/SyntheticMethods.scala2
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Typers.scala3
-rw-r--r--test/files/neg/bug576.check4
-rw-r--r--test/files/neg/bug576.scala20
4 files changed, 28 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/SyntheticMethods.scala b/src/compiler/scala/tools/nsc/typechecker/SyntheticMethods.scala
index 39db65428c..306dad37c6 100644
--- a/src/compiler/scala/tools/nsc/typechecker/SyntheticMethods.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/SyntheticMethods.scala
@@ -79,7 +79,7 @@ trait SyntheticMethods requires Analyzer {
}
def forwardingMethod(name: Name): Tree = {
- val target = getMember(ScalaRunTimeModule, "_" + name).initialize;
+ val target = getMember(ScalaRunTimeModule, "_" + name);
val method = syntheticMethod(
name, 0, MethodType(target.tpe.paramTypes.tail, target.tpe.resultType));
typed(DefDef(method, vparamss =>
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
index 5a150c3dcd..68763b2a09 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
@@ -58,6 +58,7 @@ trait Typers requires Analyzer {
private def inferView(pos: int, from: Type, to: Type, reportAmbiguous: boolean): Tree = {
if (settings.debug.value) log("infer view from "+from+" to "+to);//debug
+ assert(!(from <:< to))//debug
if (phase.erasedTypes) EmptyTree
else from match {
case MethodType(_, _) => EmptyTree
@@ -1113,6 +1114,8 @@ trait Typers requires Analyzer {
context.reportGeneralErrors = false
typedApply(fun, args)
} catch {
+ case ex: CyclicReference =>
+ throw ex
case ex: TypeError =>
val Select(qual, name) = fun
val args1 = tryTypedArgs(args map UnTyper.apply)
diff --git a/test/files/neg/bug576.check b/test/files/neg/bug576.check
new file mode 100644
index 0000000000..0182398cf1
--- /dev/null
+++ b/test/files/neg/bug576.check
@@ -0,0 +1,4 @@
+bug576.scala:14 error: overloaded method insert needs result type
+ if (true) sibling.insert(node);
+ ^
+one error found
diff --git a/test/files/neg/bug576.scala b/test/files/neg/bug576.scala
new file mode 100644
index 0000000000..2d9cf01910
--- /dev/null
+++ b/test/files/neg/bug576.scala
@@ -0,0 +1,20 @@
+package lampion.collections;
+
+abstract class BaseListXXX {
+ type Node <: BaseNode;
+ abstract class BaseNode {
+ }
+}
+trait PriorityTreeXXX extends BaseListXXX {
+ type Node <: BasicTreeNode;
+
+ trait BasicTreeNode extends BaseNode {
+ def sibling: Node = null;
+ def insert(dir : Int, node : Node) = {
+ if (true) sibling.insert(node);
+ //else insert(node);
+
+ }
+ def insert(node : Node) : Unit = {}
+ }
+}