@@ -180,42 +180,40 @@ extern void RXI_To_Value(REBVAL *val, RXIARG arg, REBCNT type); // f-extension.c
180
180
//TODO: this code could be made resusable with other types!
181
181
spec = Get_System (SYS_STANDARD , STD_HANDLE_INFO );
182
182
if (!IS_OBJECT (spec )) Trap_Arg (spec );
183
- if (D_REF (2 )) { // query/mode refinement
184
- REBVAL * field = D_ARG (3 );
185
- if (IS_WORD (field )) {
186
- switch (VAL_WORD_CANON (field )) {
187
- case SYM_WORDS :
188
- Set_Block (D_RET , Get_Object_Words (spec ));
189
- return R_RET ;
190
- case SYM_SPEC :
191
- return R_ARG1 ;
192
- }
193
- if (!Query_Handle_Field (val , field , D_RET ))
194
- Trap_Reflect (VAL_TYPE (val ), field ); // better error?
183
+ REBVAL * field = D_ARG (3 );
184
+ if (IS_WORD (field )) {
185
+ switch (VAL_WORD_CANON (field )) {
186
+ case SYM_WORDS :
187
+ Set_Block (D_RET , Get_Object_Words (spec ));
188
+ return R_RET ;
189
+ case SYM_SPEC :
190
+ return R_ARG1 ;
195
191
}
196
- else if (IS_BLOCK (field )) {
197
- REBVAL * out = D_RET ;
198
- REBSER * values = Make_Block (2 * BLK_LEN (VAL_SERIES (field )));
199
- REBVAL * word = VAL_BLK_DATA (field );
200
- for (; NOT_END (word ); word ++ ) {
201
- if (ANY_WORD (word )) {
202
- if (IS_SET_WORD (word )) {
203
- // keep the set-word in result
204
- out = Append_Value (values );
205
- * out = * word ;
206
- VAL_SET_LINE (out );
207
- }
192
+ if (!Query_Handle_Field (val , field , D_RET ))
193
+ Trap_Reflect (VAL_TYPE (val ), field ); // better error?
194
+ }
195
+ else if (IS_BLOCK (field )) {
196
+ REBVAL * out = D_RET ;
197
+ REBSER * values = Make_Block (2 * BLK_LEN (VAL_SERIES (field )));
198
+ REBVAL * word = VAL_BLK_DATA (field );
199
+ for (; NOT_END (word ); word ++ ) {
200
+ if (ANY_WORD (word )) {
201
+ if (IS_SET_WORD (word )) {
202
+ // keep the set-word in result
208
203
out = Append_Value (values );
209
- if (! Query_Handle_Field ( val , word , out ))
210
- Trap1 ( RE_INVALID_ARG , word );
204
+ * out = * word ;
205
+ VAL_SET_LINE ( out );
211
206
}
212
- else Trap1 (RE_INVALID_ARG , word );
207
+ out = Append_Value (values );
208
+ if (!Query_Handle_Field (val , word , out ))
209
+ Trap1 (RE_INVALID_ARG , word );
213
210
}
214
- Set_Series (REB_BLOCK , D_RET , values );
215
- }
216
- else {
217
- Set_Block (D_RET , Get_Object_Words (spec ));
211
+ else Trap1 (RE_INVALID_ARG , word );
218
212
}
213
+ Set_Series (REB_BLOCK , D_RET , values );
214
+ }
215
+ else if (IS_NONE (field )){
216
+ Set_Block (D_RET , Get_Object_Words (spec ));
219
217
}
220
218
else {
221
219
REBSER * obj = CLONE_OBJECT (VAL_OBJ_FRAME (spec ));
0 commit comments