diff --git a/base.c b/base.c index a83c6826..3cba03e0 100644 --- a/base.c +++ b/base.c @@ -115,6 +115,18 @@ ctr_object* ctr_nil_to_string(ctr_object* myself, ctr_argument* argumentList) { return ctr_build_string_from_cstring( CTR_DICT_NIL ); } +/** + * @def + * [ Nil ] else: [ Object ] + * + * @example + * ☞ x ≔ Nil. + * ✎ write: (x else: 123), stop. + */ +ctr_object* ctr_nil_else_set(ctr_object* myself, ctr_argument* argumentList) { + return argumentList->object; +} + /** * @def * [ Nil ] number diff --git a/citrine.h b/citrine.h index eb401160..68a7cea5 100644 --- a/citrine.h +++ b/citrine.h @@ -441,6 +441,7 @@ extern ctr_object* ctr_nil_is_nil(ctr_object* myself, ctr_argument* argumentList extern ctr_object* ctr_nil_to_string(ctr_object* myself, ctr_argument* argumentList); extern ctr_object* ctr_nil_to_number(ctr_object* myself, ctr_argument* argumentList); extern ctr_object* ctr_nil_to_boolean(ctr_object* myself, ctr_argument* argumentList); +extern ctr_object* ctr_nil_else_set(ctr_object* myself, ctr_argument* argumentList); /** * Object Interface diff --git a/tests/exp/xx2/test0372.exp b/tests/exp/xx2/test0372.exp new file mode 100644 index 00000000..5f5fbe75 --- /dev/null +++ b/tests/exp/xx2/test0372.exp @@ -0,0 +1,3 @@ +1 +2 +3 \ No newline at end of file diff --git a/tests/test-o-mat/Configuration b/tests/test-o-mat/Configuration index 515b3a02..c4b464eb 100644 --- a/tests/test-o-mat/Configuration +++ b/tests/test-o-mat/Configuration @@ -31,6 +31,6 @@ ☞ one way languages ≔ List ← ‘hy’ ; ‘en’. ☞ variations ≔ memory management modes + languages. -☞ number of tests ≔ 371. +☞ number of tests ≔ 372. ☞ base path for tests ≔ ‘../../’. diff --git a/tests/test0372.ctr b/tests/test0372.ctr new file mode 100644 index 00000000..f3d56326 --- /dev/null +++ b/tests/test0372.ctr @@ -0,0 +1,6 @@ +‘SINGLE_LANGUAGE’. +✎ write: (Nil else: 1), stop. +✎ write: (Nil else: Nil, else: 2), stop. +✎ write: (Nil else: Nil, else: Nil, else: 3), stop. + + diff --git a/world.c b/world.c index 3bfa8a8f..6feb453c 100644 --- a/world.c +++ b/world.c @@ -689,6 +689,7 @@ void ctr_initialize_world() { ctr_internal_create_func( CtrStdNil, ctr_build_string_from_cstring( CTR_DICT_TONUMBER ), &ctr_nil_to_number ); ctr_internal_create_func( CtrStdNil, ctr_build_string_from_cstring( CTR_DICT_TOBOOL ), &ctr_nil_to_boolean ); ctr_internal_create_func( CtrStdNil, ctr_build_string_from_cstring( CTR_DICT_CODE ), &ctr_nil_to_string ); + ctr_internal_create_func( CtrStdNil, ctr_build_string_from_cstring( CTR_DICT_ELSE ), &ctr_nil_else_set ); CtrStdNil->link = CtrStdObject; CtrStdNil->info.sticky = 1;