diff options
author | Eugene Burmako <xeno.by@gmail.com> | 2012-08-11 00:07:29 +0200 |
---|---|---|
committer | Eugene Burmako <xeno.by@gmail.com> | 2012-08-11 00:12:25 +0200 |
commit | 8d87387e6a4aa41783f83e3533046b9b57d5bcd1 (patch) | |
tree | 69e11003aec3cc51c55e09304a971c3832352b85 | |
parent | a9c00f2dff1f86f5cfcba4f8d88e784d866515ec (diff) | |
download | scala-8d87387e6a4aa41783f83e3533046b9b57d5bcd1.tar.gz scala-8d87387e6a4aa41783f83e3533046b9b57d5bcd1.tar.bz2 scala-8d87387e6a4aa41783f83e3533046b9b57d5bcd1.zip |
SI-6201 minor fixes in key points
Fixes several oversights that led to 6201. RootPackage should have been static,
refactored implementation of hasSymbolWhich shouldn't have checked hasSymbol.
Full discussion is here:
http://groups.google.com/group/scala-internals/browse_thread/thread/9500348f273a8aa.
-rw-r--r-- | src/reflect/scala/reflect/internal/Mirrors.scala | 3 | ||||
-rw-r--r-- | src/reflect/scala/reflect/internal/Trees.scala | 2 | ||||
-rw-r--r-- | test/files/pos/t6201.scala | 13 |
3 files changed, 15 insertions, 3 deletions
diff --git a/src/reflect/scala/reflect/internal/Mirrors.scala b/src/reflect/scala/reflect/internal/Mirrors.scala index 2e2e63a4b4..bde7f7ac51 100644 --- a/src/reflect/scala/reflect/internal/Mirrors.scala +++ b/src/reflect/scala/reflect/internal/Mirrors.scala @@ -247,7 +247,7 @@ trait Mirrors extends api.Mirrors { // is very beneficial for a handful of bootstrap symbols to have // first class identities sealed trait WellKnownSymbol extends Symbol { - this initFlags TopLevelCreationFlags + this initFlags (TopLevelCreationFlags | STATIC) } // Features common to RootClass and RootPackage, the roots of all // type and term symbols respectively. @@ -276,7 +276,6 @@ trait Mirrors extends api.Mirrors { override def isRoot = true override def isEffectiveRoot = true - override def isStatic = true override def isNestedClass = false } // The empty package, which holds all top level types without given packages. diff --git a/src/reflect/scala/reflect/internal/Trees.scala b/src/reflect/scala/reflect/internal/Trees.scala index 220869e4d2..94d51b7455 100644 --- a/src/reflect/scala/reflect/internal/Trees.scala +++ b/src/reflect/scala/reflect/internal/Trees.scala @@ -160,7 +160,7 @@ trait Trees extends api.Trees { self: SymbolTable => new ThisSubstituter(clazz, to) transform this def hasSymbolWhich(f: Symbol => Boolean) = - hasSymbol && symbol != null && f(symbol) + (symbol ne null) && (symbol ne NoSymbol) && f(symbol) def isErroneous = (tpe ne null) && tpe.isErroneous def isTyped = (tpe ne null) && !tpe.isErroneous diff --git a/test/files/pos/t6201.scala b/test/files/pos/t6201.scala new file mode 100644 index 0000000000..366c1f26eb --- /dev/null +++ b/test/files/pos/t6201.scala @@ -0,0 +1,13 @@ +class Test { + class Foo1 { + def must(x: scala.xml.Elem) = () + } + + class Foo2 { + def must(x: Int) = () + } + implicit def toFoo1(s: scala.xml.Elem) = new Foo1() + implicit def toFoo2(s: scala.xml.Elem) = new Foo2() + + def is: Unit = { (<a>{"a"}</a>).must(<a>{"b"}</a>) } +}
\ No newline at end of file |