diff --git a/extra/modern/modern-tests.factor b/extra/modern/modern-tests.factor index 5c85b47aa6..68e43dc65a 100644 --- a/extra/modern/modern-tests.factor +++ b/extra/modern/modern-tests.factor @@ -11,6 +11,16 @@ IN: modern.tests { t } [ "FOO::" upper-colon? ] unit-test { t } [ "FOO:::" upper-colon? ] unit-test +! 'FOO: +{ f } [ "'" upper-colon? ] unit-test +{ t } [ "':" upper-colon? ] unit-test +{ t } [ "'::" upper-colon? ] unit-test +{ t } [ "':::" upper-colon? ] unit-test +{ t } [ "'FOO:" upper-colon? ] unit-test +{ t } [ "'FOO::" upper-colon? ] unit-test +{ t } [ "'FOO:::" upper-colon? ] unit-test + +! \FOO: is not an upper-colon form, it is deactivated by the \ { f } [ "\\" upper-colon? ] unit-test { f } [ "\\:" upper-colon? ] unit-test { f } [ "\\::" upper-colon? ] unit-test diff --git a/extra/modern/modern.factor b/extra/modern/modern.factor index f2c905ab1d..a4eb778ac4 100644 --- a/extra/modern/modern.factor +++ b/extra/modern/modern.factor @@ -158,12 +158,14 @@ ERROR: unexpected-terminator n string slice ; : (strict-upper?) ( string -- ? ) { + ! All chars must... [ [ - { [ char: A char: Z between? ] [ ":-\\#" member? ] } 1|| + { [ char: A char: Z between? ] [ "':-\\#" member? ] } 1|| ] all? ] - [ [ char: A char: Z between? ] any? ] ! XXX: what? + ! At least one char must... + [ [ { [ char: A char: Z between? ] [ char: ' = ] } 1|| ] any? ] } 1&& ; : strict-upper? ( string -- ? )