aboutsummaryrefslogtreecommitdiff
path: root/compiler/src/dotty/tools/dotc/typer
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2017-03-31 15:01:06 +0200
committerMartin Odersky <odersky@gmail.com>2017-04-11 09:33:12 +0200
commit130069ad787ca20e960d57e11e6f4911e3bed5a0 (patch)
tree01bd59f3538ff2a90ee67377166c65869d733c4f /compiler/src/dotty/tools/dotc/typer
parent24f40bc76493410f2688c8a74028ecb1db7306bf (diff)
downloaddotty-130069ad787ca20e960d57e11e6f4911e3bed5a0.tar.gz
dotty-130069ad787ca20e960d57e11e6f4911e3bed5a0.tar.bz2
dotty-130069ad787ca20e960d57e11e6f4911e3bed5a0.zip
Cleanups of NameOps
Remove unused functionality
Diffstat (limited to 'compiler/src/dotty/tools/dotc/typer')
-rw-r--r--compiler/src/dotty/tools/dotc/typer/Namer.scala12
-rw-r--r--compiler/src/dotty/tools/dotc/typer/RefChecks.scala15
2 files changed, 11 insertions, 16 deletions
diff --git a/compiler/src/dotty/tools/dotc/typer/Namer.scala b/compiler/src/dotty/tools/dotc/typer/Namer.scala
index 78a1cd9c3..19b6dfa71 100644
--- a/compiler/src/dotty/tools/dotc/typer/Namer.scala
+++ b/compiler/src/dotty/tools/dotc/typer/Namer.scala
@@ -6,6 +6,7 @@ import core._
import ast._
import Trees._, Constants._, StdNames._, Scopes._, Denotations._, Comments._
import Contexts._, Symbols._, Types._, SymDenotations._, Names._, NameOps._, Flags._, Decorators._
+import NameKinds.DefaultGetterName
import ast.desugar, ast.desugar._
import ProtoTypes._
import util.Positions._
@@ -1012,12 +1013,8 @@ class Namer { typer: Typer =>
* the corresponding parameter where bound parameters are replaced by
* Wildcards.
*/
- def rhsProto = {
- val name = sym.asTerm.name
- val idx = name.defaultGetterIndex
- if (idx < 0) WildcardType
- else {
- val original = name.defaultGetterToMethod
+ def rhsProto = sym.asTerm.name collect {
+ case DefaultGetterName(original, idx) =>
val meth: Denotation =
if (original.isConstructorName && (sym.owner is ModuleClass))
sym.owner.companionClass.info.decl(nme.CONSTRUCTOR)
@@ -1035,8 +1032,7 @@ class Namer { typer: Typer =>
paramProto(defaultAlts.head.info.widen.paramInfoss, idx)
else
WildcardType
- }
- }
+ } getOrElse WildcardType
// println(s"final inherited for $sym: ${inherited.toString}") !!!
// println(s"owner = ${sym.owner}, decls = ${sym.owner.info.decls.show}")
diff --git a/compiler/src/dotty/tools/dotc/typer/RefChecks.scala b/compiler/src/dotty/tools/dotc/typer/RefChecks.scala
index 49bc24c80..4715873e5 100644
--- a/compiler/src/dotty/tools/dotc/typer/RefChecks.scala
+++ b/compiler/src/dotty/tools/dotc/typer/RefChecks.scala
@@ -6,6 +6,7 @@ import core._
import config._
import Symbols._, SymDenotations._, Types._, Contexts._, Decorators._, Flags._, Names._, NameOps._
import StdNames._, Denotations._, Scopes._, Constants.Constant, SymUtils._
+import NameKinds.DefaultGetterName
import Annotations._
import util.Positions._
import scala.collection.{ mutable, immutable }
@@ -24,12 +25,8 @@ object RefChecks {
import reporting.diagnostic.Message
import reporting.diagnostic.messages._
-
- private def isDefaultGetter(name: Name): Boolean =
- name.isTermName && name.asTermName.defaultGetterIndex >= 0
-
private val defaultMethodFilter = new NameFilter {
- def apply(pre: Type, name: Name)(implicit ctx: Context): Boolean = isDefaultGetter(name)
+ def apply(pre: Type, name: Name)(implicit ctx: Context): Boolean = name.is(DefaultGetterName)
}
/** Only one overloaded alternative is allowed to define default arguments */
@@ -45,7 +42,9 @@ object RefChecks {
if defaultGetterClass.isClass
) {
val defaultGetterNames = defaultGetterClass.asClass.memberNames(defaultMethodFilter)
- val defaultMethodNames = defaultGetterNames map (_.asTermName.defaultGetterToMethod)
+ val defaultMethodNames = defaultGetterNames map { _ rewrite {
+ case DefaultGetterName(methName, _) => methName
+ }}
for (name <- defaultMethodNames) {
val methods = clazz.info.member(name).alternatives.map(_.symbol)
@@ -238,7 +237,7 @@ object RefChecks {
}
}
else
- isDefaultGetter(member.name) || // default getters are not checked for compatibility
+ member.name.is(DefaultGetterName) || // default getters are not checked for compatibility
memberTp.overrides(otherTp)
//Console.println(infoString(member) + " overrides " + infoString(other) + " in " + clazz);//DEBUG
@@ -298,7 +297,7 @@ object RefChecks {
} else if (other.isEffectivelyFinal) { // (1.2)
overrideError(i"cannot override final member ${other.showLocated}")
} else if (!other.is(Deferred) &&
- !isDefaultGetter(other.name) &&
+ !other.name.is(DefaultGetterName) &&
!member.isAnyOverride) {
// (*) Exclusion for default getters, fixes SI-5178. We cannot assign the Override flag to
// the default getter: one default getter might sometimes override, sometimes not. Example in comment on ticket.