mirror of https://github.com/FabricMC/yarn.git
Better char literals
Signed-off-by: liach <liach@users.noreply.github.com>
This commit is contained in:
parent
c45cd7ab43
commit
957c0f5138
|
@ -397,7 +397,9 @@ public class FieldBuilder {
|
||||||
// fake initializer falls through
|
// fake initializer falls through
|
||||||
case 'C':
|
case 'C':
|
||||||
if (fieldNode.value instanceof Integer) {
|
if (fieldNode.value instanceof Integer) {
|
||||||
return CodeBlock.builder().add("(char) $L", fieldNode.value).build();
|
int value = (int) fieldNode.value;
|
||||||
|
char c = (char) value;
|
||||||
|
return printChar(CodeBlock.builder(), c, value).build();
|
||||||
}
|
}
|
||||||
// fake initializer falls through
|
// fake initializer falls through
|
||||||
case 'D':
|
case 'D':
|
||||||
|
@ -437,6 +439,34 @@ public class FieldBuilder {
|
||||||
return CodeBlock.builder().add(desc.equals("Ljava/lang/String;") ? "java.lang.String.valueOf(\"dummy\")" : "null").build();
|
return CodeBlock.builder().add(desc.equals("Ljava/lang/String;") ? "java.lang.String.valueOf(\"dummy\")" : "null").build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static CodeBlock.Builder printChar(CodeBlock.Builder builder, char c, int value) {
|
||||||
|
if (!Character.isValidCodePoint(value) || !Character.isDefined(value)) {
|
||||||
|
return builder.add("(char) $L", value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// See https://docs.oracle.com/javase/specs/jls/se16/html/jls-3.html#jls-EscapeSequence
|
||||||
|
// ignore space or ", just use direct in those cases
|
||||||
|
switch (c) {
|
||||||
|
case '\b':
|
||||||
|
return builder.add("'\\b'");
|
||||||
|
case '\t':
|
||||||
|
return builder.add("'\\t'");
|
||||||
|
case '\n':
|
||||||
|
return builder.add("'\\n'");
|
||||||
|
case '\f':
|
||||||
|
return builder.add("'\\f'");
|
||||||
|
case '\r':
|
||||||
|
return builder.add("'\\r'");
|
||||||
|
case '\'':
|
||||||
|
return builder.add("'\\''");
|
||||||
|
case '\\':
|
||||||
|
return builder.add("'\\\\'");
|
||||||
|
}
|
||||||
|
|
||||||
|
return builder.add("'$L'", c);
|
||||||
|
}
|
||||||
|
|
||||||
private void addJavaDoc() {
|
private void addJavaDoc() {
|
||||||
mappings.addFieldDoc(builder::addJavadoc, new EntryTriple(classNode.name, fieldNode.name, fieldNode.desc));
|
mappings.addFieldDoc(builder::addJavadoc, new EntryTriple(classNode.name, fieldNode.name, fieldNode.desc));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue