diff options
-rw-r--r-- | src/compiler/scala/reflect/internal/Definitions.scala | 3 | ||||
-rw-r--r-- | src/compiler/scala/reflect/internal/Types.scala | 2 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala | 3 | ||||
-rw-r--r-- | test/files/run/repl-parens.check | 5 | ||||
-rw-r--r-- | test/files/run/repl-parens.scala | 2 |
5 files changed, 12 insertions, 3 deletions
diff --git a/src/compiler/scala/reflect/internal/Definitions.scala b/src/compiler/scala/reflect/internal/Definitions.scala index b94a7e8927..5802174a5b 100644 --- a/src/compiler/scala/reflect/internal/Definitions.scala +++ b/src/compiler/scala/reflect/internal/Definitions.scala @@ -81,6 +81,9 @@ trait Definitions extends reflect.api.StandardDefinitions { def isNumericValueClass(sym: Symbol): Boolean = numericWeight contains sym + def isGetClass(sym: Symbol) = + (sym.name == nme.getClass_) && (sym.paramss.isEmpty || sym.paramss.head.isEmpty) + private[Definitions] def fullNameStrings: List[String] = nme.ScalaValueNames map ("scala." + _) private[Definitions] lazy val fullValueName: Set[Name] = { val values = nme.ScalaValueNames flatMap (x => List(newTypeName("scala." + x), newTermName("scala." + x))) diff --git a/src/compiler/scala/reflect/internal/Types.scala b/src/compiler/scala/reflect/internal/Types.scala index 46b95e6b8c..91cc0a6215 100644 --- a/src/compiler/scala/reflect/internal/Types.scala +++ b/src/compiler/scala/reflect/internal/Types.scala @@ -5615,7 +5615,7 @@ A type's typeSymbol should never be inspected directly. for (sym <- lubBase.nonPrivateMembers) { // add a refinement symbol for all non-class members of lubBase // which are refined by every type in ts. - if (!sym.isClass && !sym.isConstructor && (narrowts forall (t => refines(t, sym)))) + if (!sym.isClass && !sym.isConstructor && !isGetClass(sym) && (narrowts forall (t => refines(t, sym)))) try { val lsym = lubsym(sym) if (lsym != NoSymbol) addMember(lubThisType, lubRefined, lubsym(sym)) diff --git a/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala b/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala index 0bd7109a0d..37dfd10b02 100644 --- a/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala +++ b/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala @@ -798,8 +798,7 @@ abstract class GenJVM extends SubComponent with GenJVMUtil with GenAndroid with } def genMethod(m: IMethod) { - if (m.symbol.isStaticConstructor) return - if ((m.symbol.name == nme.getClass_) && m.params.isEmpty) return + if (m.symbol.isStaticConstructor || definitions.isGetClass(m.symbol)) return debuglog("Generating method " + m.symbol.fullName) method = m diff --git a/test/files/run/repl-parens.check b/test/files/run/repl-parens.check index 54c04c4dc6..944846541f 100644 --- a/test/files/run/repl-parens.check +++ b/test/files/run/repl-parens.check @@ -77,3 +77,8 @@ scala> foo(5)(10)(15)+foo(5)(10)(15) res15: Int = 60 scala> + +scala> List(1) ++ List('a') +res16: List[AnyVal] = List(1, a) + +scala> diff --git a/test/files/run/repl-parens.scala b/test/files/run/repl-parens.scala index 1baa9c37a5..c1cf9b50e1 100644 --- a/test/files/run/repl-parens.scala +++ b/test/files/run/repl-parens.scala @@ -23,5 +23,7 @@ object Test extends ReplTest { def foo(x: Int)(y: Int)(z: Int) = x+y+z foo(5)(10)(15)+foo(5)(10)(15) +List(1) ++ List('a') + """.trim }
\ No newline at end of file |