| [#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 |