26 $ hg add d |
26 $ hg add d |
27 $ hg commit -m 'new head' -d '1500000 0' -u 'person' |
27 $ hg commit -m 'new head' -d '1500000 0' -u 'person' |
28 |
28 |
29 $ hg merge -q foo |
29 $ hg merge -q foo |
30 $ hg commit -m 'merge' -d '1500001 0' -u 'person' |
30 $ hg commit -m 'merge' -d '1500001 0' -u 'person' |
|
31 |
|
32 Test arithmetic operators have the right precedence: |
|
33 |
|
34 $ hg log -l 1 -T '{date(date, "%s") + 5 * 10} {date(date, "%s") - 2 * 3}\n' |
|
35 1500051 1499995 |
|
36 $ hg log -l 1 -T '{date(date, "%s") * 5 + 10} {date(date, "%s") * 3 - 2}\n' |
|
37 7500015 4500001 |
|
38 |
|
39 Test division: |
|
40 |
|
41 $ hg debugtemplate -r0 -v '{5 / 2} {mod(5, 2)}\n' |
|
42 (template |
|
43 (/ |
|
44 ('integer', '5') |
|
45 ('integer', '2')) |
|
46 ('string', ' ') |
|
47 (func |
|
48 ('symbol', 'mod') |
|
49 (list |
|
50 ('integer', '5') |
|
51 ('integer', '2'))) |
|
52 ('string', '\n')) |
|
53 2 1 |
|
54 $ hg debugtemplate -r0 -v '{5 / -2} {mod(5, -2)}\n' |
|
55 (template |
|
56 (/ |
|
57 ('integer', '5') |
|
58 (negate |
|
59 ('integer', '2'))) |
|
60 ('string', ' ') |
|
61 (func |
|
62 ('symbol', 'mod') |
|
63 (list |
|
64 ('integer', '5') |
|
65 (negate |
|
66 ('integer', '2')))) |
|
67 ('string', '\n')) |
|
68 -3 -1 |
|
69 $ hg debugtemplate -r0 -v '{-5 / 2} {mod(-5, 2)}\n' |
|
70 (template |
|
71 (/ |
|
72 (negate |
|
73 ('integer', '5')) |
|
74 ('integer', '2')) |
|
75 ('string', ' ') |
|
76 (func |
|
77 ('symbol', 'mod') |
|
78 (list |
|
79 (negate |
|
80 ('integer', '5')) |
|
81 ('integer', '2'))) |
|
82 ('string', '\n')) |
|
83 -3 1 |
|
84 $ hg debugtemplate -r0 -v '{-5 / -2} {mod(-5, -2)}\n' |
|
85 (template |
|
86 (/ |
|
87 (negate |
|
88 ('integer', '5')) |
|
89 (negate |
|
90 ('integer', '2'))) |
|
91 ('string', ' ') |
|
92 (func |
|
93 ('symbol', 'mod') |
|
94 (list |
|
95 (negate |
|
96 ('integer', '5')) |
|
97 (negate |
|
98 ('integer', '2')))) |
|
99 ('string', '\n')) |
|
100 2 -1 |
|
101 |
|
102 Filters bind closer than arithmetic: |
|
103 |
|
104 $ hg debugtemplate -r0 -v '{revset(".")|count - 1}\n' |
|
105 (template |
|
106 (- |
|
107 (| |
|
108 (func |
|
109 ('symbol', 'revset') |
|
110 ('string', '.')) |
|
111 ('symbol', 'count')) |
|
112 ('integer', '1')) |
|
113 ('string', '\n')) |
|
114 0 |
|
115 |
|
116 But negate binds closer still: |
|
117 |
|
118 $ hg debugtemplate -r0 -v '{1-3|stringify}\n' |
|
119 (template |
|
120 (- |
|
121 ('integer', '1') |
|
122 (| |
|
123 ('integer', '3') |
|
124 ('symbol', 'stringify'))) |
|
125 ('string', '\n')) |
|
126 hg: parse error: arithmetic only defined on integers |
|
127 [255] |
|
128 $ hg debugtemplate -r0 -v '{-3|stringify}\n' |
|
129 (template |
|
130 (| |
|
131 (negate |
|
132 ('integer', '3')) |
|
133 ('symbol', 'stringify')) |
|
134 ('string', '\n')) |
|
135 -3 |
31 |
136 |
32 Second branch starting at nullrev: |
137 Second branch starting at nullrev: |
33 |
138 |
34 $ hg update null |
139 $ hg update null |
35 0 files updated, 0 files merged, 4 files removed, 0 files unresolved |
140 0 files updated, 0 files merged, 4 files removed, 0 files unresolved |
2888 ('string', '\n')) |
2993 ('string', '\n')) |
2889 123 |
2994 123 |
2890 $ hg debugtemplate -v '{(-4)}\n' |
2995 $ hg debugtemplate -v '{(-4)}\n' |
2891 (template |
2996 (template |
2892 (group |
2997 (group |
2893 ('integer', '-4')) |
2998 (negate |
|
2999 ('integer', '4'))) |
2894 ('string', '\n')) |
3000 ('string', '\n')) |
2895 -4 |
3001 -4 |
2896 $ hg debugtemplate '{(-)}\n' |
3002 $ hg debugtemplate '{(-)}\n' |
2897 hg: parse error at 2: integer literal without digits |
3003 hg: parse error at 3: not a prefix: ) |
2898 [255] |
3004 [255] |
2899 $ hg debugtemplate '{(-a)}\n' |
3005 $ hg debugtemplate '{(-a)}\n' |
2900 hg: parse error at 2: integer literal without digits |
3006 hg: parse error: negation needs an integer argument |
2901 [255] |
3007 [255] |
2902 |
3008 |
2903 top-level integer literal is interpreted as symbol (i.e. variable name): |
3009 top-level integer literal is interpreted as symbol (i.e. variable name): |
2904 |
3010 |
2905 $ hg debugtemplate -D 1=one -v '{1}\n' |
3011 $ hg debugtemplate -D 1=one -v '{1}\n' |