From 31c213d1644c7c401780c2165a8419397584dd7b Mon Sep 17 00:00:00 2001 From: Paul Phillips Date: Wed, 22 Jun 2011 23:32:57 +0000 Subject: Thrusting spear into darkened alcove attempting... Thrusting spear into darkened alcove attempting to slay java5 build failure. No review. --- src/compiler/scala/reflect/internal/Definitions.scala | 12 +++++++----- src/compiler/scala/tools/nsc/transform/Erasure.scala | 6 ++++-- 2 files changed, 11 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/compiler/scala/reflect/internal/Definitions.scala b/src/compiler/scala/reflect/internal/Definitions.scala index 567389d475..6e14f449f9 100644 --- a/src/compiler/scala/reflect/internal/Definitions.scala +++ b/src/compiler/scala/reflect/internal/Definitions.scala @@ -832,12 +832,14 @@ trait Definitions /*extends reflect.generic.StandardDefinitions*/ { // Since getClass is not actually a polymorphic method, this requires compiler // participation. At the "Any" level, the return type is Class[_] as it is in // java.lang.Object. Java also special cases the return type. - Any_getClass = { - val eparams = typeParamsToExistentials(ClassClass, ClassClass.typeParams) - eparams.head setInfo TypeBounds.empty - val tpe = existentialAbstraction(eparams, appliedType(ClassClass.tpe, List(eparams.head.tpe))) + if (!Properties.isJava5) { + Any_getClass = { + val eparams = typeParamsToExistentials(ClassClass, ClassClass.typeParams) + eparams.head setInfo TypeBounds.empty + val tpe = existentialAbstraction(eparams, appliedType(ClassClass.tpe, List(eparams.head.tpe))) - newMethod(AnyClass, nme.getClass_, Nil, tpe) setFlag DEFERRED + newMethod(AnyClass, nme.getClass_, Nil, tpe) setFlag DEFERRED + } } Any_isInstanceOf = newPolyMethod( AnyClass, nme.isInstanceOf_, tparam => NullaryMethodType(booltype)) setFlag FINAL diff --git a/src/compiler/scala/tools/nsc/transform/Erasure.scala b/src/compiler/scala/tools/nsc/transform/Erasure.scala index a2fd3ebbb4..2500c84f98 100644 --- a/src/compiler/scala/tools/nsc/transform/Erasure.scala +++ b/src/compiler/scala/tools/nsc/transform/Erasure.scala @@ -526,9 +526,11 @@ abstract class Erasure extends AddInterfaces } // Methods on Any/Object which we rewrite here while we still know what // is a primitive and what arrived boxed. - private lazy val interceptedMethods = Set[Symbol](Any_##, Object_##, Any_getClass) ++ ( + private lazy val interceptedMethods: Set[Symbol] = ( + Set[Symbol](Any_##, Object_##) + ++ Option(Any_getClass) // Each value class has its own getClass for ultra-precise class object typing. - ScalaValueClasses map (_.tpe member nme.getClass_) + ++ ScalaValueClasses.map(_.tpe member nme.getClass_) ) // -------- erasure on trees ------------------------------------------ -- cgit v1.2.3