diff options
author | Martin Odersky <odersky@gmail.com> | 2008-01-28 18:43:24 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2008-01-28 18:43:24 +0000 |
commit | 4c3fd9db2a9789909508e068ca8ae770b7412f63 (patch) | |
tree | 5fd7dceec06a358334d9ad22d5b3d3dab2d8c983 | |
parent | 2113259af4f54dc09f92799992f1a8d77954d570 (diff) | |
download | scala-4c3fd9db2a9789909508e068ca8ae770b7412f63.tar.gz scala-4c3fd9db2a9789909508e068ca8ae770b7412f63.tar.bz2 scala-4c3fd9db2a9789909508e068ca8ae770b7412f63.zip |
hasFlag(DEFERERED) -> isDeferred
7 files changed, 18 insertions, 17 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/icode/Checkers.scala b/src/compiler/scala/tools/nsc/backend/icode/Checkers.scala index 942aae646c..c311be4aad 100644 --- a/src/compiler/scala/tools/nsc/backend/icode/Checkers.scala +++ b/src/compiler/scala/tools/nsc/backend/icode/Checkers.scala @@ -117,8 +117,10 @@ abstract class Checkers { in.clear; out.clear; code = c; worklist + c.startBlock; - c.blocks foreach ( bl => { in += Pair(bl, emptyStack); - out += Pair(bl, emptyStack) } ); + for (bl <- c.blocks) { + in += (bl -> emptyStack) + out += (bl -> emptyStack) + } while (worklist.length > 0) { val block = worklist(0); worklist.trimStart(1); diff --git a/src/compiler/scala/tools/nsc/transform/Erasure.scala b/src/compiler/scala/tools/nsc/transform/Erasure.scala index a83c68f797..3b66e87e39 100644 --- a/src/compiler/scala/tools/nsc/transform/Erasure.scala +++ b/src/compiler/scala/tools/nsc/transform/Erasure.scala @@ -670,7 +670,7 @@ abstract class Erasure extends AddInterfaces with typechecker.Analyzer { val member = opc.overriding val other = opc.overridden //Console.println("bridge? " + member + ":" + member.tpe + member.locationString + " to " + other + ":" + other.tpe + other.locationString);//DEBUG - if (!atPhase(currentRun.explicitOuterPhase)(member hasFlag DEFERRED)) { + if (!atPhase(currentRun.explicitOuterPhase)(member.isDeferred)) { val otpe = erasure(other.tpe); val bridgeNeeded = atPhase(phase.next) ( !(other.tpe =:= member.tpe) && diff --git a/src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala b/src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala index bf5158324b..5afc6ac3ed 100644 --- a/src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala +++ b/src/compiler/scala/tools/nsc/transform/ExplicitOuter.scala @@ -286,7 +286,7 @@ abstract class ExplicitOuter extends InfoTransform with TransMatcher with Patter */ def outerAccessorDef: Tree = { val outerAcc = outerAccessor(currentClass) - var rhs = if (outerAcc hasFlag DEFERRED) EmptyTree + var rhs = if (outerAcc.isDeferred) EmptyTree else Select(This(currentClass), outerField(currentClass)) localTyper.typed { atPos(currentClass.pos) { diff --git a/src/compiler/scala/tools/nsc/transform/Mixin.scala b/src/compiler/scala/tools/nsc/transform/Mixin.scala index 71cca50c51..0b377b49fe 100644 --- a/src/compiler/scala/tools/nsc/transform/Mixin.scala +++ b/src/compiler/scala/tools/nsc/transform/Mixin.scala @@ -103,7 +103,7 @@ abstract class Mixin extends InfoTransform { if (settings.debug.value) { val other = bcs.head.info.nonPrivateDecl(member.name); log("rebindsuper " + bcs.head + " " + other + " " + other.tpe + - " " + other.hasFlag(DEFERRED)) + " " + other.isDeferred) } sym = member.overridingSymbol(bcs.head).suchThat(sym => !sym.hasFlag(DEFERRED | BRIDGE)) bcs = bcs.tail @@ -155,7 +155,7 @@ abstract class Mixin extends InfoTransform { for (val member <- impl.info.decls.toList) { if (!member.isMethod && !member.isModule && !member.isModuleVar) { - assert(member.isTerm && !member.hasFlag(DEFERRED), member) + assert(member.isTerm && !member.isDeferred, member) if (member.getter(impl) hasFlag PRIVATE) { member.makeNotPrivate(clazz) // this will also make getter&setter not private } @@ -483,7 +483,7 @@ abstract class Mixin extends InfoTransform { def isNotDuplicate(tree: Tree) = tree match { case DefDef(_, _, _, _, _, _) => val sym = tree.symbol; - !((sym hasFlag DEFERRED) && + !(sym.isDeferred && (newSyms exists (nsym => nsym.name == sym.name && (nsym.tpe matches sym.tpe)))) case _ => true diff --git a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala index ae44f1b569..bc8a15297e 100644 --- a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala +++ b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala @@ -145,14 +145,13 @@ abstract class RefChecks extends InfoTransform { // return if we already checked this combination elsewhere if (member.owner != clazz) { - if ((member.owner isSubClass other.owner) && - ((member hasFlag DEFERRED) || !(other hasFlag DEFERRED))) { + if ((member.owner isSubClass other.owner) && (member.isDeferred || !other.isDeferred)) { //Console.println(infoString(member) + " shadows1 " + infoString(other) " in " + clazz);//DEBUG return; } if (clazz.info.parents exists (parent => (parent.typeSymbol isSubClass other.owner) && (parent.typeSymbol isSubClass member.owner) && - ((member hasFlag DEFERRED) || !(other hasFlag DEFERRED)))) { + (member.isDeferred || !other.isDeferred))) { //Console.println(infoString(member) + " shadows2 " + infoString(other) + " in " + clazz);//DEBUG return; } @@ -174,7 +173,7 @@ abstract class RefChecks extends InfoTransform { overrideAccessError() } else if (other hasFlag FINAL) { // (1.2) overrideError("cannot override final member"); - } else if (!(other hasFlag DEFERRED) && !(member hasFlag (OVERRIDE | ABSOVERRIDE))) { // (1.3) + } else if (!other.isDeferred && !(member hasFlag (OVERRIDE | ABSOVERRIDE))) { // (1.3) overrideError("needs `override' modifier"); } else if ((other hasFlag ABSOVERRIDE) && other.isIncompleteIn(clazz) && !(member hasFlag ABSOVERRIDE)) { overrideError("needs `abstract override' modifiers") @@ -183,7 +182,7 @@ abstract class RefChecks extends InfoTransform { overrideError("cannot override a mutable variable") } else if (other.isStable && !member.isStable) { // (1.4) overrideError("needs to be an immutable value") - } else if (other.isStable && !(other hasFlag DEFERRED) && other.owner.isTrait && (member hasFlag OVERRIDE)) { + } else if (other.isStable && !other.isDeferred && other.owner.isTrait && (member hasFlag OVERRIDE)) { overrideError("cannot override a value or variable definition in a trait " + "\n (this is an implementation restriction)") } else { @@ -251,7 +250,7 @@ abstract class RefChecks extends InfoTransform { clazz.setFlag(ABSTRACT) } for (val member <- clazz.tpe.nonPrivateMembers) - if ((member hasFlag DEFERRED) && !(clazz hasFlag ABSTRACT)) { + if (member.isDeferred && !(clazz hasFlag ABSTRACT)) { abstractClassError( false, infoString(member) + " is not defined" + analyzer.varNotice(member)) } else if ((member hasFlag ABSOVERRIDE) && member.isIncompleteIn(clazz)) { @@ -266,7 +265,7 @@ abstract class RefChecks extends InfoTransform { // that are not implemented in a subclass. def checkNoAbstractDecls(bc: Symbol) { for (val decl <- bc.info.decls.elements) { - if (decl hasFlag DEFERRED) { + if (decl.isDeferred) { val impl = decl.matchingSymbol(clazz.thisType) if (impl == NoSymbol || (decl.owner isSubClass impl.owner)) { abstractClassError(false, "there is a deferred declaration of "+infoString(decl)+ @@ -694,7 +693,7 @@ abstract class RefChecks extends InfoTransform { if (symbol.isDeprecated) { val concrOvers = symbol.allOverriddenSymbols.filter(sym => - !sym.isDeprecated && !(sym hasFlag DEFERRED)) + !sym.isDeprecated && !sym.isDeferred) if(!concrOvers.isEmpty) unit.deprecationWarning( tree.pos, diff --git a/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala b/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala index 7cfd7ac461..821c0e6b4d 100644 --- a/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala +++ b/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala @@ -142,7 +142,7 @@ abstract class SuperAccessors extends transform.Transform with transform.TypingT case Select(sup @ Super(_, mix), name) => val sym = tree.symbol val clazz = sup.symbol - if (sym hasFlag DEFERRED) { + if (sym.isDeferred) { val member = sym.overridingSymbol(clazz); if (mix != nme.EMPTY.toTypeName || member == NoSymbol || !((member hasFlag ABSOVERRIDE) && member.isIncompleteIn(clazz))) diff --git a/src/compiler/scala/tools/nsc/typechecker/TreeCheckers.scala b/src/compiler/scala/tools/nsc/typechecker/TreeCheckers.scala index dc05fc32ba..73c9191c61 100644 --- a/src/compiler/scala/tools/nsc/typechecker/TreeCheckers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/TreeCheckers.scala @@ -72,7 +72,7 @@ abstract class TreeCheckers extends Analyzer { tree match { case DefDef(_, _, _, _, _, _) => if (tree.symbol.hasFlag(ACCESSOR) && - !tree.symbol.hasFlag(DEFERRED) && + !tree.symbol.isDeferred && !tree.symbol.tpe.resultType.isInstanceOf[ConstantType]) { assert(tree.symbol.accessed != NoSymbol, tree.symbol) assert(tree.symbol.accessed.getter(tree.symbol.owner) == tree.symbol || |