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