Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
97ee5c0
Fix #11731: Remove symbols with targetName correctly
liufengyun Mar 29, 2021
7bed891
Performance tweak for initialization check
liufengyun Mar 29, 2021
5bb0e92
Set baseVersion to 3.0.1-RC1
anatoliykmetyuk Mar 29, 2021
4246c58
Fix detecting Scala3 version in useScaladoc
abgruszecki Mar 30, 2021
a90ce46
Merge pull request #11946 from dotty-staging/fix-doc-ci-issue
smarter Mar 30, 2021
ca17ab6
Deprecate sbt-dotty when using sbt >= 1.5.0-RC2
smarter Mar 30, 2021
a450551
Make community build docs experiment-aware
abgruszecki Mar 29, 2021
bcf6c72
Merge pull request #11947 from dotty-staging/deprecate-sbt-dotty
adpi2 Mar 30, 2021
08b9b6d
Fix #11885: disable flaky idempotency test on Windows
liufengyun Mar 30, 2021
c855812
Merge pull request #11927 from dotty-staging/fix-11731
smarter Mar 30, 2021
70cecaa
Merge pull request #11944 from dotty-staging/fix-11885
liufengyun Mar 30, 2021
e1aeeca
sbt-dotty: Bump to 0.5.5-SNAPSHOT
smarter Mar 30, 2021
b80c3b7
Fix typo in idempotency test filter
liufengyun Mar 30, 2021
9c94edc
Refactor filter in idempotency test
liufengyun Mar 30, 2021
f0d22a2
Upgrade Dotty to 3.0.0-RC2
anatoliykmetyuk Mar 30, 2021
3ebeaa9
Merge pull request #11928 from dotty-staging/improve-init
liufengyun Mar 30, 2021
f01c14d
Merge pull request #11951 from dotty-staging/dotty-release-3.0.0-RC2
nicolasstucki Mar 31, 2021
ea7abac
Fix broken script on Windows
liufengyun Mar 31, 2021
71e1018
Test scripts on Windows with Cygwin and MSys
liufengyun Mar 31, 2021
9a22d77
Enable msys test
liufengyun Mar 31, 2021
fea5ccf
Fix derivedNames test on mac
Kordyjan Mar 31, 2021
2b09a67
Merge pull request #11957 from dotty-staging/add-packtest
anatoliykmetyuk Mar 31, 2021
6609022
Better handling of leading infix operators in indented code
odersky Mar 31, 2021
13de192
Merge pull request #11958 from lampepfl/derived-names-mac
Kordyjan Mar 31, 2021
a623713
Add test case
OlivierBlanvillain Nov 26, 2020
edbb815
Fix #9871: use toNestedPairs in provablyDisjoint
OlivierBlanvillain Mar 31, 2021
3406b3a
Add 3.0.0-RC2 blog article
anatoliykmetyuk Mar 29, 2021
90ef72b
Merge pull request #11934 from dotty-staging/rc2-blog
anatoliykmetyuk Mar 31, 2021
4ab402c
Merge pull request #10560 from dotty-staging/fix-9871
bishabosha Mar 31, 2021
86b4d62
Merge pull request #11950 from dotty-staging/fix-11885
nicolasstucki Apr 1, 2021
acdbb47
RC2 post date fix
anatoliykmetyuk Apr 1, 2021
beb5aa5
Fix sourcelinks to scala/scala in scaladoc
KacperFKorban Apr 1, 2021
ea0002d
Merge pull request #11964 from KacperFKorban/master
BarkingBad Apr 1, 2021
2f3eb3c
Fix bug with doubling comments in Scaladoc
BarkingBad Apr 1, 2021
2ad4bed
Add handling for scaladoc 2 flags: private, groups, author, canonical…
BarkingBad Mar 30, 2021
88fa00e
CI: automatically open an issue if nightly build fails
griggt Feb 2, 2021
a288432
Merge pull request #11970 from griggt/fix-#8734
smarter Apr 1, 2021
775d881
Merge pull request #11959 from dotty-staging/add-indent-after-operator
odersky Apr 2, 2021
b2a5ae5
Fix type namedArg when pt is nullable
noti0na1 Apr 3, 2021
e65305d
Fix treatment of bottom types in OrType#join and baseType computations
odersky Apr 3, 2021
230edd1
Better fix: baseclasses intersection that takes bottom types into acc…
odersky Apr 4, 2021
cbaac3f
Update tests/pos/i11968.scala
odersky Apr 4, 2021
0d2bb9e
Merge pull request #11979 from dotty-staging/fix-11968
odersky Apr 5, 2021
16776c8
Merge pull request #11974 from dotty-staging/fix-namedArg-nullable
noti0na1 Apr 5, 2021
67960b9
Revert "Recursively check nonvariant arguments of base types for real…
odersky Apr 6, 2021
6549806
Add test
odersky Apr 6, 2021
3e2483d
Community build: tag scas as not requiring experimental
abgruszecki Apr 6, 2021
d8b8fc1
Allow by-name types in using clauses
odersky Apr 6, 2021
39422ce
Merge pull request #11962 from BarkingBad/scaladoc/fix-briefs
romanowski Apr 6, 2021
88389fc
Merge pull request #11965 from BarkingBad/scaladoc/merge-scaladoc2-fe…
romanowski Apr 6, 2021
b2e62b6
Better error message for errors arising from implicit completions
odersky Apr 6, 2021
9c1647b
Refine previous fix
odersky Apr 6, 2021
7ca45d2
Merge pull request #12002 from dotty-staging/fix-11994
odersky Apr 6, 2021
b0061c4
Merge pull request #12001 from dotty-staging/fix-11997
odersky Apr 6, 2021
58d7665
Streamline flag checking
odersky Apr 6, 2021
f655eeb
Merge pull request #12008 from dotty-staging/fix-11963
odersky Apr 7, 2021
63fb4e7
Merge pull request #12000 from dotty-staging/fix-11995
abgruszecki Apr 7, 2021
1ed90a5
bump sbt to 1.5.0
adpi2 Mar 22, 2021
69a1a41
Use sbt slash syntax
adpi2 Apr 7, 2021
8b35b67
Merge pull request #11935 from dotty-staging/make-doc-commbuild-aware…
abgruszecki Apr 7, 2021
dd95969
Fix minitest doc command
adpi2 Apr 7, 2021
7229749
Update stdLib213
adpi2 Apr 7, 2021
a070798
Merge pull request #11844 from adpi2/sbt-1.5-RC2
anatoliykmetyuk Apr 8, 2021
8c2656f
Fix type test for trait parameter arguments
odersky Apr 9, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 33 additions & 4 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,18 @@ jobs:
run: sbt ";scala3-bootstrapped/compile"
shell: cmd

- name: build binary
run: sbt "dist/pack" & bash -version
shell: cmd

- name: cygwin tests
run: '"C:\Program Files\cygwin64\bin\bash" ./project/scripts/winCmdTests'
shell: cmd

- name: msys tests
run: '"C:\Program Files\Git\bin\bash" ./project/scripts/winCmdTests'
shell: cmd

- name: Scala.js Test
run: sbt ";sjsJUnitTests/test ;sjsCompilerTests/test"
shell: cmd
Expand Down Expand Up @@ -348,12 +360,9 @@ jobs:
- name: Add SBT proxy repositories
run: cp -vf .github/workflows/repositories /root/.sbt/ ; true

- name: Test sbt 1.4.x
- name: Test sbt
run: ./project/scripts/sbt "sbt-dotty/scripted; sbt-community-build/scripted"

- name: Test sbt 1.5.x
run: ./project/scripts/sbt "set \`sbt-dotty\`/scriptedSbt := \"1.5.0-RC1\"; sbt-dotty/scripted sbt-dotty/*"

test_java8:
runs-on: [self-hosted, Linux]
container:
Expand Down Expand Up @@ -660,3 +669,23 @@ jobs:
- name: Publish Dotty SBT Plugin Release
run: |
./project/scripts/sbtPublish ";project sbt-dotty ;publishSigned ;sonatypeBundleRelease"

open_issue_on_failure:
runs-on: [self-hosted, Linux]
container:
image: lampepfl/dotty:2021-03-22
needs: [nightly_documentation, test_windows_full]
# The `failure()` expression is true iff at least one of the dependencies
# of this job (including transitive dependencies) has failed.
if: "failure() && github.event_name == 'schedule'"
steps:
- name: Checkout issue template
uses: actions/checkout@v2

- name: Open an issue
uses: JasonEtco/create-an-issue@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
WORKFLOW_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
with:
filename: .github/workflows/issue_nightly_failed.md
5 changes: 5 additions & 0 deletions .github/workflows/issue_nightly_failed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
title: Nightly {{ workflow }} workflow of {{ date | date('YYYY-MM-DD') }} failed
labels: itype:bug, prio:blocker
---
See {{ env.WORKFLOW_RUN_URL }}
2 changes: 1 addition & 1 deletion community-build/community-projects/stdLib213
Submodule stdLib213 updated 705 files
5 changes: 4 additions & 1 deletion community-build/src/scala/dotty/communitybuild/Main.scala
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,10 @@ object Main:
Seq("rm", "-rf", destStr).!
Files.createDirectory(dest)
val (toRun, ignored) =
allProjects.partition(_.docCommand != null)
allProjects.partition( p =>
p.docCommand != null
&& (!p.requiresExperimental || compilerSupportExperimental)
)

val paths = toRun.map { project =>
val name = project.project
Expand Down
36 changes: 24 additions & 12 deletions community-build/src/scala/dotty/communitybuild/projects.scala
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ sealed trait CommunityProject:
val dependencies: List[CommunityProject]
val binaryName: String
val runCommandsArgs: List[String] = Nil
val requiresExperimental: Boolean

final val projectDir = communitybuildDir.resolve("community-projects").resolve(project)

Expand All @@ -48,6 +49,7 @@ sealed trait CommunityProject:

/** Publish this project to the local Maven repository */
final def publish(): Unit =
// TODO what should this do with .requiresExperimental?
if !published then
publishDependencies()
log(s"Publishing $project")
Expand All @@ -59,6 +61,11 @@ sealed trait CommunityProject:
published = true

final def doc(): Unit =
if this.requiresExperimental && !compilerSupportExperimental then
log(
s"Skipping ${this.project} - it needs experimental features unsupported in this build."
)
return
publishDependencies()
log(s"Documenting $project")
if docCommand eq null then
Expand All @@ -78,6 +85,7 @@ final case class MillCommunityProject(
baseCommand: String,
dependencies: List[CommunityProject] = Nil,
ignoreDocs: Boolean = false,
requiresExperimental: Boolean = false,
) extends CommunityProject:
override val binaryName: String = "./mill"
override val testCommand = s"$baseCommand.test"
Expand All @@ -94,20 +102,21 @@ final case class SbtCommunityProject(
dependencies: List[CommunityProject] = Nil,
sbtPublishCommand: String = null,
sbtDocCommand: String = null,
scalacOptions: List[String] = SbtCommunityProject.scalacOptions
scalacOptions: List[String] = SbtCommunityProject.scalacOptions,
requiresExperimental: Boolean = false,
) extends CommunityProject:
override val binaryName: String = "sbt"

private def scalacOptionsString: String =
scalacOptions.map("\"" + _ + "\"").mkString("List(", ",", ")")

private val baseCommand =
"clean; set logLevel in Global := Level.Error; set updateOptions in Global ~= (_.withLatestSnapshots(false)); "
++ (if scalacOptions.isEmpty then "" else s"""set scalacOptions in Global ++= $scalacOptionsString;""")
"clean; set Global/logLevel := Level.Error; set Global/updateOptions ~= (_.withLatestSnapshots(false)); "
++ (if scalacOptions.isEmpty then "" else s"""set Global/scalacOptions ++= $scalacOptionsString;""")
++ s"++$compilerVersion!; "

override val testCommand =
"""set testOptions in Global += Tests.Argument(TestFramework("munit.Framework"), "+l"); """
"""set Global/testOptions += Tests.Argument(TestFramework("munit.Framework"), "+l"); """
++ s"$baseCommand$sbtTestCommand"

override val publishCommand =
Expand All @@ -124,7 +133,7 @@ final case class SbtCommunityProject(
case Some(ivyHome) => List(s"-Dsbt.ivy.home=$ivyHome")
case _ => Nil
extraSbtArgs ++ sbtProps ++ List(
"-sbt-version", "1.4.9",
"-sbt-version", "1.5.0",
"-Dsbt.supershell=false",
s"-Ddotty.communitybuild.dir=$communitybuildDir",
s"--addPluginSbtFile=$sbtPluginFilePath"
Expand All @@ -140,12 +149,12 @@ object projects:

private def forceDoc(projects: String*) =
projects.map(project =>
s""";set $project/Compile/doc/sources ++= ($project/Compile/doc/tastyFiles).value ;$project/doc"""
s""";set $project/Compile/doc/sources ++= ($project/Compile/doc/dotty.tools.sbtplugin.DottyPlugin.autoImport.tastyFiles).value ;$project/doc"""
).mkString(" ")

private def aggregateDoc(in: String)(projects: String*) =
val tastyFiles =
(in +: projects).map(p => s"($p/Compile/doc/tastyFiles).value").mkString(" ++ ")
(in +: projects).map(p => s"($p/Compile/doc/dotty.tools.sbtplugin.DottyPlugin.autoImport.tastyFiles).value").mkString(" ++ ")
s""";set $in/Compile/doc/sources ++= file("a.scala") +: ($tastyFiles) ;$in/doc"""

lazy val utest = MillCommunityProject(
Expand Down Expand Up @@ -237,13 +246,14 @@ object projects:

lazy val scas = MillCommunityProject(
project = "scas",
baseCommand = "scas.application"
baseCommand = "scas.application",
)

lazy val intent = SbtCommunityProject(
project = "intent",
sbtTestCommand = "test",
sbtDocCommand = "doc"
sbtDocCommand = "doc",
requiresExperimental = true,
)

lazy val algebra = SbtCommunityProject(
Expand Down Expand Up @@ -398,15 +408,17 @@ object projects:
sbtTestCommand = "coreJVM/test;coreJS/test",
sbtPublishCommand = "coreJVM/publishLocal;coreJS/publishLocal",
sbtDocCommand = "coreJVM/doc",
dependencies = List(munit)
dependencies = List(munit),
requiresExperimental = true,
)

lazy val scodec = SbtCommunityProject(
project = "scodec",
sbtTestCommand = "unitTests/test",
// Adds <empty> package
sbtDocCommand = "coreJVM/doc",
dependencies = List(munit, scodecBits)
dependencies = List(munit, scodecBits),
requiresExperimental = true,
)

lazy val scalaParserCombinators = SbtCommunityProject(
Expand Down Expand Up @@ -512,7 +524,7 @@ object projects:

lazy val cats = SbtCommunityProject(
project = "cats",
sbtTestCommand = "set scalaJSStage in Global := FastOptStage;buildJVM;validateAllJS",
sbtTestCommand = "set Global/scalaJSStage := FastOptStage;buildJVM;validateAllJS",
sbtPublishCommand = "catsJVM/publishLocal;catsJS/publishLocal",
dependencies = List(discipline, disciplineMunit, scalacheck, simulacrumScalafixAnnotations),
scalacOptions = SbtCommunityProject.scalacOptions.filter(_ != "-Ysafe-init") // disable -Ysafe-init, due to -Xfatal-warning
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,12 @@ abstract class CommunityBuildTest:
* and avoid network overhead. See https://github.com/lampepfl/dotty-drone
* for more infrastructural details.
*/
extension (self: CommunityProject) def run()(using suite: CommunityBuildTest) =
extension (self: CommunityProject) def run()(using suite: CommunityBuildTest): Unit =
if self.requiresExperimental && !compilerSupportExperimental then
println(
s"Skipping ${self.project} - it needs experimental features unsupported in this build."
)
return
self.dependencies.foreach(_.publish())
suite.test(self)

Expand Down Expand Up @@ -116,8 +121,8 @@ class CommunityBuildTestB extends CommunityBuildTest:
@Test def disciplineSpecs2 = projects.disciplineSpecs2.run()
@Test def munit = projects.munit.run()
@Test def perspective = projects.perspective.run()
@Test def scodec = if compilerSupportExperimental then projects.scodec.run()
@Test def scodecBits = if compilerSupportExperimental then projects.scodecBits.run()
@Test def scodec = projects.scodec.run()
@Test def scodecBits = projects.scodecBits.run()
@Test def simulacrumScalafixAnnotations = projects.simulacrumScalafixAnnotations.run()
end CommunityBuildTestB

Expand All @@ -134,7 +139,7 @@ class CommunityBuildTestC extends CommunityBuildTest:
@Test def fansi = projects.fansi.run()
@Test def fastparse = projects.fastparse.run()
@Test def geny = projects.geny.run()
@Test def intent = if compilerSupportExperimental then projects.intent.run()
@Test def intent = projects.intent.run()
@Test def minitest = projects.minitest.run()
@Test def onnxScala = projects.onnxScala.run()
@Test def oslib = projects.oslib.run()
Expand Down
13 changes: 2 additions & 11 deletions compiler/src/dotty/tools/dotc/ast/Desugar.scala
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import util.Spans._, Types._, Contexts._, Constants._, Names._, NameOps._, Flags
import Symbols._, StdNames._, Trees._, Phases._, ContextOps._
import Decorators._, transform.SymUtils._
import NameKinds.{UniqueName, EvidenceParamName, DefaultGetterName}
import typer.{FrontEnd, Namer}
import typer.{FrontEnd, Namer, Checking}
import util.{Property, SourceFile, SourcePosition}
import config.Feature.{sourceVersion, migrateTo3, enabled}
import config.SourceVersion._
Expand Down Expand Up @@ -859,16 +859,7 @@ object desugar {
val mods = mdef.mods
val moduleName = normalizeName(mdef, impl).asTermName
def isEnumCase = mods.isEnumCase

def flagSourcePos(flag: FlagSet) = mods.mods.find(_.flags == flag).fold(mdef.sourcePos)(_.sourcePos)

if (mods.is(Abstract))
report.error(AbstractCannotBeUsedForObjects(mdef), flagSourcePos(Abstract))
if (mods.is(Sealed))
report.error(ModifierRedundantForObjects(mdef, "sealed"), flagSourcePos(Sealed))
// Maybe this should be an error; see https://github.com/scala/bug/issues/11094.
if (mods.is(Final) && !mods.is(Synthetic))
report.warning(ModifierRedundantForObjects(mdef, "final"), flagSourcePos(Final))
Checking.checkWellFormedModule(mdef)

if (mods.is(Package))
packageModuleDef(mdef)
Expand Down
6 changes: 3 additions & 3 deletions compiler/src/dotty/tools/dotc/ast/TreeInfo.scala
Original file line number Diff line number Diff line change
Expand Up @@ -652,7 +652,7 @@ trait TypedTreeInfo extends TreeInfo[Type] { self: Trees.Instance[Type] =>
}
}

/** The type arguemnts of a possibly curried call */
/** The type arguments of a possibly curried call */
def typeArgss(tree: Tree): List[List[Tree]] =
@tailrec
def loop(tree: Tree, argss: List[List[Tree]]): List[List[Tree]] = tree match
Expand All @@ -661,7 +661,7 @@ trait TypedTreeInfo extends TreeInfo[Type] { self: Trees.Instance[Type] =>
case _ => argss
loop(tree, Nil)

/** The term arguemnts of a possibly curried call */
/** The term arguments of a possibly curried call */
def termArgss(tree: Tree): List[List[Tree]] =
@tailrec
def loop(tree: Tree, argss: List[List[Tree]]): List[List[Tree]] = tree match
Expand All @@ -670,7 +670,7 @@ trait TypedTreeInfo extends TreeInfo[Type] { self: Trees.Instance[Type] =>
case _ => argss
loop(tree, Nil)

/** The type and term arguemnts of a possibly curried call, in the order they are given */
/** The type and term arguments of a possibly curried call, in the order they are given */
def allArgss(tree: Tree): List[List[Tree]] =
@tailrec
def loop(tree: Tree, argss: List[List[Tree]]): List[List[Tree]] = tree match
Expand Down
30 changes: 0 additions & 30 deletions compiler/src/dotty/tools/dotc/config/ScalaSettings.scala
Original file line number Diff line number Diff line change
Expand Up @@ -52,36 +52,6 @@ trait CommonScalaSettings { self: Settings.SettingGroup =>
val showPlugins: Setting[Boolean] = BooleanSetting ("-Xplugin-list", "Print a synopsis of loaded plugins.")
val pluginsDir: Setting[String] = StringSetting ("-Xpluginsdir", "path", "Path to search for plugin archives.", Defaults.scalaPluginPath)
val pluginOptions: Setting[List[String]] = MultiStringSetting ("-P", "plugin:opt", "Pass an option to a plugin, e.g. -P:<plugin>:<opt>")

/** Doctool specific settings */
val siteRoot: Setting[String] = StringSetting(
"-siteroot",
"site root",
"A directory containing static files from which to generate documentation.",
"./docs"
)


val projectName: Setting[String] = StringSetting (
"-project",
"project title",
"The name of the project.",
""
)

val projectVersion: Setting[String] = StringSetting (
"-project-version",
"project version",
"The current version of your project.",
""
)

val projectLogo: Setting[String] = StringSetting(
"-project-logo",
"project logo filename",
"The file that contains the project's logo (in /images).",
""
)
}

class ScalaSettings extends Settings.SettingGroup with CommonScalaSettings {
Expand Down
33 changes: 10 additions & 23 deletions compiler/src/dotty/tools/dotc/core/CheckRealizable.scala
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ object CheckRealizable {
class HasProblemBaseArg(typ: Type, argBounds: TypeBounds)(using Context)
extends Realizability(i" has a base type $typ with possibly conflicting parameter bounds ${argBounds.lo} <: ... <: ${argBounds.hi}")

class HasProblemBase(base1: Type, base2: Type, argStr: String)(using Context)
extends Realizability(i" has conflicting base type${argStr}s $base1 and $base2")
class HasProblemBase(base1: Type, base2: Type)(using Context)
extends Realizability(i" has conflicting base types $base1 and $base2")

class HasProblemField(fld: SingleDenotation, problem: Realizability)(using Context)
extends Realizability(i" has a member $fld which is not a legal path\nsince ${fld.symbol.name}: ${fld.info}${problem.msg}")
Expand Down Expand Up @@ -167,30 +167,17 @@ class CheckRealizable(using Context) {
new HasProblemBounds(name, mbr.info)
}

def baseTypeProblems(base: Type, argStr: String): List[Realizability] = base match {
case base: AndType =>
def factors(tp: Type): List[Type] = tp match
case AndType(tp1, tp2) => factors(tp1) ++ factors(tp2)
case _ => tp :: Nil
for case AndType(base1, base2) <-
factors(base).groupBy(_.classSymbol).values.map(_.reduce(_ & _)).toList
// try to merge factors with common class symbols
// if we cannot, it's a conflict
yield HasProblemBase(base1, base2, argStr)
case base: AppliedType =>
base.argInfos.lazyZip(base.tycon.typeParams).flatMap { (arg, tparam) =>
arg match
case bounds @ TypeBounds(lo, hi) if !(lo <:< hi) =>
new HasProblemBaseArg(base, bounds) :: Nil
case arg if tparam.paramVarianceSign == 0 =>
baseTypeProblems(arg, " argument")
case _ =>
Nil
def baseTypeProblems(base: Type) = base match {
case AndType(base1, base2) =>
new HasProblemBase(base1, base2) :: Nil
case base =>
base.argInfos.collect {
case bounds @ TypeBounds(lo, hi) if !(lo <:< hi) =>
new HasProblemBaseArg(base, bounds)
}
case _ => Nil
}
val baseProblems =
tp.baseClasses.map(_.baseTypeOf(tp)).flatMap(baseTypeProblems(_, ""))
tp.baseClasses.map(_.baseTypeOf(tp)).flatMap(baseTypeProblems)

baseProblems.foldLeft(
refinementProblems.foldLeft(
Expand Down
Loading