diff options
-rw-r--r-- | project/Build.scala | 2 | ||||
-rw-r--r-- | src/dotty/tools/backend/jvm/DottyBackendInterface.scala | 2 | ||||
-rw-r--r-- | src/dotty/tools/dotc/ast/Trees.scala | 2 | ||||
-rw-r--r-- | src/dotty/tools/dotc/core/Contexts.scala | 37 | ||||
-rw-r--r-- | src/dotty/tools/dotc/core/NameOps.scala | 9 | ||||
-rw-r--r-- | src/dotty/tools/dotc/core/Names.scala | 21 | ||||
-rw-r--r-- | src/dotty/tools/dotc/core/StdNames.scala | 3 | ||||
-rw-r--r-- | src/dotty/tools/dotc/core/SymDenotations.scala | 8 | ||||
-rw-r--r-- | src/dotty/tools/dotc/core/Symbols.scala | 2 | ||||
-rw-r--r-- | src/dotty/tools/dotc/core/Types.scala | 2 | ||||
-rw-r--r-- | src/dotty/tools/dotc/transform/ElimErasedValueType.scala | 3 | ||||
-rw-r--r-- | src/dotty/tools/dotc/transform/FunctionalInterfaces.scala | 7 | ||||
-rw-r--r-- | src/dotty/tools/dotc/transform/Memoize.scala | 22 | ||||
-rw-r--r-- | src/dotty/tools/dotc/transform/Mixin.scala | 8 | ||||
-rw-r--r-- | src/dotty/tools/dotc/transform/PatternMatcher.scala | 8 | ||||
-rw-r--r-- | src/dotty/tools/dotc/transform/TreeChecker.scala | 20 | ||||
-rw-r--r-- | test/dotc/tests.scala | 2 | ||||
-rw-r--r-- | tests/pending/pos/i743.scala | 6 | ||||
-rw-r--r-- | tests/pending/run/StackMap.scala | 7 | ||||
-rw-r--r-- | tests/run/Course-2002-02.check (renamed from tests/pending/run/Course-2002-02.check) | 0 | ||||
-rw-r--r-- | tests/run/Course-2002-02.scala (renamed from tests/pending/run/Course-2002-02.scala) | 0 | ||||
-rw-r--r-- | tests/run/Course-2002-07.check (renamed from tests/pending/run/Course-2002-07.check) | 0 | ||||
-rw-r--r-- | tests/run/Course-2002-07.scala (renamed from tests/pending/run/Course-2002-07.scala) | 0 | ||||
-rw-r--r-- | tests/run/Course-2002-13.check (renamed from tests/pending/run/Course-2002-13.check) | 0 | ||||
-rw-r--r-- | tests/run/Course-2002-13.scala (renamed from tests/pending/run/Course-2002-13.scala) | 0 | ||||
-rw-r--r-- | tests/run/WeakHashSetTest.scala (renamed from tests/pending/run/WeakHashSetTest.scala) | 0 | ||||
-rw-r--r-- | tests/run/bytecodecs.scala (renamed from tests/pending/run/bytecodecs.scala) | 0 | ||||
-rw-r--r-- | tests/run/caseclasses.check (renamed from tests/pending/run/caseclasses.check) | 0 | ||||
-rw-r--r-- | tests/run/caseclasses.scala (renamed from tests/pending/run/caseclasses.scala) | 0 | ||||
-rw-r--r-- | tests/run/dead-code-elimination.flags (renamed from tests/pending/run/dead-code-elimination.flags) | 0 | ||||
-rw-r--r-- | tests/run/dead-code-elimination.scala (renamed from tests/pending/run/dead-code-elimination.scala) | 0 | ||||
-rw-r--r-- | tests/run/exceptions-2.check (renamed from tests/pending/run/exceptions-2.check) | 3 | ||||
-rw-r--r-- | tests/run/exceptions-2.scala (renamed from tests/pending/run/exceptions-2.scala) | 0 | ||||
-rw-r--r-- | tests/run/exceptions.check (renamed from tests/pending/run/exceptions.check) | 0 | ||||
-rw-r--r-- | tests/run/exceptions.scala (renamed from tests/pending/run/exceptions.scala) | 0 | ||||
-rw-r--r-- | tests/run/hashCodeDistribution.scala (renamed from tests/pending/run/hashCodeDistribution.scala) | 0 | ||||
-rw-r--r-- | tests/run/i744.check | 1 | ||||
-rw-r--r-- | tests/run/i744.scala | 8 | ||||
-rw-r--r-- | tests/run/matcharraytail.check (renamed from tests/pending/run/matcharraytail.check) | 0 | ||||
-rw-r--r-- | tests/run/matcharraytail.scala (renamed from tests/pending/run/matcharraytail.scala) | 0 | ||||
-rw-r--r-- | tests/run/matchonstream.check (renamed from tests/pending/run/matchonstream.check) | 0 | ||||
-rw-r--r-- | tests/run/matchonstream.scala (renamed from tests/pending/run/matchonstream.scala) | 0 | ||||
-rw-r--r-- | tests/run/mixin-bridge-methods.scala (renamed from tests/pending/run/mixin-bridge-methods.scala) | 0 | ||||
-rw-r--r-- | tests/run/null-and-intersect.check (renamed from tests/pending/run/null-and-intersect.check) | 0 | ||||
-rw-r--r-- | tests/run/null-and-intersect.scala (renamed from tests/pending/run/null-and-intersect.scala) | 0 | ||||
-rw-r--r-- | tests/run/option-fold.check (renamed from tests/pending/run/option-fold.check) | 0 | ||||
-rw-r--r-- | tests/run/option-fold.scala (renamed from tests/pending/run/option-fold.scala) | 0 | ||||
-rw-r--r-- | tests/run/proxy.check (renamed from tests/pending/run/proxy.check) | 0 | ||||
-rw-r--r-- | tests/run/proxy.scala (renamed from tests/pending/run/proxy.scala) | 0 | ||||
-rw-r--r-- | tests/run/range.scala (renamed from tests/pending/run/range.scala) | 0 | ||||
-rw-r--r-- | tests/run/t0325.check (renamed from tests/pending/run/t0325.check) | 0 | ||||
-rw-r--r-- | tests/run/t0325.scala (renamed from tests/pending/run/t0325.scala) | 0 | ||||
-rw-r--r-- | tests/run/t0631.check (renamed from tests/pending/run/t0631.check) | 0 | ||||
-rw-r--r-- | tests/run/t0631.scala (renamed from tests/pending/run/t0631.scala) | 0 | ||||
-rw-r--r-- | tests/run/t1333.check (renamed from tests/pending/run/t1333.check) | 0 | ||||
-rw-r--r-- | tests/run/t1333.scala (renamed from tests/pending/run/t1333.scala) | 0 | ||||
-rw-r--r-- | tests/run/t1697.scala (renamed from tests/pending/run/t1697.scala) | 0 | ||||
-rw-r--r-- | tests/run/t1909b.scala (renamed from tests/pending/run/t1909b.scala) | 0 | ||||
-rw-r--r-- | tests/run/t2074_2.check (renamed from tests/pending/run/t2074_2.check) | 0 | ||||
-rw-r--r-- | tests/run/t2074_2.scala (renamed from tests/pending/run/t2074_2.scala) | 0 | ||||
-rw-r--r-- | tests/run/t2175.scala (renamed from tests/pending/run/t2175.scala) | 0 | ||||
-rw-r--r-- | tests/run/t2316_run.scala (renamed from tests/pending/run/t2316_run.scala) | 0 | ||||
-rw-r--r-- | tests/run/t2417.check (renamed from tests/pending/run/t2417.check) | 0 | ||||
-rw-r--r-- | tests/run/t2417.scala (renamed from tests/pending/run/t2417.scala) | 0 | ||||
-rw-r--r-- | tests/run/t2544.check (renamed from tests/pending/run/t2544.check) | 0 | ||||
-rw-r--r-- | tests/run/t2544.scala (renamed from tests/pending/run/t2544.scala) | 0 | ||||
-rw-r--r-- | tests/run/t2788.check (renamed from tests/pending/run/t2788.check) | 0 | ||||
-rw-r--r-- | tests/run/t2788.scala (renamed from tests/pending/run/t2788.scala) | 0 | ||||
-rw-r--r-- | tests/run/t3038d.flags (renamed from tests/pending/run/t3038d.flags) | 0 | ||||
-rw-r--r-- | tests/run/t3038d.scala (renamed from tests/pending/run/t3038d.scala) | 0 | ||||
-rw-r--r-- | tests/run/t3580.scala (renamed from tests/pending/run/t3580.scala) | 0 | ||||
-rw-r--r-- | tests/run/t3613.scala (renamed from tests/pending/run/t3613.scala) | 0 | ||||
-rw-r--r-- | tests/run/t3714.scala (renamed from tests/pending/run/t3714.scala) | 0 | ||||
-rw-r--r-- | tests/run/t3832.scala (renamed from tests/pending/run/t3832.scala) | 0 | ||||
-rw-r--r-- | tests/run/t3984.scala (renamed from tests/pending/run/t3984.scala) | 0 | ||||
-rw-r--r-- | tests/run/t4415.scala (renamed from tests/pending/run/t4415.scala) | 0 | ||||
-rw-r--r-- | tests/run/t4482.check (renamed from tests/pending/run/t4482.check) | 0 | ||||
-rw-r--r-- | tests/run/t4482.scala (renamed from tests/pending/run/t4482.scala) | 0 | ||||
-rw-r--r-- | tests/run/t4753.check (renamed from tests/pending/run/t4753.check) | 0 | ||||
-rw-r--r-- | tests/run/t4753.scala (renamed from tests/pending/run/t4753.scala) | 0 | ||||
-rw-r--r-- | tests/run/t4859.check (renamed from tests/pending/run/t4859.check) | 0 | ||||
-rw-r--r-- | tests/run/t4859.scala (renamed from tests/pending/run/t4859.scala) | 0 | ||||
-rw-r--r-- | tests/run/t4871.check (renamed from tests/pending/run/t4871.check) | 0 | ||||
-rw-r--r-- | tests/run/t4871.scala (renamed from tests/pending/run/t4871.scala) | 0 | ||||
-rw-r--r-- | tests/run/t5158.check (renamed from tests/pending/run/t5158.check) | 0 | ||||
-rw-r--r-- | tests/run/t5158.scala (renamed from tests/pending/run/t5158.scala) | 0 | ||||
-rw-r--r-- | tests/run/t5293-map.scala (renamed from tests/pending/run/t5293-map.scala) | 0 | ||||
-rw-r--r-- | tests/run/t5293.scala (renamed from tests/pending/run/t5293.scala) | 0 | ||||
-rw-r--r-- | tests/run/t5407.check (renamed from tests/pending/run/t5407.check) | 0 | ||||
-rw-r--r-- | tests/run/t5407.scala (renamed from tests/pending/run/t5407.scala) | 0 | ||||
-rw-r--r-- | tests/run/t6070.check (renamed from tests/pending/run/t6070.check) | 0 | ||||
-rw-r--r-- | tests/run/t6070.scala (renamed from tests/pending/run/t6070.scala) | 0 | ||||
-rw-r--r-- | tests/run/t6198.scala (renamed from tests/pending/run/t6198.scala) | 0 | ||||
-rw-r--r-- | tests/run/t6206.check (renamed from tests/pending/run/t6206.check) | 0 | ||||
-rw-r--r-- | tests/run/t6206.scala (renamed from tests/pending/run/t6206.scala) | 0 | ||||
-rw-r--r-- | tests/run/t6253a.scala (renamed from tests/pending/run/t6253a.scala) | 0 | ||||
-rw-r--r-- | tests/run/t6253b.scala (renamed from tests/pending/run/t6253b.scala) | 0 | ||||
-rw-r--r-- | tests/run/t6253c.scala (renamed from tests/pending/run/t6253c.scala) | 0 | ||||
-rw-r--r-- | tests/run/t6337a.scala (renamed from tests/pending/run/t6337a.scala) | 0 | ||||
-rw-r--r-- | tests/run/t6385.scala (renamed from tests/pending/run/t6385.scala) | 0 | ||||
-rw-r--r-- | tests/run/t6628.check (renamed from tests/pending/run/t6628.check) | 0 | ||||
-rw-r--r-- | tests/run/t6628.scala (renamed from tests/pending/run/t6628.scala) | 0 | ||||
-rw-r--r-- | tests/run/t6793.scala (renamed from tests/pending/run/t6793.scala) | 0 | ||||
-rw-r--r-- | tests/run/t7200.scala (renamed from tests/pending/run/t7200.scala) | 0 | ||||
-rw-r--r-- | tests/run/t7214.scala (renamed from tests/pending/run/t7214.scala) | 0 | ||||
-rw-r--r-- | tests/run/t7571.scala (renamed from tests/pending/run/t7571.scala) | 0 | ||||
-rw-r--r-- | tests/run/t8177f.scala (renamed from tests/pending/run/t8177f.scala) | 0 | ||||
-rw-r--r-- | tests/run/t8197.scala (renamed from tests/pending/run/t8197.scala) | 0 | ||||
-rw-r--r-- | tests/run/try-catch-unify.check (renamed from tests/pending/run/try-catch-unify.check) | 0 | ||||
-rw-r--r-- | tests/run/try-catch-unify.scala (renamed from tests/pending/run/try-catch-unify.scala) | 0 | ||||
-rw-r--r-- | tests/run/unapplyArray.scala (renamed from tests/pending/run/unapplyArray.scala) | 0 | ||||
-rw-r--r-- | tests/run/value-class-extractor.scala | 2 | ||||
-rw-r--r-- | tests/run/verify-ctor.check (renamed from tests/pending/run/verify-ctor.check) | 0 | ||||
-rw-r--r-- | tests/run/verify-ctor.scala (renamed from tests/pending/run/verify-ctor.scala) | 0 | ||||
-rw-r--r-- | tests/run/virtpatmat_try.check (renamed from tests/pending/run/virtpatmat_try.check) | 0 | ||||
-rw-r--r-- | tests/run/virtpatmat_try.flags (renamed from tests/pending/run/virtpatmat_try.flags) | 0 | ||||
-rw-r--r-- | tests/run/virtpatmat_try.scala (renamed from tests/pending/run/virtpatmat_try.scala) | 0 |
117 files changed, 137 insertions, 48 deletions
diff --git a/project/Build.scala b/project/Build.scala index 9c80fdc11..cc8fbfb69 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -42,7 +42,7 @@ object DottyBuild extends Build { resolvers += Resolver.sonatypeRepo("releases"), // get libraries onboard - partestDeps := Seq("me.d-d" % "scala-compiler" % "2.11.5-20150619-173733-3bcd390afa", + partestDeps := Seq("me.d-d" % "scala-compiler" % "2.11.5-20150714-145300-2ad68448c5", "org.scala-lang" % "scala-reflect" % scalaVersion.value, "org.scala-lang" % "scala-library" % scalaVersion.value % "test"), libraryDependencies ++= partestDeps.value, diff --git a/src/dotty/tools/backend/jvm/DottyBackendInterface.scala b/src/dotty/tools/backend/jvm/DottyBackendInterface.scala index 8136b3dcd..e39541e6c 100644 --- a/src/dotty/tools/backend/jvm/DottyBackendInterface.scala +++ b/src/dotty/tools/backend/jvm/DottyBackendInterface.scala @@ -784,7 +784,7 @@ class DottyBackendInterface()(implicit ctx: Context) extends BackendInterface{ def decls: List[Symbol] = tp.decls.map(_.symbol).toList def members: List[Symbol] = - tp.memberDenots(takeAllFilter, (name, buf) => buf ++= member(name).alternatives).map(_.symbol).toList + tp.memberDenots(takeAllFilter, (name, buf) => buf ++= tp.member(name).alternatives).map(_.symbol).toList def typeSymbol: Symbol = tp.widenDealias.typeSymbol diff --git a/src/dotty/tools/dotc/ast/Trees.scala b/src/dotty/tools/dotc/ast/Trees.scala index f63d32b14..a10dfaa16 100644 --- a/src/dotty/tools/dotc/ast/Trees.scala +++ b/src/dotty/tools/dotc/ast/Trees.scala @@ -223,7 +223,7 @@ object Trees { override def toText(printer: Printer) = printer.toText(this) - override def hashCode(): Int = System.identityHashCode(this) + override def hashCode(): Int = uniqueId // for debugging; was: System.identityHashCode(this) override def equals(that: Any) = this eq that.asInstanceOf[AnyRef] } diff --git a/src/dotty/tools/dotc/core/Contexts.scala b/src/dotty/tools/dotc/core/Contexts.scala index 206ef9d8b..15c7b4b11 100644 --- a/src/dotty/tools/dotc/core/Contexts.scala +++ b/src/dotty/tools/dotc/core/Contexts.scala @@ -177,25 +177,26 @@ object Contexts { /** The new implicit references that are introduced by this scope */ private var implicitsCache: ContextualImplicits = null def implicits: ContextualImplicits = { - if (implicitsCache == null ) - implicitsCache = { - val implicitRefs: List[TermRef] = - if (isClassDefContext) - try owner.thisType.implicitMembers - catch { - case ex: CyclicReference => Nil - } - else if (isImportContext) importInfo.importedImplicits - else if (isNonEmptyScopeContext) scope.implicitDecls - else Nil - val outerImplicits = - if (isImportContext && importInfo.hiddenRoot.exists) - outer.implicits exclude importInfo.hiddenRoot - else - outer.implicits - if (implicitRefs.isEmpty) outerImplicits - else new ContextualImplicits(implicitRefs, outerImplicits)(this) + if (implicitsCache == null ) { + val outerImplicits = + if (isImportContext && importInfo.hiddenRoot.exists) + outer.implicits exclude importInfo.hiddenRoot + else + outer.implicits + try + implicitsCache = { + val implicitRefs: List[TermRef] = + if (isClassDefContext) owner.thisType.implicitMembers + else if (isImportContext) importInfo.importedImplicits + else if (isNonEmptyScopeContext) scope.implicitDecls + else Nil + if (implicitRefs.isEmpty) outerImplicits + else new ContextualImplicits(implicitRefs, outerImplicits)(this) + } + catch { + case ex: CyclicReference => implicitsCache = outerImplicits } + } implicitsCache } diff --git a/src/dotty/tools/dotc/core/NameOps.scala b/src/dotty/tools/dotc/core/NameOps.scala index dc90a8d3b..593d5f036 100644 --- a/src/dotty/tools/dotc/core/NameOps.scala +++ b/src/dotty/tools/dotc/core/NameOps.scala @@ -241,7 +241,7 @@ object NameOps { case nme.clone_ => nme.clone_ } - def specializedFor(returnType: Types.Type, args: List[Types.Type])(implicit ctx: Context): name.ThisName = { + def specializedFor(classTargs: List[Types.Type], classTargsNames: List[Name], methodTargs: List[Types.Type], methodTarsNames: List[Name])(implicit ctx: Context): name.ThisName = { def typeToTag(tp: Types.Type): Name = { tp.classSymbol match { @@ -258,9 +258,12 @@ object NameOps { } } + val methodTags: Seq[Name] = (methodTargs zip methodTarsNames).sortBy(_._2).map(x => typeToTag(x._1)) + val classTags: Seq[Name] = (classTargs zip classTargsNames).sortBy(_._2).map(x => typeToTag(x._1)) + name.fromName(name ++ nme.specializedTypeNames.prefix ++ - args.map(typeToTag).foldRight(typeToTag(returnType))(_ ++ _) ++ - nme.specializedTypeNames.suffix) + methodTags.fold(nme.EMPTY)(_ ++ _) ++ nme.specializedTypeNames.separator ++ + classTags.fold(nme.EMPTY)(_ ++ _) ++ nme.specializedTypeNames.suffix) } /** If name length exceeds allowable limit, replace part of it by hash */ diff --git a/src/dotty/tools/dotc/core/Names.scala b/src/dotty/tools/dotc/core/Names.scala index 3ff10598d..12def1076 100644 --- a/src/dotty/tools/dotc/core/Names.scala +++ b/src/dotty/tools/dotc/core/Names.scala @@ -348,4 +348,25 @@ object Names { StringBuilder.newBuilder.mapResult(s => from.fromChars(s.toCharArray, 0, s.length)) def apply(): Builder[Char, Name] = termNameBuilder } + + implicit val NameOrdering: Ordering[Name] = new Ordering[Name] { + def compare(x: Name, y: Name): Int = { + if (x.isTermName && y.isTypeName) 1 + else if (x.isTypeName && y.isTermName) -1 + else if (x eq y) 0 + else { + val until = x.length min y.length + var i = 0 + + while (i < until && x(i) == y(i)) i = i + 1 + + if (i < until) { + if (x(i) < y(i)) -1 + else /*(x(i) > y(i))*/ 1 + } else { + x.length - y.length + } + } + } + } } diff --git a/src/dotty/tools/dotc/core/StdNames.scala b/src/dotty/tools/dotc/core/StdNames.scala index eb1a73625..577e1ebf3 100644 --- a/src/dotty/tools/dotc/core/StdNames.scala +++ b/src/dotty/tools/dotc/core/StdNames.scala @@ -559,7 +559,8 @@ object StdNames { final val Void: N = "V" final val Object: N = "L" - final val prefix: N = "$mc" + final val prefix: N = "$m" + final val separator: N = "c" final val suffix: N = "$sp" } diff --git a/src/dotty/tools/dotc/core/SymDenotations.scala b/src/dotty/tools/dotc/core/SymDenotations.scala index 53973b587..985d1a9c7 100644 --- a/src/dotty/tools/dotc/core/SymDenotations.scala +++ b/src/dotty/tools/dotc/core/SymDenotations.scala @@ -404,6 +404,14 @@ object SymDenotations { name.toTermName == nme.COMPANION_CLASS_METHOD || name.toTermName == nme.COMPANION_MODULE_METHOD + /** Is this a syntetic method that represents conversions between representations of a value class + * These methods are generated in ExtensionMethods + * and used in ElimErasedValueType. + */ + final def isValueClassConvertMethod(implicit ctx: Context) = + name.toTermName == nme.U2EVT || + name.toTermName == nme.EVT2U + /** Is symbol a primitive value class? */ def isPrimitiveValueClass(implicit ctx: Context) = defn.ScalaValueClasses contains symbol diff --git a/src/dotty/tools/dotc/core/Symbols.scala b/src/dotty/tools/dotc/core/Symbols.scala index ce308459a..2b4f806dd 100644 --- a/src/dotty/tools/dotc/core/Symbols.scala +++ b/src/dotty/tools/dotc/core/Symbols.scala @@ -503,6 +503,8 @@ object Symbols { def showKind(implicit ctx: Context): String = ctx.kindString(this) def showName(implicit ctx: Context): String = ctx.nameString(this) def showFullName(implicit ctx: Context): String = ctx.fullNameString(this) + + override def hashCode() = id // for debugging. } type TermSymbol = Symbol { type ThisName = TermName } diff --git a/src/dotty/tools/dotc/core/Types.scala b/src/dotty/tools/dotc/core/Types.scala index 4d6a7e22b..0e9f5d9b2 100644 --- a/src/dotty/tools/dotc/core/Types.scala +++ b/src/dotty/tools/dotc/core/Types.scala @@ -1296,7 +1296,7 @@ object Types { case d: SymDenotation => if (this.isInstanceOf[WithFixedSym]) d.current else if (d.validFor.runId == ctx.runId || ctx.stillValid(d)) - if (prefix.isTightPrefix(d.owner) || d.isConstructor) d.current + if (d.exists && prefix.isTightPrefix(d.owner) || d.isConstructor) d.current else recomputeMember(d) // symbol could have been overridden, recompute membership else { val newd = loadDenot diff --git a/src/dotty/tools/dotc/transform/ElimErasedValueType.scala b/src/dotty/tools/dotc/transform/ElimErasedValueType.scala index 8a18c9c17..a3f8b56ff 100644 --- a/src/dotty/tools/dotc/transform/ElimErasedValueType.scala +++ b/src/dotty/tools/dotc/transform/ElimErasedValueType.scala @@ -56,12 +56,11 @@ class ElimErasedValueType extends MiniPhaseTransform with InfoTransformer { override def transformApply(tree: Apply)(implicit ctx: Context, info: TransformerInfo): Tree = { val Apply(fun, args) = tree - val name = fun.symbol.name // The casts to and from ErasedValueType are no longer needed once ErasedValueType // has been eliminated. val t = - if ((name eq nme.U2EVT) || (name eq nme.EVT2U)) + if (fun.symbol.isValueClassConvertMethod) args.head else tree diff --git a/src/dotty/tools/dotc/transform/FunctionalInterfaces.scala b/src/dotty/tools/dotc/transform/FunctionalInterfaces.scala index 03b2910ae..5fd89314a 100644 --- a/src/dotty/tools/dotc/transform/FunctionalInterfaces.scala +++ b/src/dotty/tools/dotc/transform/FunctionalInterfaces.scala @@ -63,7 +63,12 @@ class FunctionalInterfaces extends MiniPhaseTransform { val m = tree.meth.tpe.widen.asInstanceOf[MethodType] if (shouldSpecialize(m)) { - val interfaceName = (functionName ++ m.paramTypes.length.toString).specializedFor(m.resultType, m.paramTypes) + val functionSymbol = tree.tpe.widenDealias.classSymbol + val names = ctx.atPhase(ctx.erasurePhase) { + implicit ctx => functionSymbol.typeParams.map(_.name) + } + val interfaceName = (functionName ++ m.paramTypes.length.toString).specializedFor(m.paramTypes ::: m.resultType :: Nil, names, Nil, Nil) + // symbols loaded from classpath aren't defined in periods earlier than when they where loaded val interface = ctx.withPhase(ctx.typerPhase).getClassIfDefined(functionPackage ++ interfaceName) if (interface.exists) { diff --git a/src/dotty/tools/dotc/transform/Memoize.scala b/src/dotty/tools/dotc/transform/Memoize.scala index cf3011bc8..728005cab 100644 --- a/src/dotty/tools/dotc/transform/Memoize.scala +++ b/src/dotty/tools/dotc/transform/Memoize.scala @@ -45,14 +45,20 @@ import Decorators._ override def transformDefDef(tree: DefDef)(implicit ctx: Context, info: TransformerInfo): Tree = { val sym = tree.symbol - def newField = ctx.newSymbol( - owner = ctx.owner, - name = sym.name.asTermName.fieldName, - flags = Private | (if (sym is Stable) EmptyFlags else Mutable), - info = sym.info.resultType, - coord = tree.pos) - .withAnnotationsCarrying(sym, defn.FieldMetaAnnot) - .enteredAfter(thisTransform) + def newField = { + val fieldType = + if (sym.isGetter) sym.info.resultType + else /*sym.isSetter*/ sym.info.firstParamTypes.head + + ctx.newSymbol( + owner = ctx.owner, + name = sym.name.asTermName.fieldName, + flags = Private | (if (sym is Stable) EmptyFlags else Mutable), + info = fieldType, + coord = tree.pos) + .withAnnotationsCarrying(sym, defn.FieldMetaAnnot) + .enteredAfter(thisTransform) + } /** Can be used to filter annotations on getters and setters; not used yet */ def keepAnnotations(denot: SymDenotation, meta: ClassSymbol) = { diff --git a/src/dotty/tools/dotc/transform/Mixin.scala b/src/dotty/tools/dotc/transform/Mixin.scala index bebaf44f4..ae4e26177 100644 --- a/src/dotty/tools/dotc/transform/Mixin.scala +++ b/src/dotty/tools/dotc/transform/Mixin.scala @@ -98,7 +98,7 @@ class Mixin extends MiniPhaseTransform with SymTransformer { thisTransform => override def runsAfter: Set[Class[_ <: Phase]] = Set(classOf[Erasure]) override def transformSym(sym: SymDenotation)(implicit ctx: Context): SymDenotation = - if (sym.is(Accessor, butNot = Deferred) && sym.owner.is(Trait)) + if (sym.is(Accessor, butNot = Deferred | Lazy) && sym.owner.is(Trait)) sym.copySymDenotation(initFlags = sym.flags &~ ParamAccessor | Deferred).ensureNotPrivate else if (sym.isConstructor && sym.owner.is(Trait)) sym.copySymDenotation( @@ -108,8 +108,8 @@ class Mixin extends MiniPhaseTransform with SymTransformer { thisTransform => sym private def initializer(sym: Symbol)(implicit ctx: Context): TermSymbol = { - val initName = InitializerName(sym.name.asTermName) - sym.owner.info.decl(initName).symbol + val initName = if(!sym.is(Lazy)) InitializerName(sym.name.asTermName) else sym.name.asTermName + sym.owner.info.decl(initName).suchThat(_.is(Lazy) == sym.is(Lazy)).symbol .orElse( ctx.newSymbol( sym.owner, @@ -229,7 +229,7 @@ class Mixin extends MiniPhaseTransform with SymTransformer { thisTransform => def setters(mixin: ClassSymbol): List[Tree] = for (setter <- mixin.info.decls.filter(setr => setr.isSetter && !wasDeferred(setr)).toList) - yield DefDef(implementation(setter.asTerm), unitLiteral.withPos(cls.pos)) + yield transformFollowing(DefDef(implementation(setter.asTerm), unitLiteral.withPos(cls.pos))) cpy.Template(impl)( constr = diff --git a/src/dotty/tools/dotc/transform/PatternMatcher.scala b/src/dotty/tools/dotc/transform/PatternMatcher.scala index af8da01ff..2df7a9825 100644 --- a/src/dotty/tools/dotc/transform/PatternMatcher.scala +++ b/src/dotty/tools/dotc/transform/PatternMatcher.scala @@ -440,7 +440,11 @@ class PatternMatcher extends MiniPhaseTransform with DenotTransformer {thisTrans def emitVars = storedBinders.nonEmpty - private lazy val (stored, substed) = (subPatBinders, subPatRefs).zipped.partition{ case (sym, _) => storedBinders(sym) } + lazy val storedSubsted = (subPatBinders, subPatRefs).zipped.partition{ case (sym, _) => storedBinders(sym) } + + def stored = storedSubsted._1 + + def substed = storedSubsted._2 // dd: this didn't yet trigger error. But I believe it would. if this causes double denition of symbol error this can be replaced with NoRebindings protected lazy val introducedRebindings: Rebindings = if (!emitVars) Rebindings(subPatBinders, subPatRefs) @@ -1443,7 +1447,7 @@ class PatternMatcher extends MiniPhaseTransform with DenotTransformer {thisTrans // require (nbSubPats > 0 && (!lastIsStar || isSeq)) protected def subPatRefs(binder: Symbol): List[Tree] = { val refs = if (totalArity > 0 && isSeq) subPatRefsSeq(binder) - else if (totalArity > 1 && !isSeq) productElemsToN(binder, totalArity) + else if (binder.info.member(nme._1).exists && !isSeq) productElemsToN(binder, totalArity) else ref(binder):: Nil refs } diff --git a/src/dotty/tools/dotc/transform/TreeChecker.scala b/src/dotty/tools/dotc/transform/TreeChecker.scala index b76f04b58..a1847e456 100644 --- a/src/dotty/tools/dotc/transform/TreeChecker.scala +++ b/src/dotty/tools/dotc/transform/TreeChecker.scala @@ -2,6 +2,7 @@ package dotty.tools.dotc package transform import TreeTransforms._ +import core.Names.Name import core.DenotTransformers._ import core.Denotations._ import core.SymDenotations._ @@ -42,6 +43,12 @@ class TreeChecker extends Phase with SymTransformer { private val seenClasses = collection.mutable.HashMap[String, Symbol]() private val seenModuleVals = collection.mutable.HashMap[String, Symbol]() + def isValidJVMName(name: Name) = + !name.exists(c => c == '.' || c == ';' || c =='[' || c == '/') + + def isValidJVMMethodName(name: Name) = + !name.exists(c => c == '.' || c == ';' || c =='[' || c == '/' || c == '<' || c == '>') + def printError(str: String)(implicit ctx: Context) = { ctx.println(Console.RED + "[error] " + Console.WHITE + str) } @@ -130,6 +137,7 @@ class TreeChecker extends Phase with SymTransformer { def withDefinedSym[T](tree: untpd.Tree)(op: => T)(implicit ctx: Context): T = tree match { case tree: DefTree => val sym = tree.symbol + assert(isValidJVMName(sym.name), s"${sym.fullName} name is invalid on jvm") everDefinedSyms.get(sym) match { case Some(t) => if (t ne tree) @@ -257,12 +265,24 @@ class TreeChecker extends Phase with SymTransformer { assert(cls.primaryConstructor == constr.symbol, i"mismatch, primary constructor ${cls.primaryConstructor}, in tree = ${constr.symbol}") checkOwner(impl) checkOwner(impl.constr) + + def isNonMagicalMethod(x: Symbol) = + x.is(Method) && + !x.isCompanionMethod && + !x.isValueClassConvertMethod && + x != defn.newRefArrayMethod + + val symbolsNotDefined = cls.classInfo.decls.toSet.filter(isNonMagicalMethod) -- impl.body.map(_.symbol) - constr.symbol + + assert(symbolsNotDefined.isEmpty, i" $cls tree does not define methods: $symbolsNotDefined") + super.typedClassDef(cdef, cls) } override def typedDefDef(ddef: untpd.DefDef, sym: Symbol)(implicit ctx: Context) = withDefinedSyms(ddef.tparams) { withDefinedSymss(ddef.vparamss) { + if (!sym.isClassConstructor) assert(isValidJVMMethodName(sym.name), s"${sym.fullName} name is invalid on jvm") super.typedDefDef(ddef, sym) } } diff --git a/test/dotc/tests.scala b/test/dotc/tests.scala index 50fa90d53..0284a8714 100644 --- a/test/dotc/tests.scala +++ b/test/dotc/tests.scala @@ -154,7 +154,7 @@ class tests extends CompilerTest { @Test def run_all = runFiles(runDir) - @Test def dotty = compileDir(dottyDir, "tools", "-deep" :: "-Ycheck-reentrant" :: allowDeepSubtypes ++ twice) // note the -deep argument + @Test def dotty = compileDir(dottyDir, ".", "-deep" :: "-Ycheck-reentrant" :: allowDeepSubtypes) // note the -deep argument @Test def dotc_ast = compileDir(dotcDir, "ast") @Test def dotc_config = compileDir(dotcDir, "config") diff --git a/tests/pending/pos/i743.scala b/tests/pending/pos/i743.scala new file mode 100644 index 000000000..8fe522cee --- /dev/null +++ b/tests/pending/pos/i743.scala @@ -0,0 +1,6 @@ +object NonLocalReturn { + def foo(a: List[Int]): Int = { + a.foreach(x => return x) + 0 + } +} diff --git a/tests/pending/run/StackMap.scala b/tests/pending/run/StackMap.scala new file mode 100644 index 000000000..5220758fe --- /dev/null +++ b/tests/pending/run/StackMap.scala @@ -0,0 +1,7 @@ +object Test { + var implicitsCache = null + + def main(args: Array[String]): Unit = { + implicitsCache = try{null} catch { case ex: Exception => null } + } +} diff --git a/tests/pending/run/Course-2002-02.check b/tests/run/Course-2002-02.check index 7d9695071..7d9695071 100644 --- a/tests/pending/run/Course-2002-02.check +++ b/tests/run/Course-2002-02.check diff --git a/tests/pending/run/Course-2002-02.scala b/tests/run/Course-2002-02.scala index b8650108e..b8650108e 100644 --- a/tests/pending/run/Course-2002-02.scala +++ b/tests/run/Course-2002-02.scala diff --git a/tests/pending/run/Course-2002-07.check b/tests/run/Course-2002-07.check index 75e956f31..75e956f31 100644 --- a/tests/pending/run/Course-2002-07.check +++ b/tests/run/Course-2002-07.check diff --git a/tests/pending/run/Course-2002-07.scala b/tests/run/Course-2002-07.scala index b26eda1e0..b26eda1e0 100644 --- a/tests/pending/run/Course-2002-07.scala +++ b/tests/run/Course-2002-07.scala diff --git a/tests/pending/run/Course-2002-13.check b/tests/run/Course-2002-13.check index 7664f7057..7664f7057 100644 --- a/tests/pending/run/Course-2002-13.check +++ b/tests/run/Course-2002-13.check diff --git a/tests/pending/run/Course-2002-13.scala b/tests/run/Course-2002-13.scala index a596a3387..a596a3387 100644 --- a/tests/pending/run/Course-2002-13.scala +++ b/tests/run/Course-2002-13.scala diff --git a/tests/pending/run/WeakHashSetTest.scala b/tests/run/WeakHashSetTest.scala index 8bcb95091..8bcb95091 100644 --- a/tests/pending/run/WeakHashSetTest.scala +++ b/tests/run/WeakHashSetTest.scala diff --git a/tests/pending/run/bytecodecs.scala b/tests/run/bytecodecs.scala index 454958dfa..454958dfa 100644 --- a/tests/pending/run/bytecodecs.scala +++ b/tests/run/bytecodecs.scala diff --git a/tests/pending/run/caseclasses.check b/tests/run/caseclasses.check index 7eb54ea63..7eb54ea63 100644 --- a/tests/pending/run/caseclasses.check +++ b/tests/run/caseclasses.check diff --git a/tests/pending/run/caseclasses.scala b/tests/run/caseclasses.scala index f94bcab95..f94bcab95 100644 --- a/tests/pending/run/caseclasses.scala +++ b/tests/run/caseclasses.scala diff --git a/tests/pending/run/dead-code-elimination.flags b/tests/run/dead-code-elimination.flags index 49d036a88..49d036a88 100644 --- a/tests/pending/run/dead-code-elimination.flags +++ b/tests/run/dead-code-elimination.flags diff --git a/tests/pending/run/dead-code-elimination.scala b/tests/run/dead-code-elimination.scala index fd3f2a996..fd3f2a996 100644 --- a/tests/pending/run/dead-code-elimination.scala +++ b/tests/run/dead-code-elimination.scala diff --git a/tests/pending/run/exceptions-2.check b/tests/run/exceptions-2.check index 4f8244800..9a3044cd4 100644 --- a/tests/pending/run/exceptions-2.check +++ b/tests/run/exceptions-2.check @@ -1,6 +1,3 @@ -exceptions-2.scala:267: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses - try { 1 } catch { case e: java.io.IOException => () } - ^ nested1: Innermost finally Outermost finally diff --git a/tests/pending/run/exceptions-2.scala b/tests/run/exceptions-2.scala index 8d755c380..8d755c380 100644 --- a/tests/pending/run/exceptions-2.scala +++ b/tests/run/exceptions-2.scala diff --git a/tests/pending/run/exceptions.check b/tests/run/exceptions.check index b959df29e..b959df29e 100644 --- a/tests/pending/run/exceptions.check +++ b/tests/run/exceptions.check diff --git a/tests/pending/run/exceptions.scala b/tests/run/exceptions.scala index f0fe76946..f0fe76946 100644 --- a/tests/pending/run/exceptions.scala +++ b/tests/run/exceptions.scala diff --git a/tests/pending/run/hashCodeDistribution.scala b/tests/run/hashCodeDistribution.scala index 284f3d977..284f3d977 100644 --- a/tests/pending/run/hashCodeDistribution.scala +++ b/tests/run/hashCodeDistribution.scala diff --git a/tests/run/i744.check b/tests/run/i744.check new file mode 100644 index 000000000..d00491fd7 --- /dev/null +++ b/tests/run/i744.check @@ -0,0 +1 @@ +1 diff --git a/tests/run/i744.scala b/tests/run/i744.scala new file mode 100644 index 000000000..4ff6c9288 --- /dev/null +++ b/tests/run/i744.scala @@ -0,0 +1,8 @@ +trait A{ + private var s = 1 + def getS = s +} + +object Test extends A { + def main(args: Array[String]): Unit = println(getS) +} diff --git a/tests/pending/run/matcharraytail.check b/tests/run/matcharraytail.check index f2844d41a..f2844d41a 100644 --- a/tests/pending/run/matcharraytail.check +++ b/tests/run/matcharraytail.check diff --git a/tests/pending/run/matcharraytail.scala b/tests/run/matcharraytail.scala index 3120769f4..3120769f4 100644 --- a/tests/pending/run/matcharraytail.scala +++ b/tests/run/matcharraytail.scala diff --git a/tests/pending/run/matchonstream.check b/tests/run/matchonstream.check index 3dc3aa516..3dc3aa516 100644 --- a/tests/pending/run/matchonstream.check +++ b/tests/run/matchonstream.check diff --git a/tests/pending/run/matchonstream.scala b/tests/run/matchonstream.scala index 6e5556519..6e5556519 100644 --- a/tests/pending/run/matchonstream.scala +++ b/tests/run/matchonstream.scala diff --git a/tests/pending/run/mixin-bridge-methods.scala b/tests/run/mixin-bridge-methods.scala index e0340ebb1..e0340ebb1 100644 --- a/tests/pending/run/mixin-bridge-methods.scala +++ b/tests/run/mixin-bridge-methods.scala diff --git a/tests/pending/run/null-and-intersect.check b/tests/run/null-and-intersect.check index 81890cfef..81890cfef 100644 --- a/tests/pending/run/null-and-intersect.check +++ b/tests/run/null-and-intersect.check diff --git a/tests/pending/run/null-and-intersect.scala b/tests/run/null-and-intersect.scala index 7266dabe6..7266dabe6 100644 --- a/tests/pending/run/null-and-intersect.scala +++ b/tests/run/null-and-intersect.scala diff --git a/tests/pending/run/option-fold.check b/tests/run/option-fold.check index 4e3fe99f9..4e3fe99f9 100644 --- a/tests/pending/run/option-fold.check +++ b/tests/run/option-fold.check diff --git a/tests/pending/run/option-fold.scala b/tests/run/option-fold.scala index 84e346ec7..84e346ec7 100644 --- a/tests/pending/run/option-fold.scala +++ b/tests/run/option-fold.scala diff --git a/tests/pending/run/proxy.check b/tests/run/proxy.check index c40b3db7c..c40b3db7c 100644 --- a/tests/pending/run/proxy.check +++ b/tests/run/proxy.check diff --git a/tests/pending/run/proxy.scala b/tests/run/proxy.scala index 8449b7329..8449b7329 100644 --- a/tests/pending/run/proxy.scala +++ b/tests/run/proxy.scala diff --git a/tests/pending/run/range.scala b/tests/run/range.scala index ee934f627..ee934f627 100644 --- a/tests/pending/run/range.scala +++ b/tests/run/range.scala diff --git a/tests/pending/run/t0325.check b/tests/run/t0325.check index 85fe91dac..85fe91dac 100644 --- a/tests/pending/run/t0325.check +++ b/tests/run/t0325.check diff --git a/tests/pending/run/t0325.scala b/tests/run/t0325.scala index ea6180306..ea6180306 100644 --- a/tests/pending/run/t0325.scala +++ b/tests/run/t0325.scala diff --git a/tests/pending/run/t0631.check b/tests/run/t0631.check index 0a7d5e499..0a7d5e499 100644 --- a/tests/pending/run/t0631.check +++ b/tests/run/t0631.check diff --git a/tests/pending/run/t0631.scala b/tests/run/t0631.scala index 2767b4bf0..2767b4bf0 100644 --- a/tests/pending/run/t0631.scala +++ b/tests/run/t0631.scala diff --git a/tests/pending/run/t1333.check b/tests/run/t1333.check index 6303af7f1..6303af7f1 100644 --- a/tests/pending/run/t1333.check +++ b/tests/run/t1333.check diff --git a/tests/pending/run/t1333.scala b/tests/run/t1333.scala index 1696629cb..1696629cb 100644 --- a/tests/pending/run/t1333.scala +++ b/tests/run/t1333.scala diff --git a/tests/pending/run/t1697.scala b/tests/run/t1697.scala index 39dcdd732..39dcdd732 100644 --- a/tests/pending/run/t1697.scala +++ b/tests/run/t1697.scala diff --git a/tests/pending/run/t1909b.scala b/tests/run/t1909b.scala index b4bb9a1e0..b4bb9a1e0 100644 --- a/tests/pending/run/t1909b.scala +++ b/tests/run/t1909b.scala diff --git a/tests/pending/run/t2074_2.check b/tests/run/t2074_2.check index 0876ef7d0..0876ef7d0 100644 --- a/tests/pending/run/t2074_2.check +++ b/tests/run/t2074_2.check diff --git a/tests/pending/run/t2074_2.scala b/tests/run/t2074_2.scala index 4624170f8..4624170f8 100644 --- a/tests/pending/run/t2074_2.scala +++ b/tests/run/t2074_2.scala diff --git a/tests/pending/run/t2175.scala b/tests/run/t2175.scala index 7885882d3..7885882d3 100644 --- a/tests/pending/run/t2175.scala +++ b/tests/run/t2175.scala diff --git a/tests/pending/run/t2316_run.scala b/tests/run/t2316_run.scala index a2adad415..a2adad415 100644 --- a/tests/pending/run/t2316_run.scala +++ b/tests/run/t2316_run.scala diff --git a/tests/pending/run/t2417.check b/tests/run/t2417.check index 36c954be2..36c954be2 100644 --- a/tests/pending/run/t2417.check +++ b/tests/run/t2417.check diff --git a/tests/pending/run/t2417.scala b/tests/run/t2417.scala index 80105f72b..80105f72b 100644 --- a/tests/pending/run/t2417.scala +++ b/tests/run/t2417.scala diff --git a/tests/pending/run/t2544.check b/tests/run/t2544.check index d19538dca..d19538dca 100644 --- a/tests/pending/run/t2544.check +++ b/tests/run/t2544.check diff --git a/tests/pending/run/t2544.scala b/tests/run/t2544.scala index 6bee2f108..6bee2f108 100644 --- a/tests/pending/run/t2544.scala +++ b/tests/run/t2544.scala diff --git a/tests/pending/run/t2788.check b/tests/run/t2788.check index 684f5f616..684f5f616 100644 --- a/tests/pending/run/t2788.check +++ b/tests/run/t2788.check diff --git a/tests/pending/run/t2788.scala b/tests/run/t2788.scala index 61344029d..61344029d 100644 --- a/tests/pending/run/t2788.scala +++ b/tests/run/t2788.scala diff --git a/tests/pending/run/t3038d.flags b/tests/run/t3038d.flags index ae0844605..ae0844605 100644 --- a/tests/pending/run/t3038d.flags +++ b/tests/run/t3038d.flags diff --git a/tests/pending/run/t3038d.scala b/tests/run/t3038d.scala index 3dab07675..3dab07675 100644 --- a/tests/pending/run/t3038d.scala +++ b/tests/run/t3038d.scala diff --git a/tests/pending/run/t3580.scala b/tests/run/t3580.scala index f91d5a24f..f91d5a24f 100644 --- a/tests/pending/run/t3580.scala +++ b/tests/run/t3580.scala diff --git a/tests/pending/run/t3613.scala b/tests/run/t3613.scala index 1293f62c0..1293f62c0 100644 --- a/tests/pending/run/t3613.scala +++ b/tests/run/t3613.scala diff --git a/tests/pending/run/t3714.scala b/tests/run/t3714.scala index 23a1e2e49..23a1e2e49 100644 --- a/tests/pending/run/t3714.scala +++ b/tests/run/t3714.scala diff --git a/tests/pending/run/t3832.scala b/tests/run/t3832.scala index bc84dca22..bc84dca22 100644 --- a/tests/pending/run/t3832.scala +++ b/tests/run/t3832.scala diff --git a/tests/pending/run/t3984.scala b/tests/run/t3984.scala index 15e50b10f..15e50b10f 100644 --- a/tests/pending/run/t3984.scala +++ b/tests/run/t3984.scala diff --git a/tests/pending/run/t4415.scala b/tests/run/t4415.scala index 33d390869..33d390869 100644 --- a/tests/pending/run/t4415.scala +++ b/tests/run/t4415.scala diff --git a/tests/pending/run/t4482.check b/tests/run/t4482.check index 0cfbf0888..0cfbf0888 100644 --- a/tests/pending/run/t4482.check +++ b/tests/run/t4482.check diff --git a/tests/pending/run/t4482.scala b/tests/run/t4482.scala index 392861c22..392861c22 100644 --- a/tests/pending/run/t4482.scala +++ b/tests/run/t4482.scala diff --git a/tests/pending/run/t4753.check b/tests/run/t4753.check index 7b19ee8df..7b19ee8df 100644 --- a/tests/pending/run/t4753.check +++ b/tests/run/t4753.check diff --git a/tests/pending/run/t4753.scala b/tests/run/t4753.scala index cfb252cbe..cfb252cbe 100644 --- a/tests/pending/run/t4753.scala +++ b/tests/run/t4753.scala diff --git a/tests/pending/run/t4859.check b/tests/run/t4859.check index d329744ca..d329744ca 100644 --- a/tests/pending/run/t4859.check +++ b/tests/run/t4859.check diff --git a/tests/pending/run/t4859.scala b/tests/run/t4859.scala index 8b354ca94..8b354ca94 100644 --- a/tests/pending/run/t4859.scala +++ b/tests/run/t4859.scala diff --git a/tests/pending/run/t4871.check b/tests/run/t4871.check index a60526a0f..a60526a0f 100644 --- a/tests/pending/run/t4871.check +++ b/tests/run/t4871.check diff --git a/tests/pending/run/t4871.scala b/tests/run/t4871.scala index e25d5c138..e25d5c138 100644 --- a/tests/pending/run/t4871.scala +++ b/tests/run/t4871.scala diff --git a/tests/pending/run/t5158.check b/tests/run/t5158.check index 573541ac9..573541ac9 100644 --- a/tests/pending/run/t5158.check +++ b/tests/run/t5158.check diff --git a/tests/pending/run/t5158.scala b/tests/run/t5158.scala index 34c02c306..34c02c306 100644 --- a/tests/pending/run/t5158.scala +++ b/tests/run/t5158.scala diff --git a/tests/pending/run/t5293-map.scala b/tests/run/t5293-map.scala index 1ef7d97e5..1ef7d97e5 100644 --- a/tests/pending/run/t5293-map.scala +++ b/tests/run/t5293-map.scala diff --git a/tests/pending/run/t5293.scala b/tests/run/t5293.scala index 8a99989c5..8a99989c5 100644 --- a/tests/pending/run/t5293.scala +++ b/tests/run/t5293.scala diff --git a/tests/pending/run/t5407.check b/tests/run/t5407.check index 51993f072..51993f072 100644 --- a/tests/pending/run/t5407.check +++ b/tests/run/t5407.check diff --git a/tests/pending/run/t5407.scala b/tests/run/t5407.scala index cc761e5c0..cc761e5c0 100644 --- a/tests/pending/run/t5407.scala +++ b/tests/run/t5407.scala diff --git a/tests/pending/run/t6070.check b/tests/run/t6070.check index 00750edc0..00750edc0 100644 --- a/tests/pending/run/t6070.check +++ b/tests/run/t6070.check diff --git a/tests/pending/run/t6070.scala b/tests/run/t6070.scala index 828386d13..828386d13 100644 --- a/tests/pending/run/t6070.scala +++ b/tests/run/t6070.scala diff --git a/tests/pending/run/t6198.scala b/tests/run/t6198.scala index d893b9568..d893b9568 100644 --- a/tests/pending/run/t6198.scala +++ b/tests/run/t6198.scala diff --git a/tests/pending/run/t6206.check b/tests/run/t6206.check index 806457366..806457366 100644 --- a/tests/pending/run/t6206.check +++ b/tests/run/t6206.check diff --git a/tests/pending/run/t6206.scala b/tests/run/t6206.scala index 668ade7f5..668ade7f5 100644 --- a/tests/pending/run/t6206.scala +++ b/tests/run/t6206.scala diff --git a/tests/pending/run/t6253a.scala b/tests/run/t6253a.scala index c2db1f5af..c2db1f5af 100644 --- a/tests/pending/run/t6253a.scala +++ b/tests/run/t6253a.scala diff --git a/tests/pending/run/t6253b.scala b/tests/run/t6253b.scala index c049aea7f..c049aea7f 100644 --- a/tests/pending/run/t6253b.scala +++ b/tests/run/t6253b.scala diff --git a/tests/pending/run/t6253c.scala b/tests/run/t6253c.scala index 39c3a5b17..39c3a5b17 100644 --- a/tests/pending/run/t6253c.scala +++ b/tests/run/t6253c.scala diff --git a/tests/pending/run/t6337a.scala b/tests/run/t6337a.scala index 0a78cd0b8..0a78cd0b8 100644 --- a/tests/pending/run/t6337a.scala +++ b/tests/run/t6337a.scala diff --git a/tests/pending/run/t6385.scala b/tests/run/t6385.scala index f86fe8c14..f86fe8c14 100644 --- a/tests/pending/run/t6385.scala +++ b/tests/run/t6385.scala diff --git a/tests/pending/run/t6628.check b/tests/run/t6628.check index bb101b641..bb101b641 100644 --- a/tests/pending/run/t6628.check +++ b/tests/run/t6628.check diff --git a/tests/pending/run/t6628.scala b/tests/run/t6628.scala index bc87c1250..bc87c1250 100644 --- a/tests/pending/run/t6628.scala +++ b/tests/run/t6628.scala diff --git a/tests/pending/run/t6793.scala b/tests/run/t6793.scala index 3d8492c10..3d8492c10 100644 --- a/tests/pending/run/t6793.scala +++ b/tests/run/t6793.scala diff --git a/tests/pending/run/t7200.scala b/tests/run/t7200.scala index 8f33d016f..8f33d016f 100644 --- a/tests/pending/run/t7200.scala +++ b/tests/run/t7200.scala diff --git a/tests/pending/run/t7214.scala b/tests/run/t7214.scala index d73fe6dd5..d73fe6dd5 100644 --- a/tests/pending/run/t7214.scala +++ b/tests/run/t7214.scala diff --git a/tests/pending/run/t7571.scala b/tests/run/t7571.scala index fd4babee3..fd4babee3 100644 --- a/tests/pending/run/t7571.scala +++ b/tests/run/t7571.scala diff --git a/tests/pending/run/t8177f.scala b/tests/run/t8177f.scala index 6f9a68c11..6f9a68c11 100644 --- a/tests/pending/run/t8177f.scala +++ b/tests/run/t8177f.scala diff --git a/tests/pending/run/t8197.scala b/tests/run/t8197.scala index b510f96f1..b510f96f1 100644 --- a/tests/pending/run/t8197.scala +++ b/tests/run/t8197.scala diff --git a/tests/pending/run/try-catch-unify.check b/tests/run/try-catch-unify.check index 67a8c64a3..67a8c64a3 100644 --- a/tests/pending/run/try-catch-unify.check +++ b/tests/run/try-catch-unify.check diff --git a/tests/pending/run/try-catch-unify.scala b/tests/run/try-catch-unify.scala index 151e549e5..151e549e5 100644 --- a/tests/pending/run/try-catch-unify.scala +++ b/tests/run/try-catch-unify.scala diff --git a/tests/pending/run/unapplyArray.scala b/tests/run/unapplyArray.scala index a29ef124b..a29ef124b 100644 --- a/tests/pending/run/unapplyArray.scala +++ b/tests/run/unapplyArray.scala diff --git a/tests/run/value-class-extractor.scala b/tests/run/value-class-extractor.scala index 5628fea47..07f32e0e5 100644 --- a/tests/run/value-class-extractor.scala +++ b/tests/run/value-class-extractor.scala @@ -6,7 +6,7 @@ object NonNullChar { @inline final val None = new NonNullChar(0.toChar) } -final class SomeProduct /*extends Product3[String, Int, List[String]]*/ { +final class SomeProduct extends Product3[String, Int, List[String]] { def canEqual(x: Any) = x.isInstanceOf[SomeProduct] def _1 = "abc" def _2 = 5 diff --git a/tests/pending/run/verify-ctor.check b/tests/run/verify-ctor.check index 8baef1b4a..8baef1b4a 100644 --- a/tests/pending/run/verify-ctor.check +++ b/tests/run/verify-ctor.check diff --git a/tests/pending/run/verify-ctor.scala b/tests/run/verify-ctor.scala index 528d038a8..528d038a8 100644 --- a/tests/pending/run/verify-ctor.scala +++ b/tests/run/verify-ctor.scala diff --git a/tests/pending/run/virtpatmat_try.check b/tests/run/virtpatmat_try.check index 80ebbf494..80ebbf494 100644 --- a/tests/pending/run/virtpatmat_try.check +++ b/tests/run/virtpatmat_try.check diff --git a/tests/pending/run/virtpatmat_try.flags b/tests/run/virtpatmat_try.flags index 3f5a3100e..3f5a3100e 100644 --- a/tests/pending/run/virtpatmat_try.flags +++ b/tests/run/virtpatmat_try.flags diff --git a/tests/pending/run/virtpatmat_try.scala b/tests/run/virtpatmat_try.scala index 2cd05b799..2cd05b799 100644 --- a/tests/pending/run/virtpatmat_try.scala +++ b/tests/run/virtpatmat_try.scala |