summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/Typers.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2007-05-29 17:43:16 +0000
committerMartin Odersky <odersky@gmail.com>2007-05-29 17:43:16 +0000
commit57a569ba3cf5a528a6f88bdbef1fc76ca2771941 (patch)
tree3e0cb8d511688fec4b7406c895c786ee38173df4 /src/compiler/scala/tools/nsc/typechecker/Typers.scala
parentdcabbf90df9a0adb1721ce50bc21ee3c26ec66eb (diff)
downloadscala-57a569ba3cf5a528a6f88bdbef1fc76ca2771941.tar.gz
scala-57a569ba3cf5a528a6f88bdbef1fc76ca2771941.tar.bz2
scala-57a569ba3cf5a528a6f88bdbef1fc76ca2771941.zip
fixed bug1092
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Typers.scala')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Typers.scala50
1 files changed, 23 insertions, 27 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
index 3e87dbcc7d..93de2f5cb1 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
@@ -1106,37 +1106,33 @@ trait Typers requires Analyzer {
val superClazz = superConstr.symbol.owner
if (!superClazz.hasFlag(JAVA)) {
val superParamAccessors = superClazz.constrParamAccessors
- if (superParamAccessors.length != superArgs.length) {
- Console.println("" + superClazz + ":" +
- superClazz.info.decls.toList.filter(.hasFlag(PARAMACCESSOR)))
- assert(false, "mismatch: " + superParamAccessors +
- ";" + rhs + ";" + superClazz.info.decls)//debug
- }
- List.map2(superParamAccessors, superArgs) { (superAcc, superArg) =>
- superArg match {
- case Ident(name) =>
- if (vparamss.exists(.exists(vp => vp.symbol == superArg.symbol))) {
- var alias = superAcc.initialize.alias
- if (alias == NoSymbol)
- alias = superAcc.getter(superAcc.owner)
- if (alias != NoSymbol &&
- superClazz.info.nonPrivateMember(alias.name) != alias)
- alias = NoSymbol
- if (alias != NoSymbol) {
- var ownAcc = clazz.info.decl(name).suchThat(.hasFlag(PARAMACCESSOR))
- if ((ownAcc hasFlag ACCESSOR) && !(ownAcc hasFlag DEFERRED))
- ownAcc = ownAcc.accessed
- if (!ownAcc.isVariable && !alias.accessed.isVariable) {
- if (settings.debug.value)
- log("" + ownAcc + " has alias "+alias + alias.locationString);//debug
- ownAcc.asInstanceOf[TermSymbol].setAlias(alias)
+ if (superParamAccessors.length == superArgs.length) {
+ List.map2(superParamAccessors, superArgs) { (superAcc, superArg) =>
+ superArg match {
+ case Ident(name) =>
+ if (vparamss.exists(.exists(vp => vp.symbol == superArg.symbol))) {
+ var alias = superAcc.initialize.alias
+ if (alias == NoSymbol)
+ alias = superAcc.getter(superAcc.owner)
+ if (alias != NoSymbol &&
+ superClazz.info.nonPrivateMember(alias.name) != alias)
+ alias = NoSymbol
+ if (alias != NoSymbol) {
+ var ownAcc = clazz.info.decl(name).suchThat(.hasFlag(PARAMACCESSOR))
+ if ((ownAcc hasFlag ACCESSOR) && !(ownAcc hasFlag DEFERRED))
+ ownAcc = ownAcc.accessed
+ if (!ownAcc.isVariable && !alias.accessed.isVariable) {
+ if (settings.debug.value)
+ log("" + ownAcc + " has alias "+alias + alias.locationString);//debug
+ ownAcc.asInstanceOf[TermSymbol].setAlias(alias)
+ }
}
}
- }
- case _ =>
+ case _ =>
+ }
+ ()
}
}
- ()
}
}
}