| [#868] | project: compiler | priority: low | category: bug | |
|---|---|---|---|---|
| submitter | assigned to | status | date submitted | |
| Sean | Martin | fixed | 2006-12-17 16:31:29.0 | |
| subject | explicit outer/pattern matching crash | |||
| code |
package test;
trait Scanner {
type TreeNode <: TreeNodeImpl;
trait TreeNodeImpl;
type Braces <: BracesImpl;
trait BracesImpl {
type Brace <: TreeNode with BraceImpl;
trait BraceImpl extends TreeNodeImpl;
type Close <: Brace;
trait ForFile;
val forFile : ForFile;
}
type Parens <: Braces with ParensImpl;
trait ParensImpl extends BracesImpl {
type Close <: Brace with CloseImpl;
trait CloseImpl;
}
val parens : Parens;
type Curlies <: Braces with CurliesImpl;
trait CurliesImpl extends BracesImpl {
type Close <: Brace with CloseImpl;
trait CloseImpl;
}
val curlies : Curlies;
def xxx(b : Boolean) = b match {
case true => parens.forFile;
case false => curlies.forFile;
}
}
|
|||
| what happened | |
|||
| what expected | ||||
| [back to overview] | ||||
| Burak edited on 2007-01-19 16:06:24.0 |
| Burak edited on 2007-01-19 16:16:33.0 |
assigned to Martin, seems again like a lub/refinement<->subtyping asynchrony problem. checker returns the following
lamppc31:/localhome/buraq/svn/scala.trunk> build/quick/bin/scalac -d /tmp /tmp/ga.scala -print:expl -check:refcheck
[consistency check at start of phase refchecks]
/tmp/ga.scala:27: error: **** ERROR DURING INTERNAL CHECKING ****
type mismatch;
found : Scanner.this.parens.ForFile
required: Scanner.this.Braces{type Close <: this.Brace with Scanner.this.TreeNode with this.BraceImpl}#ForFile
case true => parens.forFile;
^
/tmp/ga.scala:28: error: **** ERROR DURING INTERNAL CHECKING ****
type mismatch;
found : Scanner.this.curlies.ForFile
required: Scanner.this.Braces{type Close <: this.Brace with Scanner.this.TreeNode with this.BraceImpl}#ForFile
case false => curlies.forFile;
^
two errors found
|
| Burak edited on 2007-01-19 16:17:13.0 |
| Martin edited on 2007-03-08 11:29:53.0 |