File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ (ns syntax-test
2+ (:require [vim-clojure-static.test :as test :refer [defsyntaxtest ]]))
3+
4+ (def number (partial every? (partial = :clojureNumber )))
5+ (def !number (complement number))
6+
7+ (defsyntaxtest number-literals-test
8+ (with-format " %s"
9+ " 1234567890" number " +1" number " -1" number ; Integer
10+ " 0" number " +0" number " -0" number ; Integer zero
11+ " 0.12" number " +0.12" number " -0.12" number ; Float
12+ " 1." number " +1." number " -1." number ; Float
13+ " 0.0" number " +0.0" number " -0.0" number ; Float zero
14+ " 01234567" number " +07" number " -07" number ; Octal
15+ " 00" number " +00" number " -00" number ; Octal zero
16+ " 0x09abcdef" number " +0xf" number " -0xf" number ; Hexadecimal
17+ " 0x0" number " +0x0" number " -0x0" number ; Hexadecimal zero
18+ " 3/2" number " +3/2" number " -3/2" number ; Rational
19+ " 0/0" number " +0/0" number " -0/0" number ; Rational zero (not a syntax error)
20+ " 2r1" number " +2r1" number " -2r1" number ; Radix
21+ " 36R1" number " +36R1" number " -36R1" number ; Radix
22+
23+ ; ; Illegal literals (some are accepted by the reader, but are bad style)
24+
25+ " .1" !number
26+ " 01.2" !number
27+ " 089" !number
28+ " 0xfg" !number
29+ " 1.0/1" !number
30+ " 01/2" !number
31+ " 1/02" !number
32+ " 2r2" !number
33+ " 1r0" !number
34+ " 37r36" !number
35+
36+ ; ; BigInt
37+
38+ " 0N" number
39+ " +0.1N" !number
40+ " -07N" number
41+ " 08N" !number
42+ " +0x0fN" number
43+ " 1/2N" !number
44+
45+ ; ; BigDecimal
46+
47+ " 0M" number
48+ " +0.1M" number
49+ " 08M" !number
50+ " 08.9M" !number
51+ " 0x1fM" !number
52+ " 3/4M" !number
53+ " 2r1M" !number
54+
55+ ; ; Exponential notation
56+
57+ " 0e0" number
58+ " +0.1e-1" number
59+ " -1e-1" number
60+ " 08e1" !number
61+ " 07e1" !number
62+ " 0xfe-1" !number
63+ " 2r1e-1" !number))
64+
65+ ; ; (test #'number-literals-test)
Original file line number Diff line number Diff line change @@ -50,17 +50,16 @@ syntax match clojureCharacter "\\return"
5050syntax match clojureCharacter " \\ backspace"
5151syntax match clojureCharacter " \\ formfeed"
5252
53+ syntax match clojureSymbol " \v %([a-zA-Z!$&*_+=|<.>?-]|[^\x 00-\x 7F])+%(:?%([a-zA-Z0-9!#$%&*_+=|'<.>/?-]|[^\x 00-\x 7F]))*[#:]@<!"
54+
5355let s: radix_chars = " 0123456789abcdefghijklmnopqrstuvwxyz"
5456for s: radix in range (2 , 36 )
55- execute ' syntax match clojureNumber "\c\<-\ ?' . s: radix . ' r[' . strpart (s: radix_chars , 0 , s: radix ) . ' ]\+\ >"'
57+ execute ' syntax match clojureNumber "\v\c<[-+] ?' . s: radix . ' r[' . strpart (s: radix_chars , 0 , s: radix ) . ' ]+ >"'
5658endfor
5759unlet ! s: radix_chars s: radix
5860
59- syntax match clojureSymbol " \v %([a-zA-Z!$&*_+=|<.>?-]|[^\x 00-\x 7F])+%(:?%([a-zA-Z0-9!#$%&*_+=|'<.>/?-]|[^\x 00-\x 7F]))*[#:]@<!"
60-
61- syntax match clojureNumber " \v <[-+]?%(0\o *|[1-9]\d *|%(0|[1-9]\d *)\.\d *)%(M|[eE][-+]?\d +)?>"
62- syntax match clojureNumber " \v <[-+]?%(0\o *|[1-9]\d *)N>"
63- syntax match clojureNumber " \v <[-+]?0x\x +>"
61+ syntax match clojureNumber " \v <[-+]?%(0\o *|0x\x +|[1-9]\d *)N?>"
62+ syntax match clojureNumber " \v <[-+]?%(0|[1-9]\d *|%(0|[1-9]\d *)\.\d *)%(M|[eE][-+]?\d +)?>"
6463syntax match clojureNumber " \v <[-+]?%(0|[1-9]\d *)/%(0|[1-9]\d *)>"
6564
6665syntax match clojureVarArg " &"
You can’t perform that action at this time.
0 commit comments