summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2012-08-11 00:07:29 +0200
committerEugene Burmako <xeno.by@gmail.com>2012-08-11 00:12:25 +0200
commit8d87387e6a4aa41783f83e3533046b9b57d5bcd1 (patch)
tree69e11003aec3cc51c55e09304a971c3832352b85
parenta9c00f2dff1f86f5cfcba4f8d88e784d866515ec (diff)
downloadscala-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.scala3
-rw-r--r--src/reflect/scala/reflect/internal/Trees.scala2
-rw-r--r--test/files/pos/t6201.scala13
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