rev 651 - in trunk: . include/prothon modules/DBM modules/Prosist modules/Re modules/SQLite pr/test src
SVN User <[email protected]> Wed, 23 Jun 2004 00:55:46 -0400
| Newsgroups | gmane.comp.lang.prothon.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: mark
Date: 2004-06-23 00:55:43 -0400 (Wed, 23 Jun 2004)
New Revision: 651
Modified:
trunk/STATUS.txt
trunk/include/prothon/prothon.h
trunk/modules/DBM/DBM.c
trunk/modules/Prosist/Prosist.c
trunk/modules/Re/Re.c
trunk/modules/SQLite/SQLite.c
trunk/pr/test/test.pr
trunk/src/builtins-attrdict.c
trunk/src/builtins-core.c
trunk/src/builtins-dict.c
trunk/src/builtins-file.c
trunk/src/builtins-list.c
trunk/src/builtins-protolist.c
trunk/src/builtins-thread.c
trunk/src/builtins-tuple.c
trunk/src/interp.c
trunk/src/interp.h
Log:
fixed 3 or 4 bugs from the bug list
Modified: trunk/STATUS.txt
===================================================================
--- trunk/STATUS.txt 2004-06-23 02:23:14 UTC (rev 650)
+++ trunk/STATUS.txt 2004-06-23 04:55:43 UTC (rev 651)
@@ -2,7 +2,6 @@
----------------------- TO-DO (highest priority first) ------------------------
--- finish live formal param defaults, bugs, and easy changes
---- evaluate default expressions on every function call
--- fix raise command
--- change proto() to newObject()
Modified: trunk/include/prothon/prothon.h
===================================================================
--- trunk/include/prothon/prothon.h 2004-06-23 02:23:14 UTC (rev 650)
+++ trunk/include/prothon/prothon.h 2004-06-23 04:55:43 UTC (rev 651)
@@ -300,23 +300,23 @@
OBJECT, // 2 Object
NONE, // 3 None
- NOKEY, //
- PARAM_STAR, //
- PARAM_STAR_STAR, //
- NODEF, //
+ NOKEY, // 4
+ PARAM_STAR, // 5
+ PARAM_STAR_STAR, // 6
+ NODEF, // 7
// prototype objects used as protos for basic "types"
- INT_PROTO, // Int
- FLOAT_PROTO, // Float
- IMAG_PROTO, // Imaginary
- SYMBOL_PROTO, // Symbol
- DATETIME_PROTO, // Time
- SEQ_PROTO, // Sequence
- BYTES_PROTO, // Bytes
- STRING_PROTO, // String
- TUPLE_PROTO, // Tuple
- LIST_PROTO, // List
- DICT_PROTO, // Dict
+ INT_PROTO, // 8 Int
+ FLOAT_PROTO, // 9 Float
+ IMAG_PROTO, // 10 Imaginary
+ SYMBOL_PROTO, // 11 Symbol
+ DATETIME_PROTO, // 12 Time
+ SEQ_PROTO, // 13 Sequence
+ BYTES_PROTO, // 14 Bytes
+ STRING_PROTO, // 15 String
+ TUPLE_PROTO, // 16 Tuple
+ LIST_PROTO, // 17 List
+ DICT_PROTO, // 18 Dict
FUNC_PROTO, // Func
METHOD_PROTO, // Method
HASH_PROTO, // Hash
Modified: trunk/modules/DBM/DBM.c
===================================================================
--- trunk/modules/DBM/DBM.c 2004-06-23 02:23:14 UTC (rev 650)
+++ trunk/modules/DBM/DBM.c 2004-06-23 04:55:43 UTC (rev 651)
@@ -301,7 +301,6 @@
}
DEF(DB, objList_, FORM_RPARAM) {
- BIN_CONTENT_CHK(DB);
return parms[1];
}
Modified: trunk/modules/Prosist/Prosist.c
===================================================================
--- trunk/modules/Prosist/Prosist.c 2004-06-23 02:23:14 UTC (rev 650)
+++ trunk/modules/Prosist/Prosist.c 2004-06-23 04:55:43 UTC (rev 651)
@@ -1024,7 +1024,6 @@
}
DEF(Prosist, objList_, FORM_RPARAM) {
- BIN_CONTENT_CHK(Prosist);
return parms[1];
}
@@ -1041,7 +1040,6 @@
}
DEF(MutWrap, objList_, FORM_RPARAM) {
- BIN_CONTENT_CHK(MutWrap);
return parms[1];
}
Modified: trunk/modules/Re/Re.c
===================================================================
--- trunk/modules/Re/Re.c 2004-06-23 02:23:14 UTC (rev 650)
+++ trunk/modules/Re/Re.c 2004-06-23 04:55:43 UTC (rev 651)
@@ -490,8 +490,8 @@
}
DEF(reCompiled, del_, NULL) {
- BIN_CONTENT_CHK(reCompiled);
- regfree((regex_t*)(self->data.ptr));
+ if (self->data.ptr)
+ regfree((regex_t*)(self->data.ptr));
return OBJ(NONE);
}
Modified: trunk/modules/SQLite/SQLite.c
===================================================================
--- trunk/modules/SQLite/SQLite.c 2004-06-23 02:23:14 UTC (rev 650)
+++ trunk/modules/SQLite/SQLite.c 2004-06-23 04:55:43 UTC (rev 651)
@@ -170,7 +170,6 @@
}
DEF(Connection, objList_, FORM_RPARAM) {
- BIN_CONTENT_CHK(Connection);
return parms[1];
}
@@ -279,7 +278,7 @@
DEF(Cursor, objList_, FORM_RPARAM) {
cursor_p cursorp = (cursor_p)(self->data.ptr);
- BIN_CONTENT_CHK(Cursor);
+ if (!self->data.ptr) return parms[1];
if (cursorp->row_list)
return cursorp->row_list;
return parms[1];
Modified: trunk/pr/test/test.pr
===================================================================
--- trunk/pr/test/test.pr 2004-06-23 02:23:14 UTC (rev 650)
+++ trunk/pr/test/test.pr 2004-06-23 04:55:43 UTC (rev 651)
@@ -1,37 +1,5 @@
#!/usr/bin/env prothon
-def err(n):
- print "\n test {n} failed".fmt()
- sys.exit(1)
-
-z=0
-def f(x=y):
- outer.z = x
-
-y=1
-f(0)
-if z != 0: err(1)
-
-y=2
-f()
-if z != 2: err(2)
-
-y=3
-f()
-if z != 3: err(3)
-
-n=[]
-n.g=f
-y=4
-n.g(9)
-if z != 9: err(4)
-
-n.g()
-y=5
-t = Thread(f)
-Sleep(1.0)
-if z != 5: err(5)
-
-print """
-all tests passed
-"""
+object x:
+ pass
+x.attrs_.delItem_($eee)
Modified: trunk/src/builtins-attrdict.c
===================================================================
--- trunk/src/builtins-attrdict.c 2004-06-23 02:23:14 UTC (rev 650)
+++ trunk/src/builtins-attrdict.c 2004-06-23 04:55:43 UTC (rev 651)
@@ -155,7 +155,7 @@
DEF(AttrDict, str_, NULL) {
obj_p res, dict;
- BIN_STR_CHK(AttrDict);
+ BIN_STR_CHK(AttrDict_OBJ);
dict = attr2dict(ist, self->data.ptr); if_exc_return NULL;
res = call_func0(ist, dict, SYM(STR_));
del_unlock(dict);
@@ -201,6 +201,7 @@
DEF(AttrDict, getItem_, FORM_RPARAM) {
obj_p res = NULL, index;
BIN_CONTENT_CHK(AttrDict);
+ CHECK_TYPE_EXC(parms[1], OBJ(SLICE_PROTO), Slice);
if (list_len(ist, parms[1]) > 1) {
raise_exception(ist, OBJ(INTERPRETER_EXC), "slice not allowed in attr dictionary indexing");
return NULL;
@@ -218,6 +219,7 @@
DEF(AttrDict, setItem_, FORM_PARAM2) {
obj_p index;
BIN_CONTENT_CHK(AttrDict);
+ CHECK_TYPE_EXC(parms[1], OBJ(SLICE_PROTO), Slice);
if (list_len(ist, parms[1]) > 1) {
raise_exception(ist, OBJ(INTERPRETER_EXC), "slice not allowed in attr dictionary indexing");
return NULL;
@@ -235,6 +237,7 @@
DEF(AttrDict, delItem_, FORM_RPARAM) {
obj_p index;
BIN_CONTENT_CHK(AttrDict);
+ CHECK_TYPE_EXC(parms[1], OBJ(SLICE_PROTO), Slice);
if (list_len(ist, parms[1]) > 1) {
raise_exception(ist, OBJ(INTERPRETER_EXC), "slice not allowed in attr dictionary indexing");
return NULL;
@@ -299,7 +302,6 @@
}
DEF(AttrDict, objList_, FORM_RPARAM) {
- BIN_CONTENT_CHK(AttrDict);
return parms[1];
}
Modified: trunk/src/builtins-core.c
===================================================================
--- trunk/src/builtins-core.c 2004-06-23 02:23:14 UTC (rev 650)
+++ trunk/src/builtins-core.c 2004-06-23 04:55:43 UTC (rev 651)
@@ -637,8 +637,9 @@
ch3_p self_str = NULL;
u8_t* self_bytes = NULL;
- CHECK_TYPE_EXC(self, OBJ(SEQ_PROTO), "sequence");
-
+ CHECK_TYPE_EXC(self, OBJ(SEQ_PROTO), sequence);
+ CHECK_TYPE_EXC(slice, OBJ(SLICE_PROTO), slice);
+
if (seq_type == SEQ_TYPE_BYTES) {
self_bytes = bytes_ptr(self);
self_len = (int) bytes_len(self);
Modified: trunk/src/builtins-dict.c
===================================================================
--- trunk/src/builtins-dict.c 2004-06-23 02:23:14 UTC (rev 650)
+++ trunk/src/builtins-dict.c 2004-06-23 04:55:43 UTC (rev 651)
@@ -408,8 +408,8 @@
}
DEF(Dict, objList_, FORM_RPARAM) {
- BIN_CONTENT_CHK(Dict);
- return parms[1];
+ if (!self->data.ptr) return parms[1];
+ return dict_keys_values(ist, self, 0 /*values*/);
}
DEF(Dict, getItem_, FORM_RPARAM) {
@@ -417,7 +417,7 @@
BIN_CONTENT_CHK(Dict);
CHECK_TYPE_EXC(self, OBJ(DICT_PROTO), "dict");
-
+ CHECK_TYPE_EXC(parms[1], OBJ(SLICE_PROTO), Slice);
if (list_len(ist, parms[1]) > 1) {
raise_exception(ist, OBJ(INTERPRETER_EXC), "slice not allowed in dictionary indexing");
return NULL;
Modified: trunk/src/builtins-file.c
===================================================================
--- trunk/src/builtins-file.c 2004-06-23 02:23:14 UTC (rev 650)
+++ trunk/src/builtins-file.c 2004-06-23 04:55:43 UTC (rev 651)
@@ -590,8 +590,8 @@
}
DEF(TempDir, del_, NULL) {
- BIN_CONTENT_CHK(TempDir);
- call_func0(ist, self, sym(ist, "delete"));
+ if (self->data.ptr)
+ call_func0(ist, self, sym(ist, "delete"));
return OBJ(NONE);
}
Modified: trunk/src/builtins-list.c
===================================================================
--- trunk/src/builtins-list.c 2004-06-23 02:23:14 UTC (rev 650)
+++ trunk/src/builtins-list.c 2004-06-23 04:55:43 UTC (rev 651)
@@ -382,6 +382,7 @@
i64_t i, new_len, exp_len, index1 = 0, index2 = 0, index3 = 0, slice1_empty=FALSE, slice2_empty=FALSE;
size_t val_len, self_len, slice_len = list_len(ist, slice);
BIN_CONTENT_CHK(List);
+ CHECK_TYPE_EXC(parms[1], OBJ(SLICE_PROTO), Slice);
def_write_lock(self);
self_len = listlen(self);
slice_item1 = list_item(ist, slice,0);
@@ -497,6 +498,7 @@
i64_t i, new_len, index1 = 0, index2 = 0, index3 = 0, slice1_empty=FALSE, slice2_empty=FALSE;
size_t exp_len, self_len, slice_len = list_len(ist, slice);
BIN_CONTENT_CHK(List);
+ CHECK_TYPE_EXC(parms[1], OBJ(SLICE_PROTO), Slice);
def_write_lock(self);
self_len = listlen(self);
slice_item1 = list_item(ist, slice,0);
Modified: trunk/src/builtins-protolist.c
===================================================================
--- trunk/src/builtins-protolist.c 2004-06-23 02:23:14 UTC (rev 650)
+++ trunk/src/builtins-protolist.c 2004-06-23 04:55:43 UTC (rev 651)
@@ -141,6 +141,7 @@
DEF(ProtoList, getItem_, FORM_RPARAM) {
obj_p res, list;
BIN_CONTENT_CHK(ProtoList);
+ CHECK_TYPE_EXC(parms[1], OBJ(SLICE_PROTO), Slice);
res = call_func1(ist, list = protos2list(ist, self->data.ptr),
sym(ist, "getItem_"), parms[1]);
del_unlock(list);
@@ -150,6 +151,7 @@
DEF(ProtoList, setItem_, FORM_PARAM2) {
obj_p list;
BIN_CONTENT_CHK(ProtoList);
+ CHECK_TYPE_EXC(parms[1], OBJ(SLICE_PROTO), Slice);
call_func2(ist, list = protos2list(ist, self->data.ptr),
sym(ist, "setItem_"), parms[1], parms[3]);
list2protos(ist, list, self->data.ptr);
@@ -160,6 +162,7 @@
DEF(ProtoList, delItem_, FORM_RPARAM) {
obj_p list;
BIN_CONTENT_CHK(ProtoList);
+ CHECK_TYPE_EXC(parms[1], OBJ(SLICE_PROTO), Slice);
call_func1(ist, list = protos2list(ist, self->data.ptr),
sym(ist, "delItem_"), parms[1]);
list2protos(ist, list, self->data.ptr);
@@ -221,7 +224,6 @@
}
DEF(ProtoList, objList_, FORM_RPARAM) {
- BIN_CONTENT_CHK(ProtoList);
return parms[1];
}
Modified: trunk/src/builtins-thread.c
===================================================================
--- trunk/src/builtins-thread.c 2004-06-23 02:23:14 UTC (rev 650)
+++ trunk/src/builtins-thread.c 2004-06-23 04:55:43 UTC (rev 651)
@@ -321,7 +321,6 @@
}
DEF(Thread, objList_, FORM_RPARAM) {
- BIN_CONTENT_CHK(Thread);
return parms[1];
}
@@ -353,7 +352,7 @@
DEF(Mutex, str_, NULL) {
char name[30];
- BIN_CONTENT_CHK(Mutex);
+ BIN_STR_CHK(Mutex);
apr_snprintf(name, sizeof(name), "<Mutex:%lx>", (unsigned long)(intptr_t)self);
return NEW_STRING(name);
}
@@ -385,13 +384,12 @@
}
DEF(Mutex, del_, NULL) {
- BIN_CONTENT_CHK(Mutex);
- apr_thread_mutex_destroy((apr_thread_mutex_t*)(self->data.ptr));
+ if (self->data.ptr)
+ apr_thread_mutex_destroy((apr_thread_mutex_t*)(self->data.ptr));
return OBJ(NONE);
}
DEF(Mutex, objList_, FORM_RPARAM) {
- BIN_CONTENT_CHK(Mutex);
return parms[1];
}
Modified: trunk/src/builtins-tuple.c
===================================================================
--- trunk/src/builtins-tuple.c 2004-06-23 02:23:14 UTC (rev 650)
+++ trunk/src/builtins-tuple.c 2004-06-23 04:55:43 UTC (rev 651)
@@ -126,6 +126,7 @@
}
DEF(Tuple, objList_, FORM_RPARAM) {
+ if (!self->data.ptr) return parms[1];
return self;
}
Modified: trunk/src/interp.c
===================================================================
--- trunk/src/interp.c 2004-06-23 02:23:14 UTC (rev 650)
+++ trunk/src/interp.c 2004-06-23 04:55:43 UTC (rev 651)
@@ -772,8 +772,12 @@
if (fr_prev) {
if (fr_ccall)
res = fr_tos;
- else
- fr_prev->stack[fr_prev->stack_ptr-1] = fr_tos;
+ else {
+ if (fr_prev->no_return_flag)
+ fr_prev->no_return_flag = FALSE;
+ else
+ fr_prev->stack[fr_prev->stack_ptr-1] = fr_tos;
+ }
*switch_frame = fr_prev;
(*switch_frame)->next_frame = NULL;
} else {
@@ -1356,7 +1360,7 @@
fr_stack[fr_sp], fr_data(1), NULL, "with" );
switch_frame->prev_frame = frame;
frame->next_frame = switch_frame;
- fr_push(OBJ(NONE));
+ frame->no_return_flag = TRUE;
end_op_obj: break;
case OP_CALL: {
obj_p name_obj;
Modified: trunk/src/interp.h
===================================================================
--- trunk/src/interp.h 2004-06-23 02:23:14 UTC (rev 650)
+++ trunk/src/interp.h 2004-06-23 04:55:43 UTC (rev 651)
@@ -105,6 +105,7 @@
fparam_proc_state_t fparam_proc_state;
int fparam_proc_state_idx;
obj_p new_locals;
+ int no_return_flag;
obj_p stack[];
} frame_t;