/* sbt -- Simple Build Tool
 * Copyright 2008, 2009 Mark Harrah
 */
package sbt

/* The following implements the simple syntax for storing test definitions.
* The syntax is:
*
* definition := isModule? className separator className
* isModule := '<module>'
* separator := '<<'
*/

import scala.util.parsing.combinator._

import TestParser._
/** Represents a test implemented by 'testClassName' of type 'superClassName'.*/
final case class class TestDefinition extends java.lang.Object with NotNull with ScalaObject with ProductTestDefinition(BooleanisModule: BooleanBoolean, StringtestClassName: StringString, StringsuperClassName: StringString) extends NotNullNotNull
{
	override def ()java.lang.StringtoString =
		(java.lang.Stringif(=> BooleanisModule) => java.lang.StringIsModuleLiteral else java.lang.String("")"") (Any)java.lang.String+ => StringtestClassName (Any)java.lang.String+ => java.lang.StringSubSuperSeparator (Any)java.lang.String+ => StringsuperClassName
}
final class class TestParser extends java.lang.Object with scala.util.parsing.combinator.RegexParsers with NotNull with ScalaObjectTestParser extends scala.util.parsing.combinator.RegexParsersRegexParsers with NotNullNotNull
{
	def => TestParser.this.Parser[sbt.TestDefinition]test: TestParser.this.Parser[sbt.TestDefinition]Parser[TestDefinition] =
		( => TestParser.this.Parser[Boolean]isModule (=> TestParser.this.Parser[String])TestParser.this.Parser[TestParser.this.~[Boolean,String]]~! => TestParser.this.Parser[String]className (=> TestParser.this.Parser[String])TestParser.this.Parser[TestParser.this.~[TestParser.this.~[Boolean,String],String]]~! implicit scala.util.parsing.combinator.RegexParsers.literal : (String)TestParser.this.Parser[String]SubSuperSeparator (=> TestParser.this.Parser[String])TestParser.this.Parser[TestParser.this.~[TestParser.this.~[TestParser.this.~[Boolean,String],String],String]]~! => TestParser.this.Parser[String]className ) ((TestParser.this.~[TestParser.this.~[TestParser.this.~[Boolean,String],String],String]) => sbt.TestDefinition)TestParser.this.Parser[sbt.TestDefinition]^^
			sbt.TestDefinition{ sbt.TestDefinitioncase Booleanmodule ~ StringtestName ~ => java.lang.StringSubSuperSeparator ~ StringsuperName => (Boolean,String,String)sbt.TestDefinitionTestDefinition(Booleanmodule, StringtestName.()java.lang.Stringtrim, StringsuperName.()java.lang.Stringtrim) }
	def => TestParser.this.Parser[Boolean]isModule: TestParser.this.Parser[Boolean]Parser[Boolean] = (implicit scala.util.parsing.combinator.RegexParsers.literal : (String)TestParser.this.Parser[String]IsModuleLiteral=> TestParser.this.Parser[Option[String]]?) ((Option[String]) => Boolean)TestParser.this.Parser[Boolean]^^ (Option[String]_.=> BooleanisDefined)
	def => TestParser.this.Parser[String]className: TestParser.this.Parser[String]Parser[String] = implicit scala.Predef.stringWrapper : (String)scala.runtime.RichStringClassNameRegexString.implicit scala.util.parsing.combinator.RegexParsers.regex : (scala.util.matching.Regex)TestParser.this.Parser[String]r
	
	def (String)Either[String,sbt.TestDefinition]parse(StringtestDefinitionString: StringString): Either[String,sbt.TestDefinition]Either[String, TestDefinition] =
	{
		def (String)Left[java.lang.String,Nothing]parseError(Stringmsg: StringString) = (java.lang.String)Left[java.lang.String,Nothing]Left(java.lang.String("Could not parse test definition '")"Could not parse test definition '" (Any)java.lang.String+ StringtestDefinitionString (Any)java.lang.String+ java.lang.String("': ")"': " (Any)java.lang.String+ Stringmsg)
		(TestParser.this.Parser[sbt.TestDefinition],java.lang.CharSequence)TestParser.this.ParseResult[sbt.TestDefinition]parseAll(=> TestParser.this.Parser[sbt.TestDefinition]test, StringtestDefinitionString) Either[String,sbt.TestDefinition]match
		{
			Right[Nothing,sbt.TestDefinition]case Success(sbt.TestDefinitionresult, TestParser.this.Inputnext) => (sbt.TestDefinition)Right[Nothing,sbt.TestDefinition]Right(sbt.TestDefinitionresult)
			Left[java.lang.String,Nothing]case TestParser.this.NoSuccesserr: TestParser.this.NoSuccessNoSuccess => (String)Left[java.lang.String,Nothing]parseError(TestParser.this.NoSuccesserr.=> Stringmsg)
		}
	}
}
object object sbt.TestParserTestParser
{
	val java.lang.StringIsModuleLiteral = java.lang.String("<module>")"<module>"
	val java.lang.StringSubSuperSeparator = java.lang.String("<<")"<<"
	val java.lang.StringClassNameRegexString = java.lang.String("[^<]+")"""[^<]+"""
	def (String)Either[String,sbt.TestDefinition]parse(StringtestDefinitionString: StringString): Either[String,sbt.TestDefinition]Either[String, TestDefinition] = (sbt.TestParsernew sbt.TestParserTestParser).(String)Either[String,sbt.TestDefinition]parse(StringtestDefinitionString)
}