IDEA-127533 int field is displayed as char - show only reasonable ascii as chars

This commit is contained in:
Egor.Ushakov
2017-05-04 12:52:28 +03:00
parent 1c0cad79c6
commit 844177d33e
4 changed files with 62 additions and 3 deletions

View File

@@ -133,7 +133,7 @@ public class ConstExprent extends Exprent {
String ret = CHAR_ESCAPES.get(val);
if (ret == null) {
char c = (char)val.intValue();
if (c >= 32 && c < 127 || !ascii && TextUtil.isPrintableUnicode(c)) {
if (isPrintableAscii(c) || !ascii && TextUtil.isPrintableUnicode(c)) {
ret = String.valueOf(c);
}
else {
@@ -278,7 +278,7 @@ public class ConstExprent extends Exprent {
// buffer.append("\\\'");
// break;
default:
if (c >= 32 && c < 127 || !ascii && TextUtil.isPrintableUnicode(c)) {
if (isPrintableAscii(c) || !ascii && TextUtil.isPrintableUnicode(c)) {
buffer.append(c);
}
else {
@@ -371,7 +371,7 @@ public class ConstExprent extends Exprent {
// BYTECHAR and SHORTCHAR => CHAR in the CHAR context
if (expectedType.equals(VarType.VARTYPE_CHAR) &&
(constType.equals(VarType.VARTYPE_BYTECHAR) || constType.equals(VarType.VARTYPE_SHORTCHAR))) {
if (getIntValue() != 0) {
if (isPrintableAscii(getIntValue())) {
setConstType(VarType.VARTYPE_CHAR);
}
}
@@ -382,6 +382,11 @@ public class ConstExprent extends Exprent {
}
}
private static boolean isPrintableAscii(int c) {
return c >= 32 && c < 127;
}
public Object getValue() {
return value;
}

View File

@@ -69,6 +69,17 @@ public class TestPrimitives {
public void constructor() {
new Byte((byte)1);// 73
}// 74
private boolean compare(char c) {
boolean res = c > -1;// 77
res = c > 0;// 78
res = c > 1;// 79
res = c > 'a';// 80
res = c > 'Z';// 81
res = c > 127;// 82
res = c > 255;// 83
return res;// 84
}
}
class 'pkg/TestPrimitives' {
@@ -210,6 +221,30 @@ class 'pkg/TestPrimitives' {
4 69
9 70
}
method 'compare (C)Z' {
1 73
2 73
a 73
c 74
14 74
16 75
17 75
1f 75
21 76
23 76
2b 76
2d 77
2f 77
37 77
39 78
3b 78
43 78
45 79
48 79
50 79
52 80
}
}
Lines mapping:
@@ -248,3 +283,11 @@ Lines mapping:
70 <-> 67
73 <-> 70
74 <-> 71
77 <-> 74
78 <-> 75
79 <-> 76
80 <-> 77
81 <-> 78
82 <-> 79
83 <-> 80
84 <-> 81

View File

@@ -72,4 +72,15 @@ public class TestPrimitives {
public void constructor() {
new Byte((byte)1);
}
private boolean compare(char c) {
boolean res = (c > -1);
res = (c > 0);
res = (c > 1);
res = (c > 'a');
res = (c > 'Z');
res = (c > 127);
res = (c > 255);
return res;
}
}