summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2014-01-20 06:56:12 -0800
committerJason Zaugg <jzaugg@gmail.com>2014-01-20 06:56:12 -0800
commitd9ee69ff38bc1f6fc511a9cea6fd6305e3dd89c5 (patch)
tree372031b7b13249461a50f954ade19ceed1ef05e4
parent338b053563e6c57eec157bc19697349782475926 (diff)
parentff137422794a3da002bcad9b67afd3ef02fceaa1 (diff)
downloadscala-d9ee69ff38bc1f6fc511a9cea6fd6305e3dd89c5.tar.gz
scala-d9ee69ff38bc1f6fc511a9cea6fd6305e3dd89c5.tar.bz2
scala-d9ee69ff38bc1f6fc511a9cea6fd6305e3dd89c5.zip
Merge pull request #3367 from retronym/backport/3363
[nomaster] Fix non-deterministic <:< for deeply nested types
-rw-r--r--bincompat-backward.whitelist.conf217
-rw-r--r--bincompat-forward.whitelist.conf1270
-rw-r--r--build.xml2
-rw-r--r--src/reflect/scala/reflect/internal/Types.scala35
-rw-r--r--test/files/neg/t8146-non-finitary-2.check9
-rw-r--r--test/files/neg/t8146-non-finitary-2.scala8
-rw-r--r--test/files/neg/t8146-non-finitary.check9
-rw-r--r--test/files/neg/t8146-non-finitary.scala7
-rw-r--r--test/files/pos/t8146a.scala9
-rw-r--r--test/files/pos/t8146b.scala77
10 files changed, 137 insertions, 1506 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"
@@ -221,96 +94,12 @@ filter {
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
},
{
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,38 +151,6 @@ filter {
problemName=MissingMethodProblem
},
{
- 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.internal.SymbolTable.unsuppressMacroExpansion"
- problemName=MissingMethodProblem
- },
- {
- matchName="scala.reflect.internal.SymbolTable.suppressMacroExpansion"
- 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
},
@@ -529,912 +167,12 @@ filter {
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"
+ matchName="scala.reflect.runtime.SymbolLoaders.isInvalidClassName"
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:
<mkdir dir="${bc-build.dir}"/>
<!-- Pull down MIMA -->
<artifact:dependencies pathId="mima.classpath">
- <dependency groupId="com.typesafe" artifactId="mima-reporter_2.9.2" version="0.1.5"/>
+ <dependency groupId="com.typesafe" artifactId="mima-reporter_2.10" version="0.1.6"/>
</artifact:dependencies>
<artifact:dependencies pathId="old.bc.classpath">
<dependency groupId="org.scala-lang" artifactId="scala-swing" version="${bc-reference-version}"/>
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+" <:<? "+tp2
}
@@ -5819,7 +5804,7 @@ trait Types extends api.Types { self: SymbolTable =>
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
+
+ }
+}