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


I have checked for upper-case letters without corresponding lower-case letters, with the following short script:

```
 ruby -n -e 'l=$_.split(/;/); if l[2]=="Lu" && l[13]=="" then puts l[1];end' <UnicodeData.txt
```

Somewhat contrary to my expectations, this turned up quite a number of characters (471 of them). Most are MATHEMATICAL symbols in the range U+1D400 to U+1D7FF. My understanding is that they don't have mappings because mathematicians use upper-case and lower-case symbols with different meanings.

There are some other upper-case characters without defined lower-case equivalents, but most of the correspond to empty slots in the MATHEMATICAL symbols charts.

The above patch would treat all identifiers starting with upper-case, even MATHEMATICAL symbols, as class names. Unless we want to forbid such characters in identifiers, I think that's the right thing to do.

What's more important for the above patch is that there are no title-case characters without lower-case mappings, so
```
+   if (r > 0 && (r != len || memcmp(fold, name, r)))
+       return TRUE;
+    }
```
in the patch will work correctly.

What is more important for the above patch is whether

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

* Author: sb (Sergey Borodanov)
* Status: Assigned
* Priority: Normal
* Assignee: matz (Yukihiro Matsumoto)
* Target version: 
----------------------------------------
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>