Aladdin - Scala Bugtracking
[#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
build/quick/bin/scalac -d ../bin test/Scanner.scala
failed with type mismatch;
 found   : Scanner.this.curlies.ForFile
 required: Scanner.this.Braces{type Close <: this.Brace with Scanner.this.TreeNode with this.BraceImpl}#ForFi\
le on: temp0.==(false).&&({
  exit(Scanner.this.curlies().forFile());
  true
})
what expected
[back to overview]
Changes of this bug report
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