Skip to content

Commit 20ffdb1

Browse files
committed
Build warning message lazily
1 parent b62663c commit 20ffdb1

File tree

4 files changed

+35
-23
lines changed

4 files changed

+35
-23
lines changed

src/main/java/org/truffleruby/aot/ParserCache.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ private static RootParseNode parse(RubySource source) {
6767
if (!rubyWarnings.warnings.isEmpty()) {
6868
throw new RuntimeException("Core files should not emit warnings: " + String.join(
6969
", ",
70-
rubyWarnings.warnings.stream().map(w -> w.message).collect(Collectors.toList())));
70+
rubyWarnings.warnings.stream().map(w -> w.getWarningMessage()).collect(Collectors.toList())));
7171
}
7272
return rootParseNode;
7373
}

src/main/java/org/truffleruby/language/EmitWarningsNode.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,19 +45,19 @@ public void printWarnings(RubyContext context) {
4545
public static void printWarnings(RubyContext context, RubyDeferredWarnings warnings) {
4646
if (context == null) {
4747
for (RubyDeferredWarnings.WarningMessage warningMessage : warnings.warnings) {
48-
System.err.println(warningMessage.message);
48+
System.err.println(warningMessage.getWarningMessage());
4949
}
5050
} else {
5151
boolean isVerbose = context.getCoreLibrary().isVerbose();
5252
boolean warningsEnabled = context.getCoreLibrary().warningsEnabled();
5353
for (RubyDeferredWarnings.WarningMessage warningMessage : warnings.warnings) {
5454
if (warningMessage.verbosity == RubyDeferredWarnings.Verbosity.VERBOSE) {
5555
if (isVerbose) {
56-
printWarning(context, warningMessage.message);
56+
printWarning(context, warningMessage.getWarningMessage());
5757
}
5858
} else {
5959
if (warningsEnabled) {
60-
printWarning(context, warningMessage.message);
60+
printWarning(context, warningMessage.getWarningMessage());
6161
}
6262
}
6363
}

src/main/java/org/truffleruby/parser/RubyDeferredWarnings.java

Lines changed: 30 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,31 @@ public enum Verbosity {
4747

4848
public class WarningMessage {
4949
public final Verbosity verbosity;
50-
public final String message;
50+
private final String fileName;
51+
private final Integer lineNumber;
52+
private final String message;
5153

52-
public WarningMessage(Verbosity verbosity, String message) {
54+
public WarningMessage(Verbosity verbosity, String fileName, Integer lineNumber, String message) {
5355
this.verbosity = verbosity;
56+
this.fileName = fileName;
57+
this.lineNumber = lineNumber;
5458
this.message = message;
5559
}
60+
61+
public String getWarningMessage() {
62+
StringBuilder buffer = new StringBuilder(100);
63+
if (fileName != null) {
64+
buffer.append(fileName);
65+
if (lineNumber != null) {
66+
buffer.append(':').append(lineNumber).append(": ");
67+
} else {
68+
buffer.append(' ');
69+
}
70+
}
71+
buffer.append("warning: ").append(message).append('\n');
72+
return buffer.toString();
73+
}
74+
5675
}
5776

5877
@Override
@@ -62,29 +81,22 @@ public void warn(String message) {
6281

6382
/** Prints a warning, unless $VERBOSE is nil. */
6483
public void warn(String fileName, int lineNumber, String message) {
65-
warnings.add(new WarningMessage(Verbosity.NON_VERBOSE, makeWarningMessage(fileName, lineNumber, message)));
84+
warnings.add(new WarningMessage(Verbosity.NON_VERBOSE, fileName, lineNumber, message));
6685
}
6786

6887
/** Prints a warning, unless $VERBOSE is nil. */
6988
public void warn(String fileName, String message) {
70-
StringBuilder buffer = new StringBuilder(100);
71-
if (fileName != null) {
72-
buffer.append(fileName).append(' ');
73-
}
74-
buffer.append("warning: ").append(message).append('\n');
75-
warnings.add(new WarningMessage(Verbosity.NON_VERBOSE, buffer.toString()));
76-
}
77-
78-
private String makeWarningMessage(String fileName, int lineNumber, String message) {
79-
StringBuilder buffer = new StringBuilder(100);
80-
buffer.append(fileName).append(':').append(lineNumber).append(": ");
81-
buffer.append("warning: ").append(message).append('\n');
82-
return buffer.toString();
89+
warnings.add(new WarningMessage(Verbosity.NON_VERBOSE, fileName, null, message));
8390
}
8491

85-
/** Prints a warning, only in verbose mode. */
92+
/** Prints a warning, only if $VERBOSE is true. */
8693
public void warning(String fileName, int lineNumber, String message) {
87-
warnings.add(new WarningMessage(Verbosity.VERBOSE, makeWarningMessage(fileName, lineNumber, message)));
94+
warnings.add(
95+
new WarningMessage(
96+
Verbosity.VERBOSE,
97+
fileName,
98+
lineNumber,
99+
message));
88100
}
89101

90102
}

src/main/java/org/truffleruby/parser/RubyWarnings.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public void warn(String fileName, String message) {
9191
printWarning(buffer.toString());
9292
}
9393

94-
/** Prints a warning, only in verbose mode. */
94+
/** Prints a warning, only if $VERBOSE is true. */
9595
public void warning(String fileName, int lineNumber, String message) {
9696
if (!isVerbose()) {
9797
return;

0 commit comments

Comments
 (0)