Repository navigation
Conversation
javac compiles nothing if one of its arguments does not exist, so one splitter whose source file could not be written prevented every splitter from being compiled. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Warning Review limit reached
This review includes 6 billable files and costs up to $1.50. Or wait 21 minutes for your next included review. View limit details
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
📝 Walkthrough
Priority: ⬇️ Low Change: Bug fix Merge Risk: ⚪ Minimal · up to
|
| Check name | Status | Explanation |
|---|---|---|
| Docstring Coverage | ✅ Passed | Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 24 functions across 6 files. |
| Linked Issues check | ✅ Passed | Check skipped because no linked issues were found for this pull request. |
| Out of Scope Changes check | ✅ Passed | Check skipped because no linked issues were found for this pull request. |
✨ Finishing Touches
-
🧪 Generate unit tests (beta)
-
- Create a new PR
-
- Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Comment @coderabbitai help to get the list of available commands.
FileCompiler: - Do not pass nonexistent files to the compiler; report them instead. - Return errors from the recompilation as well as from the first compilation. - Capture the compiler's standard output (it was read from stderr), and include it in the returned diagnostics. SplitterFactory: - Load only splitters whose source files were written, and record the real reason (parse or write failure) for the others. - Delete a stale class file before writing a splitter's source. - Delete a partially-written source file when writing fails. Add SplitterLoadTest, which checks that an unparseable splitter does not prevent another splitter for the same program point from loading.
- Treat a lexical error (TokenMgrError) in a splitter condition like a parse error. - Include compiler standard output in the error output only when compilation fails. - Normalize paths when matching javac error output against source files. - Compute splitter source and class paths in one place, in SplitterObject. - Remove the redundant nonexistent-file filter from FileCompiler. - Test unwritable splitter files and lexical errors; clean up SplitterList after tests.
* Do not report duplicate compiler output from the javac recompilation, and skip a recompilation that would only repeat the first one. * Find erroneous files only in javac's standard error, and permit spaces in their names. * Report a failure to delete an old class file accurately, and register deleteOnExit before opening the splitter source file. * Move SplitterLoadTest to package daikon.split so SplitterList.remove can be package-private; restore FileIO.new_decl_format; skip the tests when splitters cannot be compiled. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Match only javac errors, not warnings, when finding erroneous files. * Recompile repeatedly, because javac reports errors in phases. * Move SplitterLoadTest to daikon/test/split. * Derive the paths of the written splitter source files instead of maintaining a parallel list. * Catch InvalidPathException when deleting splitter files.
Pull request codespecs#868 also adds SplitterList.remove. With both definitions at the same place, merging the two pull requests yields a conflict that keeps one definition, rather than two methods with the same signature.
codespecs#870 makes SplitterFactory compile and load only the splitters whose source files were written, which a condition that cannot be translated requires. Use its implementation rather than a separate one; this pull request now depends on codespecs#870.
|
@coderabbitai review |
|
…itter-unwritten-files
…n-files # Conflicts: # java/daikon/test/AllTestsSuite.java
javac compiles nothing if one of its arguments does not exist. So, when the source file for one splitter could not be written,
SplitterFactorypassed its name to javac anyway, and no splitter was compiled. NowSplitterFactorypasses javac only the files that were written.