aboutsummaryrefslogtreecommitdiff
path: root/src/dotty
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2015-04-02 16:11:20 +0200
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2015-04-02 16:30:16 +0200
commite5618d29e37ad50bd1b8c591ed50db63a6d7bc79 (patch)
tree1d53beeccaaddcfa20e2080a4c7e0feffab673c5 /src/dotty
parentc560648f191f325cc1961f25fdbad48839ca6327 (diff)
downloaddotty-e5618d29e37ad50bd1b8c591ed50db63a6d7bc79.tar.gz
dotty-e5618d29e37ad50bd1b8c591ed50db63a6d7bc79.tar.bz2
dotty-e5618d29e37ad50bd1b8c591ed50db63a6d7bc79.zip
Simplify methods implemented in #436
Diffstat (limited to 'src/dotty')
-rw-r--r--src/dotty/tools/dotc/ast/Desugar.scala7
-rw-r--r--src/dotty/tools/dotc/core/SymDenotations.scala8
-rw-r--r--src/dotty/tools/dotc/core/Symbols.scala18
3 files changed, 15 insertions, 18 deletions
diff --git a/src/dotty/tools/dotc/ast/Desugar.scala b/src/dotty/tools/dotc/ast/Desugar.scala
index 961675fed..1dfa24291 100644
--- a/src/dotty/tools/dotc/ast/Desugar.scala
+++ b/src/dotty/tools/dotc/ast/Desugar.scala
@@ -361,11 +361,10 @@ object desugar {
}
companionDefs(parent, applyMeths ::: unapplyMeth :: defaultGetters)
}
- else {
- if (defaultGetters.nonEmpty)
+ else if (defaultGetters.nonEmpty)
companionDefs(anyRef, defaultGetters)
- else Nil
- }
+ else Nil
+
// For an implicit class C[Ts](p11: T11, ..., p1N: T1N) ... (pM1: TM1, .., pMN: TMN), the method
// synthetic implicit C[Ts](p11: T11, ..., p1N: T1N) ... (pM1: TM1, ..., pMN: TMN): C[Ts] =
diff --git a/src/dotty/tools/dotc/core/SymDenotations.scala b/src/dotty/tools/dotc/core/SymDenotations.scala
index 0ee633861..9889bc89c 100644
--- a/src/dotty/tools/dotc/core/SymDenotations.scala
+++ b/src/dotty/tools/dotc/core/SymDenotations.scala
@@ -1286,7 +1286,11 @@ object SymDenotations {
def enter(sym: Symbol, scope: Scope = EmptyScope)(implicit ctx: Context): Unit = {
val mscope = scope match {
case scope: MutableScope =>
- assert(this.nextInRun == this) // we are not going to bring this symbol into future
+ // if enter gets a scope as an argument,
+ // than this is a scope that will eventually become decls of this symbol.
+ // And this should only happen if this is first time the scope of symbol
+ // is computed, ie symbol yet has no future.
+ assert(this.nextInRun == this)
scope
case _ => unforcedDecls.openForMutations
}
@@ -1300,7 +1304,7 @@ object SymDenotations {
}
enterNoReplace(sym, mscope)
val nxt = this.nextInRun
- if((nxt ne this) && (nxt.validFor.code > this.validFor.code)) {
+ if (nxt.validFor.code > this.validFor.code) {
this.nextInRun.asSymDenotation.asClass.enter(sym)
}
}
diff --git a/src/dotty/tools/dotc/core/Symbols.scala b/src/dotty/tools/dotc/core/Symbols.scala
index 97fe1f23e..0b50187a5 100644
--- a/src/dotty/tools/dotc/core/Symbols.scala
+++ b/src/dotty/tools/dotc/core/Symbols.scala
@@ -161,20 +161,14 @@ trait Symbols { this: Context =>
owner.thisType, modcls, parents, decls, TermRef.withSymAndName(owner.thisType, module, name)),
privateWithin, coord, assocFile)
- def synthesizeCompanionMethod(name: TermName, ret: SymDenotation, owner: SymDenotation)(implicit ctx: Context) = {
- if(owner.exists && ret.exists && !owner.isAbsent && !ret.isAbsent) {
+ def synthesizeCompanionMethod(name: Name, target: SymDenotation, owner: SymDenotation)(implicit ctx: Context) =
+ if(owner.exists && target.exists && !owner.isAbsent && !target.isAbsent) {
val existing = owner.unforcedDecls.lookup(name)
- if (existing.exists) existing
- else
- ctx.newSymbol(
- owner = owner.symbol,
- name = name,
- flags = Flags.Synthetic | Flags.Private,
- info = ExprType(ret.typeRef))
- }
- else NoSymbol
- }
+ existing.orElse{
+ ctx.newSymbol(owner.symbol, name, Flags.Synthetic | Flags.Private, ExprType(target.typeRef))
+ }
+ } else NoSymbol
/** Create a package symbol with associated package class
* from its non-info fields and a lazy type for loading the package's members.