Revert "Completion for build-level keys"

This reverts commit e35f9bb11e.
This commit is contained in:
Eugene Yokota 2016-11-29 05:59:33 -05:00
parent 612d9555d0
commit 49809056fc
3 changed files with 6 additions and 53 deletions

View File

@ -48,22 +48,12 @@ object Act {
new ParsedKey(makeScopedKey(proj, conf, task, extra, key), mask)
}
val projectKeys =
for {
rawProject <- optProjectRef(index, current)
proj = resolveProject(rawProject, current)
confAmb <- config(index configs proj)
partialMask = ScopeMask(rawProject.isExplicit, confAmb.isExplicit, false, false)
} yield taskKeyExtra(proj, confAmb, partialMask)
val build = Some(BuildRef(current.build))
val buildKeys =
for {
confAmb <- config(index configs build)
partialMask = ScopeMask(false, confAmb.isExplicit, false, false)
} yield taskKeyExtra(build, confAmb, partialMask)
buildKeys combinedWith projectKeys map (_.flatten)
for {
rawProject <- optProjectRef(index, current)
proj = resolveProject(rawProject, current)
confAmb <- config(index configs proj)
partialMask = ScopeMask(rawProject.isExplicit, confAmb.isExplicit, false, false)
} yield taskKeyExtra(proj, confAmb, partialMask)
}
def makeScopedKey(proj: Option[ResolvedReference], conf: Option[String], task: Option[AttributeKey[_]], extra: ScopeAxis[AttributeMap], key: AttributeKey[_]): ScopedKey[_] =
ScopedKey(Scope(toAxis(proj, Global), toAxis(conf map ConfigKey.apply, Global), toAxis(task, Global), extra), key)

View File

@ -126,9 +126,6 @@ sealed trait RichParser[A] {
/** Applies the original parser, applies `f` to the result to get the next parser, and applies that parser and uses its result for the overall result. */
def flatMap[B](f: A => Parser[B]): Parser[B]
/** Applied both the original parser and `b` on the same input and returns the results produced by each parser */
def combinedWith(b: Parser[A]): Parser[Seq[A]]
}
/** Contains Parser implementation helper methods not typically needed for using parsers. */
@ -232,12 +229,6 @@ object Parser extends ParserMain {
}
}
def combinedParser[A](a: Parser[A], b: Parser[A]): Parser[Seq[A]] =
if (a.valid)
if (b.valid) new CombiningParser(a, b) else a.map(Seq(_))
else
b.map(Seq(_))
def choiceParser[A, B](a: Parser[A], b: Parser[B]): Parser[Either[A, B]] =
if (a.valid)
if (b.valid) new HetParser(a, b) else a.map(left.fn)
@ -318,7 +309,6 @@ trait ParserMain {
def filter(f: A => Boolean, msg: String => String): Parser[A] = filterParser(a, f, "", msg)
def string(implicit ev: A <:< Seq[Char]): Parser[String] = map(_.mkString)
def flatMap[B](f: A => Parser[B]) = bindParser(a, f)
def combinedWith(b: Parser[A]): Parser[Seq[A]] = combinedParser(a, b)
}
implicit def literalRichCharParser(c: Char): RichParser[Char] = richParser(c)
@ -643,24 +633,6 @@ private final class HetParser[A, B](a: Parser[A], b: Parser[B]) extends ValidPar
def completions(level: Int) = a.completions(level) ++ b.completions(level)
override def toString = "(" + a + " || " + b + ")"
}
private final class CombiningParser[T](a: Parser[T], b: Parser[T]) extends ValidParser[Seq[T]] {
lazy val result: Option[Seq[T]] = (a.result.toSeq ++ b.result.toSeq) match { case Seq() => None; case seq => Some(seq) }
def completions(level: Int) = a.completions(level) ++ b.completions(level)
def derive(i: Char) =
(a.valid, b.valid) match {
case (true, true) => new CombiningParser(a derive i, b derive i)
case (true, false) => a derive i map (Seq(_))
case (false, true) => b derive i map (Seq(_))
case (false, false) => new Invalid(mkFailure("No valid parser available."))
}
def resultEmpty =
(a.resultEmpty, b.resultEmpty) match {
case (Value(ra), Value(rb)) => Value(Seq(ra, rb))
case (Value(ra), _) => Value(Seq(ra))
case (_, Value(rb)) => Value(Seq(rb))
case _ => Value(Nil)
}
}
private final class ParserSeq[T](a: Seq[Parser[T]], errors: => Seq[String]) extends ValidParser[Seq[T]] {
assert(a.nonEmpty)
lazy val resultEmpty: Result[Seq[T]] =

View File

@ -107,15 +107,6 @@ object ParserTest extends Properties("Completing Parser") {
property("repeatDep requires at least one token") = !matches(repeat, "")
property("repeatDep accepts one token") = matches(repeat, colors.toSeq.head)
property("repeatDep accepts two tokens") = matches(repeat, colors.toSeq.take(2).mkString(" "))
property("combined parser gives completion of both parsers") = {
val prefix = "fix"
val p1Suffixes = Set("", "ated", "ation")
val p2Suffixes = Set("es", "ed")
val p1: Parser[String] = p1Suffixes map (suffix => (prefix + suffix): Parser[String]) reduce (_ | _)
val p2: Parser[String] = p2Suffixes map (suffix => (prefix + suffix): Parser[String]) reduce (_ | _)
val suggestions: Set[Completion] = p1Suffixes ++ p2Suffixes map (new Suggestion(_))
checkAll(prefix, p1 combinedWith p2, Completions(suggestions))
}
}
object ParserExample {
val ws = charClass(_.isWhitespace)+