summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2006-11-17 18:01:11 +0000
committerMartin Odersky <odersky@gmail.com>2006-11-17 18:01:11 +0000
commit5131de0a0b08f893f6558ceb7dd348cb87ba0ff4 (patch)
treec796ac53bbf323913d15d1ff93d3176bf0a75fa8
parentf6183ef4b030030606f46fe2463d325e39ae6174 (diff)
downloadscala-5131de0a0b08f893f6558ceb7dd348cb87ba0ff4.tar.gz
scala-5131de0a0b08f893f6558ceb7dd348cb87ba0ff4.tar.bz2
scala-5131de0a0b08f893f6558ceb7dd348cb87ba0ff4.zip
fixed syntax error in Infer
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Infer.scala2
-rw-r--r--test/files/pos/bug807.scala45
2 files changed, 46 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Infer.scala b/src/compiler/scala/tools/nsc/typechecker/Infer.scala
index 1a4c679bca..74436c9bed 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Infer.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Infer.scala
@@ -523,7 +523,7 @@ trait Infer requires Analyzer {
try {
val uninstantiated = new ListBuffer[Symbol]
val targs = methTypeArgs(undetparams, formals, restpe, argtpes, pt, uninstantiated)
- exprTypeArgs(uninstantiated.toList, restpe.subst(undetparams, targs), pt) ne null) &&
+ (exprTypeArgs(uninstantiated.toList, restpe.subst(undetparams, targs), pt) ne null) &&
isWithinBounds(undetparams, targs)
} catch {
case ex: NoInstance => false
diff --git a/test/files/pos/bug807.scala b/test/files/pos/bug807.scala
new file mode 100644
index 0000000000..0eeb92ea24
--- /dev/null
+++ b/test/files/pos/bug807.scala
@@ -0,0 +1,45 @@
+trait Matcher {
+ trait Link {
+ type Self <: Link;
+ type Match <: Link { type Match = Link.this.Self; }
+ }
+ trait HasLinks {
+ def link(b : Boolean) : Link = null;
+ }
+
+}
+trait BraceMatcher extends Matcher {
+ trait BracePair {
+ trait BraceLink extends Link;
+ trait OpenLink extends BraceLink {
+ type Self = OpenLink;
+ type Match = CloseLink;
+ }
+ trait CloseLink extends BraceLink {
+ type Self = CloseLink;
+ type Match = OpenLink;
+ }
+ }
+}
+trait IfElseMatcher extends BraceMatcher {
+ trait IfElseLink extends Link;
+ trait IfLink extends IfElseLink {
+ type Self = IfLink;
+ type Match = ElseImpl;
+ }
+ trait ElseImpl extends IfElseLink with HasLinks {
+ type Self = ElseImpl;
+ type Match = IfLink;
+ override def link(b : Boolean) = this;
+ }
+ val parenPair : BracePair;
+ trait IfWithParenImpl extends HasLinks {
+ object ifLink extends IfLink;
+ object openParen extends parenPair.OpenLink;
+ override def link(b : Boolean): Link = b match {
+ case true => ifLink;
+ case false => openParen;
+ }
+ }
+}
+