@@ -190,6 +190,21 @@ static String getLogicalValue(RubyObject object, String type, Heap heap) {
190
190
FieldValue imagField = object .getFieldValue ("@imag" ); // NOI18N
191
191
String imag = imagField != null ? imagField .getValue () : null ;
192
192
if (real != null && imag != null ) logicalValue = "(" + real + (imag .startsWith ("-" ) ? imag : "+" + imag ) + "i)" ; // NOI18N
193
+ } else if ("Range" .equals (type )) { // NOI18N
194
+ FieldValue beginField = object .getFieldValue ("begin (hidden)" ); // NOI18N
195
+ FieldValue endField = object .getFieldValue ("end (hidden)" ); // NOI18N
196
+ FieldValue excludedField = object .getFieldValue ("excludedEnd (hidden)" ); // NOI18N
197
+ if (beginField != null && endField != null && excludedField != null ) {
198
+ Instance beginInstance = beginField instanceof ObjectFieldValue ? ((ObjectFieldValue )beginField ).getInstance () : null ;
199
+ String begin = beginInstance != null ? logicalValue (beginInstance , heap ) : beginField .getValue ();
200
+
201
+ Instance endInstance = endField instanceof ObjectFieldValue ? ((ObjectFieldValue )endField ).getInstance () : null ;
202
+ String end = endInstance != null ? logicalValue (endInstance , heap ) : endField .getValue ();
203
+
204
+ boolean excluded = "1" .equals (excludedField .getValue ()); // NOI18N
205
+
206
+ logicalValue = "(" + begin + (excluded ? "..." : ".." ) + end + ")" ; // NOI18N
207
+ }
193
208
}
194
209
195
210
if (logicalValue != null && logicalValue .length () > MAX_LOGVALUE_LENGTH )
@@ -198,6 +213,15 @@ static String getLogicalValue(RubyObject object, String type, Heap heap) {
198
213
return logicalValue ;
199
214
}
200
215
216
+ private static String logicalValue (Instance instance , Heap heap ) {
217
+ if (RubyObject .isRubyObject (instance )) {
218
+ RubyObject object = new RubyObject (instance );
219
+ return getLogicalValue (object , object .getType (heap ), heap );
220
+ } else {
221
+ return DetailsUtils .getInstanceString (instance , heap );
222
+ }
223
+ }
224
+
201
225
202
226
// TODO: uncomment once types caching is available for RubyHeapFragment
203
227
// private static String computeName(TruffleObjectNode.InstanceBased<RubyDynamicObject> node, Heap heap) {
0 commit comments