Changeset 284 for trunk/thune/rune
- Timestamp:
- 09/25/06 15:40:57 (2 years ago)
- Location:
- trunk/thune/rune
- Files:
-
- 3 modified
-
rune.c (modified) (6 diffs)
-
tests/eval.good (modified) (1 diff)
-
tests/eval.t (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/thune/rune/rune.c
r282 r284 197 197 goto push_infix; 198 198 199 extern int ur_getSelector( UThread*, const UCell* sel, UCell* res ); 199 200 200 201 int rune_eval( UThread* ur_thread, UIndex blkN, UIndex si ) … … 347 348 goto invalid_opcode; 348 349 350 case UT_SELECT: 351 if( ! ur_getSelector( ur_thread, val, UR_TOS ) ) 352 { 353 --pc; 354 goto trace_error; //throw_cc 355 } 356 val = UR_TOS; 357 if( ur_is(val, UT_FUNCTION) ) 358 goto do_func; 359 break; 360 349 361 case UT_PAREN: 350 362 goto do_block; 351 363 352 364 case UT_FUNCTION: 365 do_func: 353 366 if( ur_argc(val) == 0 ) 354 367 goto call_func; … … 499 512 goto control; 500 513 514 case UT_CONTEXT: 515 // Denotes context returned from uc_make(). 516 val = OR_TOC; 517 UR_C_DEC; 518 goto control; 519 501 520 case UT_FUNCTION: 502 521 LOOK_AHEAD_FOR_INFIX … … 561 580 case OP_DO: 562 581 UR_CALL_OP = 0; 582 // uc_make() leaves (ctx blk) on stack. 583 PUSHC_CELL( UR_TOS ); 584 UR_S_DROP; 563 585 goto do_block; 564 586 … … 963 985 "] make-opcodes :rune-ops\n" 964 986 "[\n" 987 " 0 :context\n" 965 988 " 0 :prin\n" 966 989 " 0 :print\n" … … 985 1008 " to-text [val]\n" 986 1009 " reduce [val]\n" 1010 " make [type spec]\n" 987 1011 " func.loop [sig body]\n" 988 1012 "] define-natives\n" 989 1013 "[\n" 1014 " context: func [spec] [make context! spec]\n" 990 1015 " prin: func [val] [cout to-text val]\n" 991 1016 " print: func [val] [cout to-text val cout eol]\n" -
trunk/thune/rune/tests/eval.good
r281 r284 41 41 Timing print string. 42 42 time! 43 --- Context --- 44 1 45 2 46 Hello 47 '^/' -
trunk/thune/rune/tests/eval.t
r282 r284 60 60 [type? time-blk [print "Timing print string."]] 61 61 62 tst "--- Context ---" 63 [ 64 c: context [a: 1 b: 2 c: does [print "Hello"]] 65 probe c/a 66 probe c/b 67 c/c 68 ] 69 62 70 ] rune 63 71
