[CLJ-1003] :100 is a valid Clojure keyword. Is that intentional? Created: 27/May/12 Updated: 13/Sep/12 |
|
| Status: | Open |
| Project: | Clojure |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Defect | Priority: | Minor |
| Reporter: | Brian Taylor | Assignee: | Unassigned |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
In the latest clojure (eccde24c7), These parse as keywords: :100 This is an error: :a/100 Is this behavior intentional? In LispReader.java, the pattern for a symbol (and keyword) is "[:]?([\\D&&[^/]].*/)?([ http://clojure.org/reader says that none of my examples should parse. Clojurescript does not accept any of my examples, see |
| Comments |
| Comment by Andy Fingerhut [ 13/Sep/12 6:34 PM ] |
|
The reason that :100 parses as a keyword is that [ Whether this is intentional or not, my guess is probably not. Given that the docs at http://clojure.org/reader also say "A symbol can contain one or more non-repeating ':'s", writing a regexp that matches only what is documented there looks fairly complex. Clojure has a history of allowing things, without throwing exceptions or giving any other errors, even if they are documented as not legal. This may be one of those cases. Do not consider this last paragraph as any kind of authoritative answer. It is only my observation. |