Skip to content

Commit

Permalink
Merge pull request #1455 from Friendseeker/fix-forked-java-parsing
Browse files Browse the repository at this point in the history
[1.x] Handle parsing of non-problems in `JavaErrorParser`
  • Loading branch information
eed3si9n authored Oct 12, 2024
2 parents b5df6e3 + 980b91d commit 27216b5
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -270,10 +270,17 @@ class JavaErrorParser(relativeDir: File = new File(new File(".").getAbsolutePath
()
}

val nonProblem: Parser[Unit] = {
val skipLine =
("Loading source file" | "Constructing Javadoc information") ~ """[^\r\n]*(\r\n|\n)?""".r
rep(skipLine) ^^ (_ => ())
}

val potentialProblem: Parser[Problem] =
warningMessage | errorMessage | noteMessage | javacError | javacWarning

val javacOutput: Parser[Seq[Problem]] = rep(potentialProblem) <~ opt(outputSumamry)
val javacOutput: Parser[Seq[Problem]] =
opt(nonProblem) ~> rep(potentialProblem) <~ opt(outputSumamry)

/**
* Example:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ class JavaErrorParserSpec extends UnitSpec with Diagrams {
"The JavaErrorParser" should "be able to parse Linux errors" in parseSampleLinux()
it should "be able to parse windows file names" in parseWindowsFile()
it should "be able to parse windows errors" in parseSampleWindows()
it should "be able to parse javac non-problems" in parseSampleNonProblem()
it should "be able to parse javac warnings" in parseJavacWarning()
it should "be able to parse javac errors" in parseSampleJavac()
it should "register the position of errors" in parseErrorPosition()
Expand All @@ -47,6 +48,14 @@ class JavaErrorParserSpec extends UnitSpec with Diagrams {
problems(0).position.sourcePath.get shouldBe (windowsFile)
}

def parseSampleNonProblem() = {
val parser = new JavaErrorParser()
val logger = ConsoleLogger()
val problems = parser.parseProblems(sampleNonProblemMessage, logger)

assert(problems.size == 2)
}

def parseWindowsFile() = {
val parser = new JavaErrorParser()
parser.parse(parser.fileAndLineNo, sampleWindowsMessage) match {
Expand Down Expand Up @@ -198,6 +207,21 @@ class JavaErrorParserSpec extends UnitSpec with Diagrams {
|return baz();
""".stripMargin

def sampleNonProblemMessage =
raw"""
|Loading source file D:\Repos\zinc\internal\zinc-compile-core\target\jvm-2.13\test-classes\sbt\internal\inc\javac\test1.java...
|Constructing Javadoc information...
|D:\Repos\zinc\internal\zinc-compile-core\target\jvm-2.13\test-classes\sbt\internal\inc\javac\test1.java:14: error: class Test is public, should be declared in a file named Test.java
|public class Test {
| ^
|D:\Repos\zinc\internal\zinc-compile-core\target\jvm-2.13\test-classes\sbt\internal\inc\javac\test1.java:15: error: cannot find symbol
| public NotFound foo() { return 5; }
| ^
| symbol: class NotFound
| location: class Test
|2 errors
""".stripMargin.trim

def sampleJavacWarning =
"warning: [options] system modules path not set in conjunction with -source 17"

Expand Down

0 comments on commit 27216b5

Please sign in to comment.