Skip to content

Commit 3eddded

Browse files
committed
feat: Upgrade from f32 to f64
BREAKING CHANGE: Liquid's "Value" API now works with f64's instead of f32's
1 parent f96d9eb commit 3eddded

23 files changed

+208
-208
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ let template = liquid::ParserBuilder::with_liquid()
2929
.parse("Liquid! {{num | minus: 2}}").unwrap();
3030

3131
let mut globals = liquid::Object::new();
32-
globals.insert("num".to_owned(), liquid::Value::scalar(4f32));
32+
globals.insert("num".to_owned(), liquid::Value::scalar(4f64));
3333

3434
let output = template.render(&globals).unwrap();
3535
assert_eq!(output, "Liquid! 2".to_string());

src/compiler/lexer.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ pub fn granularize(block: &str) -> Result<Vec<Token>> {
156156
x if NUMBER_LITERAL.is_match(x) => x.parse::<i32>()
157157
.map(Token::IntegerLiteral)
158158
.unwrap_or_else(|_e| {
159-
let x = x.parse::<f32>()
159+
let x = x.parse::<f64>()
160160
.expect("matches to NUMBER_LITERAL are parseable as floats");
161161
Token::FloatLiteral(x)
162162
}),
@@ -517,8 +517,8 @@ mod test {
517517
granularize("multiply 5.5 3.2434").unwrap(),
518518
vec![
519519
Token::Identifier("multiply".to_owned()),
520-
Token::FloatLiteral(5.5f32),
521-
Token::FloatLiteral(3.2434f32),
520+
Token::FloatLiteral(5.5f64),
521+
Token::FloatLiteral(3.2434f64),
522522
]
523523
);
524524
assert_eq!(

src/compiler/token.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ pub enum Token {
4747
Identifier(String),
4848
StringLiteral(String),
4949
IntegerLiteral(i32),
50-
FloatLiteral(f32),
50+
FloatLiteral(f64),
5151
BooleanLiteral(bool),
5252
DotDot,
5353
Comparison(ComparisonOperator),
@@ -135,12 +135,12 @@ mod test {
135135
fn evaluate_handles_number_literals() {
136136
let ctx = Context::new();
137137
assert_eq!(
138-
Token::FloatLiteral(42f32)
138+
Token::FloatLiteral(42f64)
139139
.to_arg()
140140
.unwrap()
141141
.evaluate(&ctx)
142142
.unwrap(),
143-
Value::scalar(42f32)
143+
Value::scalar(42f64)
144144
);
145145

146146
let ctx = Context::new();
@@ -179,14 +179,14 @@ mod test {
179179
#[test]
180180
fn evaluate_handles_identifiers() {
181181
let mut ctx = Context::new();
182-
ctx.set_global_val("var0", Value::scalar(42f32));
182+
ctx.set_global_val("var0", Value::scalar(42f64));
183183
assert_eq!(
184184
Token::Identifier("var0".to_owned())
185185
.to_arg()
186186
.unwrap()
187187
.evaluate(&ctx)
188188
.unwrap(),
189-
Value::scalar(42f32)
189+
Value::scalar(42f64)
190190
);
191191
assert!(
192192
Token::Identifier("nope".to_owned())

src/filters/date.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,8 @@ mod tests {
106106
#[test]
107107
fn unit_date_bad_input_type() {
108108
assert_eq!(
109-
unit!(date, Value::scalar(0f32), &[tos!("%Y-%m-%d")]),
110-
Value::scalar(0f32)
109+
unit!(date, Value::scalar(0f64), &[tos!("%Y-%m-%d")]),
110+
Value::scalar(0f64)
111111
);
112112
}
113113

@@ -137,7 +137,7 @@ mod tests {
137137
unit!(
138138
date,
139139
tos!("13 Jun 2016 02:30:00 +0300"),
140-
&[Value::scalar(0f32)]
140+
&[Value::scalar(0f64)]
141141
),
142142
tos!("0")
143143
);
@@ -157,7 +157,7 @@ mod tests {
157157
failed!(
158158
date,
159159
tos!("13 Jun 2016 02:30:00 +0300"),
160-
&[Value::scalar(0f32), Value::scalar(1f32)]
160+
&[Value::scalar(0f64), Value::scalar(1f64)]
161161
),
162162
FilterError::InvalidArgumentCount("expected at most 1, 2 given".to_owned())
163163
);
@@ -193,7 +193,7 @@ mod tests {
193193
#[test]
194194
#[cfg(feature = "extra-filters")]
195195
fn unit_date_in_tz_input_not_a_string() {
196-
let input = &Value::scalar(0f32);
196+
let input = &Value::scalar(0f64);
197197
let args = &[tos!("%Y-%m-%d %H:%M:%S %z"), Value::scalar(0i32)];
198198
let desired_result = FilterError::InvalidType("Invalid date format".to_owned());
199199
assert_eq!(failed!(date_in_tz, input, args), desired_result);
@@ -243,8 +243,8 @@ mod tests {
243243
let input = &tos!("13 Jun 2016 12:00:00 +0000");
244244
let args = &[
245245
tos!("%Y-%m-%d %H:%M:%S %z"),
246-
Value::scalar(0f32),
247-
Value::scalar(1f32),
246+
Value::scalar(0f64),
247+
Value::scalar(1f64),
248248
];
249249
let desired_result =
250250
FilterError::InvalidArgumentCount("expected at most 2, 3 given".to_owned());

src/filters/html.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ mod tests {
217217
#[test]
218218
fn unit_newline_to_br_one_argument() {
219219
let input = &tos!("a\nb");
220-
let args = &[Value::scalar(0f32)];
220+
let args = &[Value::scalar(0f64)];
221221
let desired_result =
222222
FilterError::InvalidArgumentCount("expected at most 0, 1 given".to_owned());
223223
assert_eq!(failed!(newline_to_br, input, args), desired_result);

src/filters/math.rs

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -167,17 +167,17 @@ mod tests {
167167

168168
#[test]
169169
fn unit_abs() {
170-
let input = Value::scalar(-1f32);
170+
let input = Value::scalar(-1f64);
171171
let args = &[];
172-
let desired_result = Value::scalar(1f32);
172+
let desired_result = Value::scalar(1f64);
173173
assert_eq!(unit!(abs, input, args), desired_result);
174174
}
175175

176176
#[test]
177177
fn unit_abs_positive_in_string() {
178178
let input = &tos!("42");
179179
let args = &[];
180-
let desired_result = Value::scalar(42f32);
180+
let desired_result = Value::scalar(42f64);
181181
assert_eq!(unit!(abs, input, args), desired_result);
182182
}
183183

@@ -191,8 +191,8 @@ mod tests {
191191

192192
#[test]
193193
fn unit_abs_one_argument() {
194-
let input = &Value::scalar(-1f32);
195-
let args = &[Value::scalar(0f32)];
194+
let input = &Value::scalar(-1f64);
195+
let args = &[Value::scalar(0f64)];
196196
let desired_result =
197197
FilterError::InvalidArgumentCount("expected at most 0, 1 given".to_owned());
198198
assert_eq!(failed!(abs, input, args), desired_result);
@@ -201,15 +201,15 @@ mod tests {
201201
#[test]
202202
fn unit_abs_shopify_liquid() {
203203
// Three tests from https://shopify.github.io/liquid/filters/abs/
204-
assert_eq!(unit!(abs, Value::scalar(-17f32), &[]), Value::scalar(17f32));
205-
assert_eq!(unit!(abs, Value::scalar(4f32), &[]), Value::scalar(4f32));
206-
assert_eq!(unit!(abs, tos!("-19.86"), &[]), Value::scalar(19.86f32));
204+
assert_eq!(unit!(abs, Value::scalar(-17f64), &[]), Value::scalar(17f64));
205+
assert_eq!(unit!(abs, Value::scalar(4f64), &[]), Value::scalar(4f64));
206+
assert_eq!(unit!(abs, tos!("-19.86"), &[]), Value::scalar(19.86f64));
207207
}
208208
#[test]
209209
fn unit_plus() {
210210
assert_eq!(
211-
unit!(plus, Value::scalar(2f32), &[Value::scalar(1f32)]),
212-
Value::scalar(3f32)
211+
unit!(plus, Value::scalar(2f64), &[Value::scalar(1f64)]),
212+
Value::scalar(3f64)
213213
);
214214
assert_eq!(
215215
unit!(plus, Value::scalar(21.5), &[Value::scalar(2.25)]),
@@ -220,8 +220,8 @@ mod tests {
220220
#[test]
221221
fn unit_minus() {
222222
assert_eq!(
223-
unit!(minus, Value::scalar(2f32), &[Value::scalar(1f32)]),
224-
Value::scalar(1f32)
223+
unit!(minus, Value::scalar(2f64), &[Value::scalar(1f64)]),
224+
Value::scalar(1f64)
225225
);
226226
assert_eq!(
227227
unit!(minus, Value::scalar(21.5), &[Value::scalar(1.25)]),
@@ -232,8 +232,8 @@ mod tests {
232232
#[test]
233233
fn unit_times() {
234234
assert_eq!(
235-
unit!(times, Value::scalar(2f32), &[Value::scalar(3f32)]),
236-
Value::scalar(6f32)
235+
unit!(times, Value::scalar(2f64), &[Value::scalar(3f64)]),
236+
Value::scalar(6f64)
237237
);
238238
assert_eq!(
239239
unit!(times, Value::scalar(8.5), &[Value::scalar(0.5)]),
@@ -247,32 +247,32 @@ mod tests {
247247
#[test]
248248
fn unit_modulo() {
249249
assert_eq!(
250-
unit!(modulo, Value::scalar(3_f32), &[Value::scalar(2_f32)]),
251-
Value::scalar(1_f32)
250+
unit!(modulo, Value::scalar(3_f64), &[Value::scalar(2_f64)]),
251+
Value::scalar(1_f64)
252252
);
253253
assert_eq!(
254-
unit!(modulo, Value::scalar(3_f32), &[Value::scalar(3.0)]),
255-
Value::scalar(0_f32)
254+
unit!(modulo, Value::scalar(3_f64), &[Value::scalar(3.0)]),
255+
Value::scalar(0_f64)
256256
);
257257
assert_eq!(
258-
unit!(modulo, Value::scalar(24_f32), &[Value::scalar(7_f32)]),
259-
Value::scalar(3_f32)
258+
unit!(modulo, Value::scalar(24_f64), &[Value::scalar(7_f64)]),
259+
Value::scalar(3_f64)
260260
);
261261
assert_eq!(
262-
unit!(modulo, Value::scalar(183.357), &[Value::scalar(12_f32)]),
263-
Value::scalar(3.3569946)
262+
unit!(modulo, Value::scalar(183.357), &[Value::scalar(12_f64)]),
263+
Value::scalar(3.3569999999999993)
264264
);
265265
}
266266

267267
#[test]
268268
fn unit_divided_by() {
269269
assert_eq!(
270-
unit!(divided_by, Value::scalar(4f32), &[Value::scalar(2f32)]),
271-
Value::scalar(2f32)
270+
unit!(divided_by, Value::scalar(4f64), &[Value::scalar(2f64)]),
271+
Value::scalar(2f64)
272272
);
273273
assert_eq!(
274-
unit!(divided_by, Value::scalar(5f32), &[Value::scalar(2f32)]),
275-
Value::scalar(2.5f32)
274+
unit!(divided_by, Value::scalar(5f64), &[Value::scalar(2f64)]),
275+
Value::scalar(2.5f64)
276276
);
277277
assert!(divided_by(&Value::scalar(true), &[Value::scalar(8.5)]).is_err());
278278
assert!(divided_by(&Value::scalar(2.5), &[Value::scalar(true)]).is_err());

0 commit comments

Comments
 (0)