aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/Types.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2013-03-02 11:00:34 +0100
committerMartin Odersky <odersky@gmail.com>2013-03-02 11:17:14 +0100
commit24f5a1ef4b8a49b6a2a8c684c1c98bc6a5293813 (patch)
treeb52eef18a9e5fbf630fbdeb104bffd66b950ccdf /src/dotty/tools/dotc/core/Types.scala
parent49e6eb07bf55cf9eabb260e7b7a8fef45923e8df (diff)
downloaddotty-24f5a1ef4b8a49b6a2a8c684c1c98bc6a5293813.tar.gz
dotty-24f5a1ef4b8a49b6a2a8c684c1c98bc6a5293813.tar.bz2
dotty-24f5a1ef4b8a49b6a2a8c684c1c98bc6a5293813.zip
Polishing of denotations
1. Dropped owner from denot#asSeenFrom. Code inspection shows that one needs to take the owner of the symbol in each alternative instead. 2. Changed fullName so that terms in the ownerchain leave a trace. Needed for disambiguating private symbols with expanded names. See worksheet nesting.sc for an example. 3. Changed fingerPrint so that only classes with children have their fingerPrints computed. Reason: When we lookup a member of a class initially, it's likely that the member is present, so a bloom filter will not buy us much and will take up memory. For parent classes it's different. We might have found the member already in the child, or in a different parent, so it's more likely that the fingerPrint is effective.
Diffstat (limited to 'src/dotty/tools/dotc/core/Types.scala')
-rw-r--r--src/dotty/tools/dotc/core/Types.scala6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/dotty/tools/dotc/core/Types.scala b/src/dotty/tools/dotc/core/Types.scala
index e52b9dd17..e1076bdc8 100644
--- a/src/dotty/tools/dotc/core/Types.scala
+++ b/src/dotty/tools/dotc/core/Types.scala
@@ -352,7 +352,7 @@ object Types {
.denotsNamed(name)
.filterAccessibleFrom(pre)
.filterExcluded(excluded)
- .asSeenFrom(pre, tp.cls)
+ .asSeenFrom(pre)
.toDenot
case tp: TypeProxy =>
tp.underlying.findDecl(name, pre, excluded)
@@ -386,7 +386,7 @@ object Types {
val results = candidates
.filterAccessibleFrom(pre)
.filterExcluded(excluded)
- .asSeenFrom(pre, cls)
+ .asSeenFrom(pre)
if (results.exists) results.toDenot
else new ErrorDenotation // todo: refine
case tp: AndType =>
@@ -796,7 +796,7 @@ object Types {
override def loadDenot(implicit ctx: Context) = {
val denot = fixedSym.denot
val owner = denot.owner
- if (owner.isTerm) denot else denot.asSeenFrom(prefix, owner).toDenot
+ if (owner.isTerm) denot else denot.asSeenFrom(prefix).toDenot
}
}