Class TestDiagnosticUtils
- 
Field SummaryFieldsModifier and TypeFieldDescriptionstatic final Patternstatic final Stringstatic final Patternstatic final Stringstatic final PatternHow the diagnostics appear in Java source files.static final StringHow the diagnostics appear in Java source files.static final Patternstatic final Stringstatic final Patternstatic final Stringstatic final Patternstatic final String
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionstatic StringcontinuationPart(String originalLine) Return the continuation part.diagnosticsToString(List<TestDiagnostic> diagnostics) Converts the given diagnostics to strings (as they would appear in a source file individually).formatJavaxToolString(String original, boolean noMsgText) Given a javax diagnostic, return a pair of (trimmed, filename), where "trimmed" is the first line of the message, without the leading filename.static TestDiagnosticLinefromDiagnosticFileLine(String diagnosticLine) Convert a line in a DiagnosticFile to a TestDiagnosticLine.static TestDiagnosticfromDiagnosticFileString(String stringFromDiagnosticFile) Instantiate the diagnostic based on a string that would appear in diagnostic files (i.e.static TestDiagnosticfromJavaFileComment(String filename, long lineNumber, String stringFromJavaFile) Instantiate the diagnostic from a string that would appear in a Java file, e.g.: "error: (message)"static TestDiagnosticLinefromJavaSourceLine(String filename, String line, long lineNumber) Convert a line in a Java source file to a TestDiagnosticLine.static Set<TestDiagnostic>fromJavaxDiagnosticList(List<Diagnostic<? extends JavaFileObject>> javaxDiagnostics, boolean noMsgText) static TestDiagnosticfromJavaxToolsDiagnostic(String diagnosticString, boolean noMsgText) Instantiate a diagnostic from output produced by the Java compiler.static TestDiagnosticfromJSpecifyFileComment(String filename, long lineNumber, String stringFromJavaFile) Instantiate the diagnostic from a JSpecify string that would appear in a Java file, e.g.: "jspecify_some_category".protected static TestDiagnosticfromPatternMatching(Pattern diagnosticPattern, Pattern warningPattern, String filename, @Nullable Long lineNumber, String diagnosticString) Instantiate the diagnostic via pattern-matching against patterns.static StringhandleEndOfLineJavaDiagnostic(String originalLine) Convert an end-of-line diagnostic message to a beginning-of-line one.static booleanisJavaDiagnosticLineContinuation(@Nullable String originalLine) Return true if this line in a Java file continues an expected diagnostic.static booleanisJavaDiagnosticLineStart(String originalLine) Return true if this line in a Java file indicates an expected diagnostic that might be continued on the next line.static voidremoveDiagnosticsOfKind(DiagnosticKind kind, List<TestDiagnostic> expectedDiagnostics) 
- 
Field Details- 
DIAGNOSTIC_IN_JAVA_REGEXHow the diagnostics appear in Java source files.- See Also:
 
- 
DIAGNOSTIC_IN_JAVA_PATTERNHow the diagnostics appear in Java source files.
- 
DIAGNOSTIC_WARNING_IN_JAVA_REGEX- See Also:
 
- 
DIAGNOSTIC_WARNING_IN_JAVA_PATTERN
- 
DIAGNOSTIC_REGEX- See Also:
 
- 
DIAGNOSTIC_PATTERN
- 
DIAGNOSTIC_WARNING_REGEX- See Also:
 
- 
DIAGNOSTIC_WARNING_PATTERN
- 
DIAGNOSTIC_FILE_REGEX- See Also:
 
- 
DIAGNOSTIC_FILE_PATTERN
- 
DIAGNOSTIC_FILE_WARNING_REGEX- See Also:
 
- 
DIAGNOSTIC_FILE_WARNING_PATTERN
 
- 
- 
Constructor Details- 
TestDiagnosticUtilspublic TestDiagnosticUtils()
 
- 
- 
Method Details- 
fromDiagnosticFileStringInstantiate the diagnostic based on a string that would appear in diagnostic files (i.e. files that only contain line after line of expected diagnostics).- Parameters:
- stringFromDiagnosticFile- a single diagnostic string to parse
- Returns:
- a new TestDiagnostic
 
- 
fromJavaFileCommentpublic static TestDiagnostic fromJavaFileComment(String filename, long lineNumber, String stringFromJavaFile) Instantiate the diagnostic from a string that would appear in a Java file, e.g.: "error: (message)"- Parameters:
- filename- the file containing the diagnostic (and the error)
- lineNumber- the line number of the line immediately below the diagnostic comment in the Java file
- stringFromJavaFile- the string containing the diagnostic
- Returns:
- a new TestDiagnostic
 
- 
fromJavaxToolsDiagnosticInstantiate a diagnostic from output produced by the Java compiler. The resulting diagnostic is never fixable and always has parentheses.
- 
fromJSpecifyFileCommentpublic static TestDiagnostic fromJSpecifyFileComment(String filename, long lineNumber, String stringFromJavaFile) Instantiate the diagnostic from a JSpecify string that would appear in a Java file, e.g.: "jspecify_some_category".- Parameters:
- filename- the file containing the diagnostic (and the error)
- lineNumber- the line number of the line immediately below the diagnostic comment in the Java file
- stringFromJavaFile- the string containing the diagnostic
- Returns:
- a new TestDiagnostic
 
- 
fromPatternMatchingprotected static TestDiagnostic fromPatternMatching(Pattern diagnosticPattern, Pattern warningPattern, String filename, @Nullable Long lineNumber, String diagnosticString) Instantiate the diagnostic via pattern-matching against patterns.- Parameters:
- diagnosticPattern- a pattern that matches any diagnostic
- warningPattern- a pattern that matches a warning diagnostic
- filename- the file name
- lineNumber- the line number
- diagnosticString- the string to parse
- Returns:
- a diagnostic parsed from the given string
 
- 
formatJavaxToolStringpublic static org.plumelib.util.IPair<String,String> formatJavaxToolString(String original, boolean noMsgText) Given a javax diagnostic, return a pair of (trimmed, filename), where "trimmed" is the first line of the message, without the leading filename.- Parameters:
- original- a javax diagnostic
- noMsgText- whether to do work; if false, this returns a pair of (argument, "")
- Returns:
- the diagnostic, split into message and filename
 
- 
isJavaDiagnosticLineStartReturn true if this line in a Java file indicates an expected diagnostic that might be continued on the next line.
- 
handleEndOfLineJavaDiagnosticConvert an end-of-line diagnostic message to a beginning-of-line one. Returns the argument unchanged if it does not contain an end-of-line diagnostic message.Most diagnostics in Java files start at the beginning of a line. Occasionally, javac issues a warning about implicit code, such as an implicit constructor, on the line immediately after a curly brace. The only place to put the expected diagnostic message is on the line with the curly brace. This implementation replaces "{ // ::" by "// ::", converting the end-of-line diagnostic message to a beginning-of-line one that the rest of the code can handle. It is rather specific (to avoid false positive matches, such as when "// ::" is commented out in source code). It could be extended in the future if such an extension is necessary. 
- 
isJavaDiagnosticLineContinuation@EnsuresNonNullIf(result=true, expression="#1") public static boolean isJavaDiagnosticLineContinuation(@Nullable String originalLine) Return true if this line in a Java file continues an expected diagnostic.
- 
continuationPartReturn the continuation part. The argument is such thatisJavaDiagnosticLineContinuation(java.lang.String)returns true.
- 
fromJavaSourceLineConvert a line in a Java source file to a TestDiagnosticLine.The input lineis possibly the concatenation of multiple source lines, if the diagnostic was split across lines in the source code.
- 
fromDiagnosticFileLineConvert a line in a DiagnosticFile to a TestDiagnosticLine.
- 
fromJavaxDiagnosticListpublic static Set<TestDiagnostic> fromJavaxDiagnosticList(List<Diagnostic<? extends JavaFileObject>> javaxDiagnostics, boolean noMsgText) 
- 
diagnosticsToStringConverts the given diagnostics to strings (as they would appear in a source file individually).- Parameters:
- diagnostics- a list of diagnostics
- Returns:
- a list of the diagnastics as they would appear in a source file
 
- 
removeDiagnosticsOfKindpublic static void removeDiagnosticsOfKind(DiagnosticKind kind, List<TestDiagnostic> expectedDiagnostics) 
 
-