160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
|
if (word_tokens == 1 && stmt.intv[0]) {
stmt.interp.empty_obj.decrRefCount(stmt.intv[0]);
return stmt.intv[0];
}
/* Concatenate every token in an unique
* object. */
obj_ptr = stmt.interp.empty_obj.newStringObjectNoAlloc(null, 0);
if (word_tokens == 4 && token[idx + 0].token == stmt.TOKEN_ESC && token[idx + 1].token == stmt.TOKEN_ESC
&& token[idx + 2].token == stmt.TOKEN_VAR) {
/* May be able to do fast interpolated object -> dictSubst */
obj_ptr.obj_type = obj_ptr.interpolatedObjType;
obj_ptr.twoPtrValue.ptr1(token);
obj_ptr.twoPtrValue.ptr2(stmt.intv[idx + 2]);
|
|
|
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
|
if (word_tokens == 1 && stmt.intv[0]) {
stmt.interp.empty_obj.decrRefCount(stmt.intv[0]);
return stmt.intv[0];
}
/* Concatenate every token in an unique
* object. */
obj_ptr = stmt.interp.string_obj_type.newStringObjNoAlloc(null, 0);
if (word_tokens == 4 && token[idx + 0].token == stmt.TOKEN_ESC && token[idx + 1].token == stmt.TOKEN_ESC
&& token[idx + 2].token == stmt.TOKEN_VAR) {
/* May be able to do fast interpolated object -> dictSubst */
obj_ptr.obj_type = obj_ptr.interpolatedObjType;
obj_ptr.twoPtrValue.ptr1(token);
obj_ptr.twoPtrValue.ptr2(stmt.intv[idx + 2]);
|
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
|
if (len >= 3) {
var obj_ptr;
if (Jim_ListIndex(stmt.interp.stack_trace, len - 3, obj_ptr, stmt.FUNCTION_FLAGS_NONE) == stmt.OK && Jim_Length(obj_ptr)) {
/* Yes, the previous level had procname */
if (Jim_ListIndex(stmt.interp.stack_trace, len - 2, objPtr, stmt.FUNCTION_FLAGS_NONE) == stmt.OK && !Jim_Length(obj_ptr)) {
/* But no filename, so merge the new info with that frame */
ListSetIndex(stmt.interp.stack_trace, len - 2, file_name_obj, 0);
ListSetIndex(stmt.interp.stack_trace, len - 1, file_nameObj.newIntObject(linenr), 0);
return;
}
}
}
}
stmt.interp.list_obj_type.listAppendElement(stmt.interp.stack_trace, file_name_obj.newStringObject(procname, -1));
stmt.interp.list_obj_type.listAppendElement(stmt.interp.stack_trace, file_name_obj);
stmt.interp.list_obj_type.listAppendElement(stmt.interp.stack_trace, file_name_obj.newIntObject(linenr));
},
/* ==================== isBracedParam ===================================== */
isBracedParam: function (val) {
return (val instanceof TclWord);
},
|
|
|
|
|
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
|
if (len >= 3) {
var obj_ptr;
if (Jim_ListIndex(stmt.interp.stack_trace, len - 3, obj_ptr, stmt.FUNCTION_FLAGS_NONE) == stmt.OK && Jim_Length(obj_ptr)) {
/* Yes, the previous level had procname */
if (Jim_ListIndex(stmt.interp.stack_trace, len - 2, objPtr, stmt.FUNCTION_FLAGS_NONE) == stmt.OK && !Jim_Length(obj_ptr)) {
/* But no filename, so merge the new info with that frame */
ListSetIndex(stmt.interp.stack_trace, len - 2, file_name_obj, 0);
ListSetIndex(stmt.interp.stack_trace, len - 1, stmt.interp.int_obj_type.newIntObj(linenr), 0);
return;
}
}
}
}
stmt.interp.list_obj_type.listAppendElement(stmt.interp.stack_trace, stmt.interp.string_obj_type.newStringObj(procname, -1));
stmt.interp.list_obj_type.listAppendElement(stmt.interp.stack_trace, file_name_obj);
stmt.interp.list_obj_type.listAppendElement(stmt.interp.stack_trace, stmt.interp.int_obj_type.newIntObj(linenr));
},
/* ==================== isBracedParam ===================================== */
isBracedParam: function (val) {
return (val instanceof TclWord);
},
|