diff --git a/util/complete/Parser.scala b/util/complete/Parser.scala index f788d0f4cc..5c7bcddc36 100644 --- a/util/complete/Parser.scala +++ b/util/complete/Parser.scala @@ -345,7 +345,10 @@ trait ParserMain else b - def not(p: Parser[_]): Parser[Unit] = new Not(p) + def not(p: Parser[_]): Parser[Unit] = p.result match { + case None => new Not(p) + case Some(_) => failure("Excluded.") + } def oneOf[T](p: Seq[Parser[T]]): Parser[T] = p.reduceLeft(_ | _) def seq[T](p: Seq[Parser[T]]): Parser[Seq[T]] = seq0(p, Nil) diff --git a/util/complete/Parsers.scala b/util/complete/Parsers.scala index fd05684943..367f2fadb4 100644 --- a/util/complete/Parsers.scala +++ b/util/complete/Parsers.scala @@ -11,6 +11,8 @@ package sbt.complete // Some predefined parsers trait Parsers { + lazy val EOF = not(any) + lazy val any: Parser[Char] = charClass(_ => true, "any character") lazy val DigitSet = Set("0","1","2","3","4","5","6","7","8","9")