diff options
author | Pete Bentley <prb@google.com> | 2023-04-19 11:37:18 +0100 |
---|---|---|
committer | Pete Bentley <prb@google.com> | 2023-04-19 11:37:18 +0100 |
commit | dea851f1ecb4e8e416bbbf78e072e32f48fabf19 (patch) | |
tree | bf1239f221f4c8aab5d33153d9dcff6f142ba90f | |
parent | 5b2cd760309e5a46d50cebe2406bce5f92de10e7 (diff) | |
download | vogar-dea851f1ecb4e8e416bbbf78e072e32f48fabf19.tar.gz |
Add better diagnostics for missing Java files.
Vogar can't really tell which of its arguments are Java source
files and which are classes somewhere along the classpath.
However IFF we get to the point of creating class jars AND our
supposed class name looks like a Java source file AND it doesn't
exist THEN we can pretty safely assume it's a missing source file.
Fixes: 239548304
Test: manual vogar runs
Change-Id: I8b98f6d263030f9ff304e4ba653fabf3689e8da7
-rw-r--r-- | src/vogar/tasks/BuildActionTask.java | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/vogar/tasks/BuildActionTask.java b/src/vogar/tasks/BuildActionTask.java index fd4c43a..04605fd 100644 --- a/src/vogar/tasks/BuildActionTask.java +++ b/src/vogar/tasks/BuildActionTask.java @@ -17,6 +17,7 @@ package vogar.tasks; import java.io.File; +import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; @@ -90,7 +91,14 @@ public final class BuildActionTask extends Task { if (run.debugging) { javac.debug(); } - if (javaFile != null) { + if (javaFile == null) { + if (JAVA_SOURCE_PATTERN.matcher(action.getTargetClass()).find()) { + // This is likely a missing source file rather than a class + // named something.java.... + throw new FileNotFoundException("Unlikely classname, assuming missing source file: " + + action.getTargetClass()); + } + } else { if (!JAVA_SOURCE_PATTERN.matcher(javaFile.toString()).find()) { throw new CommandFailedException(Collections.<String>emptyList(), Collections.singletonList("Cannot compile: " + javaFile)); |