From cbb88ac24e1ffe7dcf97ce4b7935493cc6f0b121 Mon Sep 17 00:00:00 2001 From: Jason Zaugg Date: Wed, 15 Jan 2014 11:45:33 +0100 Subject: [nomaster] Update MiMa and use new wildcard filter scala.reflect.internal._ now gets a free pass from binary compatibility checking. Previously, we had to excrutiatingly exclude violations individually. --- bincompat-backward.whitelist.conf | 217 +------ bincompat-forward.whitelist.conf | 1280 +------------------------------------ build.xml | 2 +- 3 files changed, 13 insertions(+), 1486 deletions(-) diff --git a/bincompat-backward.whitelist.conf b/bincompat-backward.whitelist.conf index 0500ec10ab..2d3c20370d 100644 --- a/bincompat-backward.whitelist.conf +++ b/bincompat-backward.whitelist.conf @@ -1,4 +1,7 @@ filter { + packages = [ + "scala.reflect.internal" + ] problems=[ # Scala library { @@ -61,136 +64,6 @@ filter { # problemName=IncompatibleResultTypeProblem # }, - - # scala.reflect.internal - { - matchName="scala.reflect.internal.TreeInfo.scala$reflect$internal$TreeInfo$$isVarPatternDeep0$1" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.TreeInfo.typeArguments" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.TreeInfo.applyDepth" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.TreeInfo.firstTypeArg" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.TreeInfo.methPart" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.TreeInfo.firstArgument" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Trees.DefDef" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.ExistentialsAndSkolems.deskolemizeTypeParams" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.deAlias" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.deskolemizeTypeParams" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.AnnotationInfos#Annotatable.addThrowsAnnotation" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.StdAttachments#Attachable.setAttachments" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Types#TypeVar.scala$reflect$internal$Types$TypeVar$$addBound$1" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.AnnotationCheckers$AnnotationChecker" - problemName=IncompatibleTemplateDefProblem - }, - { - matchName="scala.reflect.internal.Types.deAlias" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Types.inheritsJavaVarArgsMethod" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Types.nonTrivialMembers" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Types.isJavaVarargsAncestor" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Types.nestedMemberType" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Types.normalizeAliases" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Trees#ChangeOwnerTraverser.changeOwner" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.StdAttachments.SuppressMacroExpansionAttachment" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.Statistics#RelCounter.scala$reflect$internal$util$Statistics$RelCounter$$super$prefix" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Names#NameOps.name" - problemName=MissingFieldProblem - }, - { - matchName="scala.reflect.internal.ExistentialsAndSkolems.existentialTransform$default$3" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.ExistentialsAndSkolems.existentialTransform" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.ExistentialsAndSkolems.packSymbols" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.ExistentialsAndSkolems.packSymbols$default$3" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.ExistentialsAndSkolems.isRawParameter" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Trees.substituteInfoParamsIntoDefDef" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.ClassfileConstants.xxxunusedxxxx" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Types#TypeVar.setInst" - problemName=IncompatibleResultTypeProblem - }, # scala.concurrent.forkjoin (SI-7442) { matchName="scala.concurrent.forkjoin.ForkJoinTask.internalGetCompleter" @@ -220,26 +93,6 @@ filter { matchName="scala.concurrent.forkjoin.ForkJoinPool.helpJoinOnce" problemName=IncompatibleResultTypeProblem }, - { - matchName="scala.reflect.internal.Definitions#DefinitionsClass.getClassMethods" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Definitions#DefinitionsClass.primitiveGetClassMethods" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.StdAttachments.unsuppressMacroExpansion" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.StdAttachments.suppressMacroExpansion" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.StdAttachments.isMacroExpansionSuppressed" - problemName=MissingMethodProblem - }, { matchName="scala.reflect.runtime.JavaUniverse.isInvalidClassName" problemName=MissingMethodProblem @@ -247,70 +100,6 @@ filter { { matchName="scala.reflect.runtime.SymbolLoaders.isInvalidClassName" problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Types.uncheckedBounds" - problemName=MissingMethodProblem - } - { - matchName="scala.reflect.internal.Trees.scala$reflect$internal$Trees$$duplicator" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Trees.duplicateAndKeepPositions" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Trees.scala$reflect$internal$Trees$$duplicator" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.scala$reflect$internal$Trees$$duplicator" - problemName=IncompatibleResultTypeProblem - }, - { - matchName="scala.reflect.internal.StdNames.compactifyName" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet" - problemName=FinalClassProblem - }, - { - matchName="scala.reflect.internal.util.WeakReferenceWithEquals" - problemName=MissingClassProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.scala$reflect$internal$Types$$uniques" - problemName=IncompatibleResultTypeProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.scala$reflect$internal$Types$$uniques_=" - problemName=IncompatibleMethTypeProblem - }, - { - matchName="scala.reflect.internal.Types.scala$reflect$internal$Types$$uniques" - problemName=IncompatibleResultTypeProblem - }, - { - matchName="scala.reflect.internal.Types.scala$reflect$internal$Types$$uniques_=" - problemName=IncompatibleMethTypeProblem - }, - { - matchName="scala.reflect.internal.Types.scala$reflect$internal$Types$$uniques" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Types.scala$reflect$internal$Types$$uniques_=" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.HasFlags.isDeferredOrDefault" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.HasFlags.isDeferredNotDefault" - problemName=MissingMethodProblem } ] } diff --git a/bincompat-forward.whitelist.conf b/bincompat-forward.whitelist.conf index 3b61a02bce..087fa07b37 100644 --- a/bincompat-forward.whitelist.conf +++ b/bincompat-forward.whitelist.conf @@ -1,4 +1,7 @@ filter { + packages = [ + "scala.reflect.internal" + ] problems=[ # rework d526f8bd74 to duplicate tailImpl as a private method # { @@ -98,339 +101,6 @@ filter { # problemName=MissingMethodProblem # }, - # scala.reflect.internal - { - matchName="scala.reflect.internal.Types#Type.dealiasWidenChain" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Types#Type.dealiasWiden" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Types#Type.addThrowsAnnotation" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Types#TypeVar.scala$reflect$internal$Types$TypeVar$$unifySpecific$1" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Types#SubstSymMap.mapTreeSymbols" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Types#SubstSymMap.this" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.PrivateWithin" - problemName=MissingClassProblem - }, - { - matchName="scala.reflect.internal.TreeInfo$Applied" - problemName=MissingClassProblem - }, - { - matchName="scala.reflect.internal.AnnotationInfos#Annotatable.addThrowsAnnotation" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Types.inheritsJavaVarArgsMethod" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Types.nonTrivialMembers" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Types.isJavaVarargsAncestor" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Types.normalizeAliases" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Types.nestedMemberType" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Types.deAlias" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.ExistentialsAndSkolems.deskolemizeTypeParams" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.StdAttachments#Attachable.setAttachments" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.AnnotationInfos#AnnotationInfo.completeInfo" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Symbols#Symbol.isCompileTimeOnly" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Symbols#Symbol.addThrowsAnnotation" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Symbols#Symbol.toOption" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Symbols#Symbol.compileTimeOnlyMessage" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Symbols#Symbol.setAttachments" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Symbols#Symbol.addAnnotation" - problemName=IncompatibleMethTypeProblem - }, - { - matchName="scala.reflect.internal.Trees.DefDef" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Trees$TreeStackTraverser" - problemName=MissingClassProblem - }, - { - matchName="scala.reflect.internal.Trees#ChangeOwnerTraverser.change" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.AnnotationCheckers$AnnotationChecker" - problemName=IncompatibleTemplateDefProblem - }, - { - matchName="scala.reflect.internal.TreeInfo$Applied$" - problemName=MissingClassProblem - }, - { - matchName="scala.reflect.internal.Trees#Tree.setAttachments" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.StdNames#TermNames.DEFAULT_CASE" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.TreeInfo.Applied" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.TreeInfo.isWildcardStarType" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.TreeInfo.isSyntheticDefaultCase" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.TreeInfo.StripCast" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.TreeInfo.dissectApplied" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.TreeInfo.stripCast" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.SymbolTable" - problemName=MissingTypesProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.StringContextStripMarginOps" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.inheritsJavaVarArgsMethod" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.assertCorrectThread" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.SuppressMacroExpansionAttachment" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.nonTrivialMembers" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.isJavaVarargsAncestor" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.normalizeAliases" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.DefDef" - problemName=IncompatibleMethTypeProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.nestedMemberType" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.importPrivateWithinFromJavaFlags" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.StdAttachments.SuppressMacroExpansionAttachment" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Definitions#DefinitionsClass.ArrayModule_genericApply" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Definitions#DefinitionsClass.allParameters" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Definitions#DefinitionsClass.Predef_wrapArray" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Definitions#DefinitionsClass.dropNullaryMethod" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Definitions#DefinitionsClass.ArrayModule_apply" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Definitions#DefinitionsClass.OptionModule" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Definitions#DefinitionsClass.Option_apply" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Definitions#DefinitionsClass.CompileTimeOnlyAttr" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.AnnotationInfos#LazyAnnotationInfo.completeInfo" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.package" - problemName=MissingClassProblem - }, - { - matchName="scala.reflect.internal.util.package$" - problemName=MissingClassProblem - }, - { - matchName="scala.reflect.internal.util.StripMarginInterpolator" - problemName=MissingClassProblem - }, - { - matchName="scala.reflect.internal.util.package$StringContextStripMarginOps" - problemName=MissingClassProblem - }, - { - matchName="scala.reflect.internal.annotations.compileTimeOnly" - problemName=MissingClassProblem - }, - { - matchName="scala.reflect.internal.StdNames#TermNames.SelectFromTypeTree" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.ExistentialsAndSkolems.existentialTransform$default$3" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.ExistentialsAndSkolems.existentialTransform" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.ExistentialsAndSkolems.packSymbols" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.ExistentialsAndSkolems.packSymbols$default$3" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.ExistentialsAndSkolems.isRawParameter" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Trees.substituteInfoParamsIntoDefDef" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.existentialTransform$default$3" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.existentialTransform" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.substituteInfoParamsIntoDefDef" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.packSymbols" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.packSymbols$default$3" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.isRawParameter" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.ClassfileConstants.CONSTANT_INVOKEDYNAMIC" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.ClassfileConstants.invokedynamic" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.ClassfileConstants.CONSTANT_METHODHANDLE" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.ClassfileConstants.CONSTANT_METHODTYPE" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Types#TypeVar.setInst" - problemName=IncompatibleResultTypeProblem - }, - { - matchName="scala.reflect.internal.TreeInfo.effectivePatternArity" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.ModifierFlags.DEFAULTMETHOD" - problemName=MissingMethodProblem - }, # scala.concurrent.forkjoin (SI-7442) { matchName="scala.concurrent.forkjoin.ForkJoinPool.registerWorker" @@ -481,960 +151,28 @@ filter { problemName=MissingMethodProblem }, { - matchName="scala.reflect.internal.Definitions#DefinitionsClass.getClassMethods" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Definitions#DefinitionsClass.primitiveGetClassMethods" + matchName="scala.reflect.runtime.JavaMirrors#JavaMirror#FromJavaClassCompleter.scala$reflect$runtime$JavaMirrors$JavaMirror$FromJavaClassCompleter$$enterEmptyCtorIfNecessary$1" problemName=MissingMethodProblem }, { - matchName="scala.reflect.internal.StdAttachments.unsuppressMacroExpansion" + matchName="scala.reflect.runtime.ReflectionUtils.scalacShouldntLoadClass" problemName=MissingMethodProblem }, { - matchName="scala.reflect.internal.StdAttachments.suppressMacroExpansion" + matchName="scala.reflect.runtime.ReflectionUtils.scalacShouldntLoadClassfile" problemName=MissingMethodProblem }, { - matchName="scala.reflect.internal.StdAttachments.isMacroExpansionSuppressed" + matchName="scala.reflect.runtime.ReflectionUtils.isTraitImplementation" problemName=MissingMethodProblem }, { - matchName="scala.reflect.internal.SymbolTable.unsuppressMacroExpansion" + matchName="scala.reflect.runtime.JavaMirrors#JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$PackageAndClassPattern" problemName=MissingMethodProblem }, { - matchName="scala.reflect.internal.SymbolTable.suppressMacroExpansion" + matchName="scala.reflect.runtime.SymbolLoaders.isInvalidClassName" problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.isMacroExpansionSuppressed" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.runtime.JavaMirrors#JavaMirror#FromJavaClassCompleter.scala$reflect$runtime$JavaMirrors$JavaMirror$FromJavaClassCompleter$$enterEmptyCtorIfNecessary$1" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.runtime.ReflectionUtils.scalacShouldntLoadClass" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.runtime.ReflectionUtils.scalacShouldntLoadClassfile" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.runtime.ReflectionUtils.isTraitImplementation" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.runtime.SymbolLoaders.isInvalidClassName" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.uncheckedBounds" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Types.uncheckedBounds" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Definitions#DefinitionsClass.UncheckedBoundsClass" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.annotations.uncheckedBounds" - problemName=MissingClassProblem - } - { - matchName="scala.reflect.internal.Trees$Duplicator" - problemName=MissingClassProblem - }, - { - matchName="scala.reflect.internal.Trees.duplicateAndKeepPositions" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Trees.scala$reflect$internal$Trees$$duplicator" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Trees.scala$reflect$internal$Trees$$duplicator" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.duplicateAndKeepPositions" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.scala$reflect$internal$Trees$$duplicator" - problemName=IncompatibleResultTypeProblem - }, - { - matchName="scala.reflect.runtime.JavaMirrors#JavaMirror.scala$reflect$runtime$JavaMirrors$JavaMirror$$PackageAndClassPattern" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.compactifyName" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.StdNames.compactifyName" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet$Diagnostics" - problemName=MissingClassProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet$Entry" - problemName=MissingClassProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet$" - problemName=MissingClassProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet" - problemName=MissingTypesProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.newBuilder" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.min" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.initialCapacity" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.foldLeft" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.toIterable" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.toIterable" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.union" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.union" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.groupBy" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.groupBy" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.toSet" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.toSet" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.toSeq" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.toSeq" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.toIndexedSeq" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.unzip3" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.nonEmpty" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.slice" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.max" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.addString" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.addString" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.addString" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.subsetOf" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.fold" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.toIterator" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.foreach" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.flatten" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.headOption" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.mapResult" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.scala$reflect$internal$util$WeakHashSet$$bucketFor" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.toTraversable" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.toTraversable" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.filter" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.tails" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.last" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.collect" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.takeRight" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.lastOption" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.reduceRightOption" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.+" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.+" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.+" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.+" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.+" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.+" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.take" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.zipWithIndex" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.foldRight" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.hasDefiniteSize" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.<<" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.sliceWithKnownBound" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.to" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.result" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.result" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.isTraversableAgain" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.add" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.partition" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.toBuffer" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.update" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.view" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.view" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.view" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.view" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.tail" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.zipAll" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.retain" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.find" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.withFilter" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.init" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.findEntryOrUpdate" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.diagnostics" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.zip" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.drop" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.:\\" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.companion" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.toMap" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.toMap" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.genericBuilder" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.unzip" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.seq" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.seq" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.seq" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.seq" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.seq" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.seq" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.seq" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.&~" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.toStream" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.-=" - problemName=IncompatibleResultTypeProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.-=" - problemName=IncompatibleResultTypeProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.-=" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.splitAt" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.addEntry" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.aggregate" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.parCombiner" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.maxBy" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.sliding" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.sliding" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.repr" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.repr" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.scan" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.span" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.toArray" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.findEntry" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.toVector" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.scala$collection$SetLike$$super$map" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.dropWhile" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.forall" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.reduce" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.intersect" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.this" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.--=" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.loadFactor" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.copyToArray" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.copyToArray" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.copyToArray" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.canEqual" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.inits" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.sliceWithKnownDelta" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.grouped" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.minBy" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet./:" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.--" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.--" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.sameElements" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.par" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.equals" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.sizeHint" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.sizeHint" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.sizeHint" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet./:\\" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.threshhold_=" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.++" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.++" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.++" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.map" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.clone" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.clone" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.diff" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.diff" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.isEmpty" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.&" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.head" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.toCollection" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.toCollection" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.++:" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.++:" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.mkString" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.mkString" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.mkString" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.threshhold" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.iterator" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.toList" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.-" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.-" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.-" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.-" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.-" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.-" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.-" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.++=" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.takeWhile" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.exists" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.scanRight" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.transpose" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.sizeHintBounded" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.hashCode" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.scala$collection$mutable$Cloneable$$super$clone" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.remove" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.|" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.reduceLeft" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.count" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.scanLeft" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.reduceLeftOption" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.dropRight" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.collectFirst" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.flatMap" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.+=" - problemName=IncompatibleResultTypeProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.+=" - problemName=IncompatibleResultTypeProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.+=" - problemName=IncompatibleResultTypeProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.+=" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.reversed" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.sum" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.filterNot" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.product" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.thisCollection" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.thisCollection" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.copyToBuffer" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.subsets" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.subsets" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.reduceRight" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.empty" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.empty" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.empty" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.stringPrefix" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.util.WeakHashSet.reduceOption" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.scala$reflect$internal$Types$$uniques" - problemName=IncompatibleResultTypeProblem - }, - { - matchName="scala.reflect.internal.SymbolTable.scala$reflect$internal$Types$$uniques_=" - problemName=IncompatibleMethTypeProblem - }, - { - matchName="scala.reflect.internal.Types.scala$reflect$internal$Types$$uniques" - problemName=IncompatibleResultTypeProblem - }, - { - matchName="scala.reflect.internal.Types.scala$reflect$internal$Types$$uniques_=" - problemName=IncompatibleMethTypeProblem - }, - { - matchName="scala.reflect.internal.Types.scala$reflect$internal$Types$$uniques" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Types.scala$reflect$internal$Types$$uniques_=" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Symbols#Symbol.isDeferredOrDefault" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Symbols#Symbol.isDeferredNotDefault" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.HasFlags.isDeferredOrDefault" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.HasFlags.isDeferredNotDefault" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Trees#Modifiers.isDeferredOrDefault" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Trees#Modifiers.isDeferredNotDefault" - problemName=MissingMethodProblem - }, - { - matchName="scala.reflect.internal.Symbols#Symbol.rawInfoIsNoType" - problemName=MissingMethodProblem } ] } diff --git a/build.xml b/build.xml index 39685163a6..a54b033b01 100644 --- a/build.xml +++ b/build.xml @@ -1605,7 +1605,7 @@ TODO: - + -- cgit v1.2.3 From ff137422794a3da002bcad9b67afd3ef02fceaa1 Mon Sep 17 00:00:00 2001 From: Jason Zaugg Date: Tue, 14 Jan 2014 12:15:44 +0100 Subject: [nomaster] SI-8146 Fix non-deterministic <:< for deeply nested types Backported from master. This is a squashed commmit comprising: SI-8146 Pending test, diagnosis for bug in decidability of <:< (cherry picked from commit 8beeef339ad65f3308ece6fb0440cdb31b1ad404) SI-8146 Test cases for typechecking decidability Taken from "On Decidability of Nominal Subtyping with Variance" (Pierce, Kennedy), which was implemented in 152563b. Part of the implementation (SubTypePair) will be changed in the following commit to fix the non-deterministic errors typechecking heavily nested types involving aliases or annotations. (cherry picked from commit 2e28cf7f76c3d5fd0c2df4274f1af9acb42de699) SI-8146 Fix non-deterministic <:< for deeply nested types In the interests of keeping subtyping decidable [1], 152563b added some bookkeeping to `isSubType` to detect cycles. However, this was based on a hash set containing instances of `SubTypePair`, and that class had inconsistencies between its `hashCode` (in terms of `Type#hashCode`) and `equals` (in terms of `=:=`). This inconsistency can be seen in: scala> trait C { def apply: (Int @unchecked) } defined trait C scala> val intUnchecked = typeOf[C].decls.head.info.finalResultType intUnchecked: $r.intp.global.Type = Int @unchecked scala> val p1 = new SubTypePair(intUnchecked, intUnchecked) p1: $r.intp.global.SubTypePair = Int @unchecked <: val p2 = new SubTypePair(intUnchecked.withoutAnnotations, intUnchecked.withoutAnnotations) p2: $r.intp.global.SubTypePair = Int <: p1 == p2 res0: Boolean = true scala> p1.hashCode == p2.hashCode res1: Boolean = false This commit switches to using `Type#==`, by way of the standard case class equality. The risk here is that you could find a subtyping computation that progresses in such a manner that we don't detect the cycle. It would need to produce an infinite stream of representations for types that were `=:=` but not `==`. If that happened, we'd fail to terminate, rather than judging the relationship as `false`. [1] http://research.microsoft.com/pubs/64041/fool2007.pdf (cherry picked from commit a09e143b7fd1c6b433386d45e9c5ae3548819b59) Conflicts: src/reflect/scala/reflect/internal/tpe/TypeComparers.scala src/reflect/scala/reflect/runtime/JavaUniverseForce.scala --- src/reflect/scala/reflect/internal/Types.scala | 35 ++++-------- test/files/neg/t8146-non-finitary-2.check | 9 +++ test/files/neg/t8146-non-finitary-2.scala | 8 +++ test/files/neg/t8146-non-finitary.check | 9 +++ test/files/neg/t8146-non-finitary.scala | 7 +++ test/files/pos/t8146a.scala | 9 +++ test/files/pos/t8146b.scala | 77 ++++++++++++++++++++++++++ 7 files changed, 129 insertions(+), 25 deletions(-) create mode 100644 test/files/neg/t8146-non-finitary-2.check create mode 100644 test/files/neg/t8146-non-finitary-2.scala create mode 100644 test/files/neg/t8146-non-finitary.check create mode 100644 test/files/neg/t8146-non-finitary.scala create mode 100644 test/files/pos/t8146a.scala create mode 100644 test/files/pos/t8146b.scala diff --git a/src/reflect/scala/reflect/internal/Types.scala b/src/reflect/scala/reflect/internal/Types.scala index c684f4d690..2f49995030 100644 --- a/src/reflect/scala/reflect/internal/Types.scala +++ b/src/reflect/scala/reflect/internal/Types.scala @@ -5230,30 +5230,15 @@ trait Types extends api.Types { self: SymbolTable => } } - class SubTypePair(val tp1: Type, val tp2: Type) { - override def hashCode = tp1.hashCode * 41 + tp2.hashCode - override def equals(other: Any) = other match { - case stp: SubTypePair => - // suspend TypeVars in types compared by =:=, - // since we don't want to mutate them simply to check whether a subtype test is pending - // in addition to making subtyping "more correct" for type vars, - // it should avoid the stackoverflow that's been plaguing us (https://groups.google.com/d/topic/scala-internals/2gHzNjtB4xA/discussion) - // this method is only called when subtyping hits a recursion threshold (subsametypeRecursions >= LogPendingSubTypesThreshold) - def suspend(tp: Type) = - if (tp.isGround) null else suspendTypeVarsInType(tp) - def revive(suspension: List[TypeVar]) = - if (suspension ne null) suspension foreach (_.suspended = false) - - val suspensions = Array(tp1, stp.tp1, tp2, stp.tp2) map suspend - - val sameTypes = (tp1 =:= stp.tp1) && (tp2 =:= stp.tp2) - - suspensions foreach revive - - sameTypes - case _ => - false - } + final case class SubTypePair(tp1: Type, tp2: Type) { + // SI-8146 we used to implement equality here in terms of pairwise =:=. + // But, this was inconsistent with hashCode, which was based on the + // Type#hashCode, based on the structure of types, not the meaning. + // Now, we use `Type#{equals,hashCode}` as the (consistent) basis for + // detecting cycles (aka keeping subtyping decidable.) + // + // I added tests to show that we detect the cycle: neg/t8146-no-finitary* + override def toString = tp1+" <: if (subsametypeRecursions >= LogPendingSubTypesThreshold) { val p = new SubTypePair(tp1, tp2) if (pendingSubTypes(p)) - false + false // see neg/t8146-no-finitary* else try { pendingSubTypes += p diff --git a/test/files/neg/t8146-non-finitary-2.check b/test/files/neg/t8146-non-finitary-2.check new file mode 100644 index 0000000000..8c2e1436c2 --- /dev/null +++ b/test/files/neg/t8146-non-finitary-2.check @@ -0,0 +1,9 @@ +t8146-non-finitary-2.scala:5: error: class graph is not finitary because type parameter X is expansively recursive +trait C[X] extends N[N[C[D[X]]]] + ^ +t8146-non-finitary-2.scala:7: error: type mismatch; + found : C[Int] + required: N[C[Int]] + def foo(c: C[Int]): N[C[Int]] = c + ^ +two errors found diff --git a/test/files/neg/t8146-non-finitary-2.scala b/test/files/neg/t8146-non-finitary-2.scala new file mode 100644 index 0000000000..c12f5f8f49 --- /dev/null +++ b/test/files/neg/t8146-non-finitary-2.scala @@ -0,0 +1,8 @@ +// Example 3 from "On Decidability of Nominal Subtyping with Variance" (Pierce, Kennedy) +// http://research.microsoft.com/pubs/64041/fool2007.pdf +trait N[-Z] +trait D[Y] +trait C[X] extends N[N[C[D[X]]]] +object Test { + def foo(c: C[Int]): N[C[Int]] = c +} diff --git a/test/files/neg/t8146-non-finitary.check b/test/files/neg/t8146-non-finitary.check new file mode 100644 index 0000000000..8363b750ca --- /dev/null +++ b/test/files/neg/t8146-non-finitary.check @@ -0,0 +1,9 @@ +t8146-non-finitary.scala:4: error: class graph is not finitary because type parameter A is expansively recursive +trait C[A] extends N[N[C[C[A]]]] + ^ +t8146-non-finitary.scala:6: error: type mismatch; + found : C[Int] + required: N[C[Int]] + def foo(c: C[Int]): N[C[Int]] = c + ^ +two errors found diff --git a/test/files/neg/t8146-non-finitary.scala b/test/files/neg/t8146-non-finitary.scala new file mode 100644 index 0000000000..3d8a3074c7 --- /dev/null +++ b/test/files/neg/t8146-non-finitary.scala @@ -0,0 +1,7 @@ +// Example 3 from "On Decidability of Nominal Subtyping with Variance" (Pierce, Kennedy) +// http://research.microsoft.com/pubs/64041/fool2007.pdf +trait N[-A] +trait C[A] extends N[N[C[C[A]]]] +object Test { + def foo(c: C[Int]): N[C[Int]] = c +} diff --git a/test/files/pos/t8146a.scala b/test/files/pos/t8146a.scala new file mode 100644 index 0000000000..e4eb8d3fd1 --- /dev/null +++ b/test/files/pos/t8146a.scala @@ -0,0 +1,9 @@ +trait M[+A] + +object Test { + type Inty = Int + def t1( + x: M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[Int @unchecked]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] + ): M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[M[Inty @unchecked]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] + = x +} diff --git a/test/files/pos/t8146b.scala b/test/files/pos/t8146b.scala new file mode 100644 index 0000000000..dd031f66c8 --- /dev/null +++ b/test/files/pos/t8146b.scala @@ -0,0 +1,77 @@ +// non-deterministic type errors, non-termination. +// seems to be due to inconsistent hashing/equality in SubTypePair + +import scala.language.{existentials, implicitConversions} +import scala.annotation.unchecked.uncheckedVariance + +trait Column[T] + +// Turning this into a trait reduces (eliminates?) the likelihood of type errors (but not of non-termination) +abstract class Shape[Level <: ShapeLevel, -Mixed_, Unpacked_, Packed_] + +trait ShapeLevel +trait NestedShapeLevel extends ShapeLevel +trait FlatShapeLevel extends NestedShapeLevel +trait ColumnsShapeLevel extends FlatShapeLevel + +trait ProvenShape[U] + +object ProvenShape { + implicit def proveShapeOf[T, U](v: T)(implicit sh: Shape[_ <: FlatShapeLevel, T, U, _]): ProvenShape[U] = ??? +} + +sealed abstract class HList { + type Self <: HList + type :: [E] = HCons[E, Self] + final def :: [E](elem: E): :: [E] = ??? +} + +final class HCons[+H, +T <: HList](val head: H, val tail: T) extends HList { + type Self = HCons[H @uncheckedVariance, T @uncheckedVariance] +} + +final object HNil extends HList { + type Self = HNil.type +} + +// Success is more likely when not using these aliases +object syntax { + type :: [+H, +T <: HList] = HCons[H, T] + type HNil = HNil.type +} + +class HListBench { + + import syntax._ + + implicit def columnShape[T, Level <: ShapeLevel]: Shape[Level, Column[T], T, Column[T]] = ??? + implicit def provenShape[T, P](implicit shape: Shape[_ <: FlatShapeLevel, T, _, P]): Shape[FlatShapeLevel, ProvenShape[T], T, P] = ??? + final class HListShape[Level <: ShapeLevel, M <: HList, U <: HList, P <: HList](val shapes: Seq[Shape[_ <: ShapeLevel, _, _, _]]) extends Shape[Level, M, U, P] + implicit def hnilShape[Level <: ShapeLevel] = new HListShape[Level, HNil.type, HNil.type, HNil.type](Nil) + implicit def hconsShape[Level <: ShapeLevel, M1, M2 <: HList, U1, U2 <: HList, P1, P2 <: HList] + (implicit s1: Shape[_ <: Level, M1, U1, P1], s2: HListShape[_ <: Level, M2, U2, P2]) = + new HListShape[Level, M1 :: M2, U1 :: U2, P1 :: P2](s1 +: s2.shapes) + + trait A[T] { + def * : ProvenShape[T] + } + + trait B extends A[ + Int :: Int :: Int :: Int :: Int :: + Int :: Int :: Int :: Int :: Int :: + Int :: Int :: Int :: Int :: Int :: + Int :: Int :: Int :: Int :: Int :: + Int :: Int :: Int :: Int :: Int :: + Int :: Int :: HNil ] { + + def c: Column[Int] + + def * = c :: c :: c :: c :: c :: + c :: c :: c :: c :: c :: + c :: c :: c :: c :: c :: + c :: c :: c :: c :: c :: + c :: c :: c :: c :: c :: + c :: c :: HNil + + } +} -- cgit v1.2.3