From: duerst@...
Date: 2017-07-28T10:49:50+00:00
Subject: [ruby-core:82206] [Ruby trunk Bug#13770] Can't create valid	Cyrillic-named class/module

Issue #13770 has been updated by duerst (Martin D��rst).


matz (Yukihiro Matsumoto) wrote:
> And maybe it's time to relax the limitation for Non-ASCII capital letters to start constant names.

I agree. Here are some pointers for implementation:

The distinction between constants (`tCONSTANT`) and identifiers (`tIDENTIFIER`) is made at `parse.c:7830` using macro `ISUPPER`. Some other uses of `ISUPPER` (but not all of them) seem to be related to this distinction, e.g. the one at `symbol.c:281`.

`ISUPPER` is defined using `rb_isupper` in `include/ruby/ruby.h`, the later being defined inline in the same file, as `'A' <= c && c <= 'Z'`. This would have to be replaced with a call to `ONIGENC_IS_CODE_CTYPE` or so, which would work for legacy encodings. For Unicode-based encodings, where we want to into account titlecase (thanks, Shyouhei!), it may be slightly more complicated.

A question we might want to check for is if there's any code out there that currently uses non-ASCII upper-case variable names.

Another question is whether we might want to have some convention for Japanese, e.g. Katakana for class names. Just thinking out loud (and ducking).


----------------------------------------
Bug #13770: Can't create valid Cyrillic-named class/module
https://bugs.ruby-lang.org/issues/13770#change-65970

* Author: sb (Sergey Borodanov)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
* Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
Can't create a valid Cyrillic-named class. If I have a file **������.rb**:

~~~ ruby
# Content of ������.rb:

class ������

  def ����������������������������
    "������������, ������!"
  end

end
~~~

and do in **bash**:

~~~
ruby ������.rb
~~~

I get the error (**SyntaxError**):

~~~
������.rb:1: class/module name must be CONSTANT
~~~

Same error with module creating and same behavior in **irb** (please, see attachment). At the same time Cyrillic-named constants and methods work fine.

It is expected that creating Cyrillic-named class/modules should work without error.

---Files--------------------------------
Screenshot from 2017-07-26 19-08-14.png (64.2 KB)


-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>