diff options
author | Martin Odersky <odersky@gmail.com> | 2007-01-30 15:40:23 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2007-01-30 15:40:23 +0000 |
commit | 2aee8120ee96800ba607e12079b4d3adb639be5c (patch) | |
tree | 4ef6a4659e812ab4ac2cfd8f7aedfc0416af13ff /src/compiler/scala/tools/nsc/typechecker/Typers.scala | |
parent | 4a64ac9c7b94b249087cd25712dfb547013f5ed4 (diff) | |
download | scala-2aee8120ee96800ba607e12079b4d3adb639be5c.tar.gz scala-2aee8120ee96800ba607e12079b4d3adb639be5c.tar.bz2 scala-2aee8120ee96800ba607e12079b4d3adb639be5c.zip |
added subClasses method to symbols.
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Typers.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Typers.scala | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala index a90472d56b..e13bc27aff 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala @@ -774,9 +774,9 @@ trait Typers requires Analyzer { def validateParentClass(parent: Tree, superclazz: Symbol): unit = { if (!parent.tpe.isError) { val psym = parent.tpe.symbol.initialize - if (!psym.isClass) + if (!psym.isClass) { error(parent.pos, "class type expected") - else if (psym != superclazz) + } else if (psym != superclazz) { if (psym.isTrait) { val ps = psym.info.parents if (!ps.isEmpty && !superclazz.isSubClass(ps.head.symbol)) @@ -788,11 +788,14 @@ trait Typers requires Analyzer { }else { error(parent.pos, ""+psym+" needs to be a trait be mixed in") } - else if (psym hasFlag FINAL) + } else if (psym hasFlag FINAL) { error(parent.pos, "illegal inheritance from final class") - else if (!phase.erasedTypes && psym.isSealed && - context.unit.source.file != psym.sourceFile) - error(parent.pos, "illegal inheritance from sealed "+psym) + } else if (psym.isSealed && !phase.erasedTypes) { + if (context.unit.source.file != psym.sourceFile) + error(parent.pos, "illegal inheritance from sealed "+psym) + else + psym addSubClass context.owner + } if (!(selfType <:< parent.tpe.typeOfThis) && !phase.erasedTypes) { //Console.println(context.owner);//DEBUG //Console.println(context.owner.unsafeTypeParams);//DEBUG |