| [#374] | project: compiler | priority: high | category: bug | |
|---|---|---|---|---|
| submitter | assigned to | status | date submitted | |
| Stephane | _ | not repro | 2004-11-05 16:55:49.0 | |
| subject | failure to compute least upper bound | |||
| code |
object tokens extends Enumeration {
type Token = Value;
val BAD = Value("<bad>");
val IDENT = Value("ident");
val NAME = Value("name");
}
object test extends Object with Application {
import tokens._;
val reserved = new scala.collection.mutable.HashMap[String, Token]();
if (true) {
reserved.get("a") match {
case None => IDENT
case Some(tk) => tk
}
}
else
BAD
} |
|||
| what happened | |
|||
| what expected | Silently compiles! Workaround 1: replace "import tokens._;" with "import tokens.Token; val BAD = tokens.BAD; ..." in main object "test". Workaround 2: declare the object "tokens" inside the main object "test" ! | |||
| [back to overview] | ||||
| Stephane edited on 2004-11-05 16:56:47.0 |
| Stephane edited on 2004-11-05 16:57:12.0 |
| Stephane edited on 2004-11-05 16:57:31.0 |
| Martin edited on 2004-11-19 13:44:39.0 |
The lub fails on:
lub[The problem seems to be that explicit outer inserts a whereas the rest of the system sees a The two are not compatible. That's why the lub fails. |
| Lex edited on 2006-03-28 14:17:31.0 |
| It compiles silently as of 2.1.0. I added an "extends Object" before the "with Application". |
| Nikolay edited on 2006-09-13 09:14:20.0 |
| Must have been fixed loooong time ago |