Skip to content

Commit c7cf8f9

Browse files
committed
---
yaml --- r: 180047 b: refs/heads/auto c: ad6bb17 h: refs/heads/master i: 180045: d40b2d9 180043: c178a85 180039: 5050412 180031: 47910d9 v: v3
1 parent 0e65b2f commit c7cf8f9

File tree

9 files changed

+25
-216
lines changed

9 files changed

+25
-216
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503
1010
refs/tags/release-0.3.1: 495bae036dfe5ec6ceafd3312b4dca48741e845b
1111
refs/tags/release-0.4: e828ea2080499553b97dfe33b3f4d472b4562ad7
1212
refs/tags/release-0.5: 7e3bcfbf21278251ee936ad53e92e9b719702d73
13-
refs/heads/auto: 289ae604efd1ec083b62326e6171f195e466c95d
13+
refs/heads/auto: ad6bb17acf1645828f816c4f0165ccaa2b6c73f6
1414
refs/heads/servo: af82457af293e2a842ba6b7759b70288da276167
1515
refs/tags/release-0.6: b4ebcfa1812664df5e142f0134a5faea3918544c
1616
refs/tags/0.1: b19db808c2793fe2976759b85a355c3ad8c8b336

branches/auto/src/grammar/parser-lalr.y

Lines changed: 12 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -1193,12 +1193,10 @@ maybe_stmts
11931193
//
11941194
// In non-stmts contexts, expr can relax this trichotomy.
11951195
//
1196-
// There are also two other expr subtypes: first, nonparen_expr
1197-
// disallows exprs surrounded by parens (including tuple expressions),
1198-
// this is necessary for BOX (place) expressions, so a parens expr
1199-
// following the BOX is always parsed as the place. There is also
1200-
// expr_norange used in index_expr, which disallows '..' in
1201-
// expressions as that has special meaning inside of brackets.
1196+
// There is also one other expr subtype: nonparen_expr disallows exprs
1197+
// surrounded by parens (including tuple expressions), this is
1198+
// necessary for BOX (place) expressions, so a parens expr following
1199+
// the BOX is always parsed as the place.
12021200

12031201
stmts
12041202
: stmt { $$ = mk_node("stmts", 1, $1); }
@@ -1265,7 +1263,7 @@ nonblock_expr
12651263
| path_expr '{' struct_expr_fields '}' { $$ = mk_node("ExprStruct", 2, $1, $3); }
12661264
| nonblock_expr '.' path_generic_args_with_colons { $$ = mk_node("ExprField", 2, $1, $3); }
12671265
| nonblock_expr '.' LIT_INTEGER { $$ = mk_node("ExprTupleIndex", 1, $1); }
1268-
| nonblock_expr '[' index_expr ']' { $$ = mk_node("ExprIndex", 2, $1, $3); }
1266+
| nonblock_expr '[' maybe_expr ']' { $$ = mk_node("ExprIndex", 2, $1, $3); }
12691267
| nonblock_expr '(' maybe_exprs ')' { $$ = mk_node("ExprCall", 2, $1, $3); }
12701268
| '[' vec_expr ']' { $$ = mk_node("ExprVec", 1, $2); }
12711269
| '(' maybe_exprs ')' { $$ = mk_node("ExprParen", 1, $2); }
@@ -1307,6 +1305,7 @@ nonblock_expr
13071305
| nonblock_expr DOTDOT { $$ = mk_node("ExprRange", 2, $1, mk_none()); }
13081306
| nonblock_expr DOTDOT expr { $$ = mk_node("ExprRange", 2, $1, $3); }
13091307
| DOTDOT expr { $$ = mk_node("ExprRange", 2, mk_none(), $2); }
1308+
| DOTDOT { $$ = mk_node("ExprRange", 2, mk_none(), mk_none()); }
13101309
| nonblock_expr AS ty { $$ = mk_node("ExprCast", 2, $1, $3); }
13111310
| BOX nonparen_expr { $$ = mk_node("ExprBox", 1, $2); }
13121311
| %prec BOXPLACE BOX '(' maybe_expr ')' nonblock_expr { $$ = mk_node("ExprBox", 2, $3, $5); }
@@ -1322,7 +1321,7 @@ expr
13221321
| path_expr '{' struct_expr_fields '}' { $$ = mk_node("ExprStruct", 2, $1, $3); }
13231322
| expr '.' path_generic_args_with_colons { $$ = mk_node("ExprField", 2, $1, $3); }
13241323
| expr '.' LIT_INTEGER { $$ = mk_node("ExprTupleIndex", 1, $1); }
1325-
| expr '[' index_expr ']' { $$ = mk_node("ExprIndex", 2, $1, $3); }
1324+
| expr '[' maybe_expr ']' { $$ = mk_node("ExprIndex", 2, $1, $3); }
13261325
| expr '(' maybe_exprs ')' { $$ = mk_node("ExprCall", 2, $1, $3); }
13271326
| '(' maybe_exprs ')' { $$ = mk_node("ExprParen", 1, $2); }
13281327
| '[' vec_expr ']' { $$ = mk_node("ExprVec", 1, $2); }
@@ -1364,6 +1363,7 @@ expr
13641363
| expr DOTDOT { $$ = mk_node("ExprRange", 2, $1, mk_none()); }
13651364
| expr DOTDOT expr { $$ = mk_node("ExprRange", 2, $1, $3); }
13661365
| DOTDOT expr { $$ = mk_node("ExprRange", 2, mk_none(), $2); }
1366+
| DOTDOT { $$ = mk_node("ExprRange", 2, mk_none(), mk_none()); }
13671367
| expr AS ty { $$ = mk_node("ExprCast", 2, $1, $3); }
13681368
| BOX nonparen_expr { $$ = mk_node("ExprBox", 1, $2); }
13691369
| %prec BOXPLACE BOX '(' maybe_expr ')' expr { $$ = mk_node("ExprBox", 2, $3, $5); }
@@ -1381,7 +1381,7 @@ nonparen_expr
13811381
| path_expr '{' struct_expr_fields '}' { $$ = mk_node("ExprStruct", 2, $1, $3); }
13821382
| nonparen_expr '.' path_generic_args_with_colons { $$ = mk_node("ExprField", 2, $1, $3); }
13831383
| nonparen_expr '.' LIT_INTEGER { $$ = mk_node("ExprTupleIndex", 1, $1); }
1384-
| nonparen_expr '[' index_expr ']' { $$ = mk_node("ExprIndex", 2, $1, $3); }
1384+
| nonparen_expr '[' maybe_expr ']' { $$ = mk_node("ExprIndex", 2, $1, $3); }
13851385
| nonparen_expr '(' maybe_exprs ')' { $$ = mk_node("ExprCall", 2, $1, $3); }
13861386
| '[' vec_expr ']' { $$ = mk_node("ExprVec", 1, $2); }
13871387
| CONTINUE { $$ = mk_node("ExprAgain", 0); }
@@ -1422,6 +1422,7 @@ nonparen_expr
14221422
| nonparen_expr DOTDOT { $$ = mk_node("ExprRange", 2, $1, mk_none()); }
14231423
| nonparen_expr DOTDOT nonparen_expr { $$ = mk_node("ExprRange", 2, $1, $3); }
14241424
| DOTDOT nonparen_expr { $$ = mk_node("ExprRange", 2, mk_none(), $2); }
1425+
| DOTDOT { $$ = mk_node("ExprRange", 2, mk_none(), mk_none()); }
14251426
| nonparen_expr AS ty { $$ = mk_node("ExprCast", 2, $1, $3); }
14261427
| BOX nonparen_expr { $$ = mk_node("ExprBox", 1, $2); }
14271428
| %prec BOXPLACE BOX '(' maybe_expr ')' expr { $$ = mk_node("ExprBox", 1, $3, $5); }
@@ -1430,62 +1431,6 @@ nonparen_expr
14301431
| nonblock_prefix_expr
14311432
;
14321433

1433-
expr_norange
1434-
: lit { $$ = mk_node("ExprLit", 1, $1); }
1435-
| %prec IDENT
1436-
path_expr { $$ = mk_node("ExprPath", 1, $1); }
1437-
| SELF { $$ = mk_node("ExprPath", 1, mk_node("ident", 1, mk_atom("self"))); }
1438-
| macro_expr { $$ = mk_node("ExprMac", 1, $1); }
1439-
| path_expr '{' struct_expr_fields '}' { $$ = mk_node("ExprStruct", 2, $1, $3); }
1440-
| expr_norange '.' path_generic_args_with_colons { $$ = mk_node("ExprField", 2, $1, $3); }
1441-
| expr_norange '.' LIT_INTEGER { $$ = mk_node("ExprTupleIndex", 1, $1); }
1442-
| expr_norange '[' index_expr ']' { $$ = mk_node("ExprIndex", 2, $1, $3); }
1443-
| expr_norange '(' maybe_exprs ')' { $$ = mk_node("ExprCall", 2, $1, $3); }
1444-
| '(' maybe_exprs ')' { $$ = mk_node("ExprParen", 1, $2); }
1445-
| '[' vec_expr ']' { $$ = mk_node("ExprVec", 1, $2); }
1446-
| CONTINUE { $$ = mk_node("ExprAgain", 0); }
1447-
| CONTINUE ident { $$ = mk_node("ExprAgain", 1, $2); }
1448-
| RETURN { $$ = mk_node("ExprRet", 0); }
1449-
| RETURN expr { $$ = mk_node("ExprRet", 1, $2); }
1450-
| BREAK { $$ = mk_node("ExprBreak", 0); }
1451-
| BREAK ident { $$ = mk_node("ExprBreak", 1, $2); }
1452-
| expr_norange '=' expr_norange { $$ = mk_node("ExprAssign", 2, $1, $3); }
1453-
| expr_norange SHLEQ expr_norange { $$ = mk_node("ExprAssignShl", 2, $1, $3); }
1454-
| expr_norange SHREQ expr_norange { $$ = mk_node("ExprAssignShr", 2, $1, $3); }
1455-
| expr_norange MINUSEQ expr_norange { $$ = mk_node("ExprAssignSub", 2, $1, $3); }
1456-
| expr_norange ANDEQ expr_norange { $$ = mk_node("ExprAssignBitAnd", 2, $1, $3); }
1457-
| expr_norange OREQ expr_norange { $$ = mk_node("ExprAssignBitOr", 2, $1, $3); }
1458-
| expr_norange PLUSEQ expr_norange { $$ = mk_node("ExprAssignAdd", 2, $1, $3); }
1459-
| expr_norange STAREQ expr_norange { $$ = mk_node("ExprAssignMul", 2, $1, $3); }
1460-
| expr_norange SLASHEQ expr_norange { $$ = mk_node("ExprAssignDiv", 2, $1, $3); }
1461-
| expr_norange CARETEQ expr_norange { $$ = mk_node("ExprAssignBitXor", 2, $1, $3); }
1462-
| expr_norange PERCENTEQ expr_norange { $$ = mk_node("ExprAssignRem", 2, $1, $3); }
1463-
| expr_norange OROR expr_norange { $$ = mk_node("ExprBinary", 3, mk_atom("BiOr"), $1, $3); }
1464-
| expr_norange ANDAND expr_norange { $$ = mk_node("ExprBinary", 3, mk_atom("BiAnd"), $1, $3); }
1465-
| expr_norange EQEQ expr_norange { $$ = mk_node("ExprBinary", 3, mk_atom("BiEq"), $1, $3); }
1466-
| expr_norange NE expr_norange { $$ = mk_node("ExprBinary", 3, mk_atom("BiNe"), $1, $3); }
1467-
| expr_norange '<' expr_norange { $$ = mk_node("ExprBinary", 3, mk_atom("BiLt"), $1, $3); }
1468-
| expr_norange '>' expr_norange { $$ = mk_node("ExprBinary", 3, mk_atom("BiGt"), $1, $3); }
1469-
| expr_norange LE expr_norange { $$ = mk_node("ExprBinary", 3, mk_atom("BiLe"), $1, $3); }
1470-
| expr_norange GE expr_norange { $$ = mk_node("ExprBinary", 3, mk_atom("BiGe"), $1, $3); }
1471-
| expr_norange '|' expr_norange { $$ = mk_node("ExprBinary", 3, mk_atom("BiBitOr"), $1, $3); }
1472-
| expr_norange '^' expr_norange { $$ = mk_node("ExprBinary", 3, mk_atom("BiBitXor"), $1, $3); }
1473-
| expr_norange '&' expr_norange { $$ = mk_node("ExprBinary", 3, mk_atom("BiBitAnd"), $1, $3); }
1474-
| expr_norange SHL expr_norange { $$ = mk_node("ExprBinary", 3, mk_atom("BiShl"), $1, $3); }
1475-
| expr_norange SHR expr_norange { $$ = mk_node("ExprBinary", 3, mk_atom("BiShr"), $1, $3); }
1476-
| expr_norange '+' expr_norange { $$ = mk_node("ExprBinary", 3, mk_atom("BiAdd"), $1, $3); }
1477-
| expr_norange '-' expr_norange { $$ = mk_node("ExprBinary", 3, mk_atom("BiSub"), $1, $3); }
1478-
| expr_norange '*' expr_norange { $$ = mk_node("ExprBinary", 3, mk_atom("BiMul"), $1, $3); }
1479-
| expr_norange '/' expr_norange { $$ = mk_node("ExprBinary", 3, mk_atom("BiDiv"), $1, $3); }
1480-
| expr_norange '%' expr_norange { $$ = mk_node("ExprBinary", 3, mk_atom("BiRem"), $1, $3); }
1481-
| expr_norange AS ty { $$ = mk_node("Expr_NorangeCast", 2, $1, $3); }
1482-
| BOX nonparen_expr { $$ = mk_node("ExprBox", 1, $2); }
1483-
| %prec BOXPLACE BOX '(' maybe_expr ')' expr_norange { $$ = mk_node("ExprBox", 2, $3, $5); }
1484-
| block_expr
1485-
| block
1486-
| nonblock_prefix_expr
1487-
;
1488-
14891434
expr_nostruct
14901435
: lit { $$ = mk_node("ExprLit", 1, $1); }
14911436
| %prec IDENT
@@ -1494,7 +1439,7 @@ expr_nostruct
14941439
| macro_expr { $$ = mk_node("ExprMac", 1, $1); }
14951440
| expr_nostruct '.' path_generic_args_with_colons { $$ = mk_node("ExprField", 2, $1, $3); }
14961441
| expr_nostruct '.' LIT_INTEGER { $$ = mk_node("ExprTupleIndex", 1, $1); }
1497-
| expr_nostruct '[' index_expr ']' { $$ = mk_node("ExprIndex", 2, $1, $3); }
1442+
| expr_nostruct '[' maybe_expr ']' { $$ = mk_node("ExprIndex", 2, $1, $3); }
14981443
| expr_nostruct '(' maybe_exprs ')' { $$ = mk_node("ExprCall", 2, $1, $3); }
14991444
| '[' vec_expr ']' { $$ = mk_node("ExprVec", 1, $2); }
15001445
| '(' maybe_exprs ')' { $$ = mk_node("ExprParen", 1, $2); }
@@ -1536,6 +1481,7 @@ expr_nostruct
15361481
| expr_nostruct DOTDOT { $$ = mk_node("ExprRange", 2, $1, mk_none()); }
15371482
| expr_nostruct DOTDOT expr_nostruct { $$ = mk_node("ExprRange", 2, $1, $3); }
15381483
| DOTDOT expr_nostruct { $$ = mk_node("ExprRange", 2, mk_none(), $2); }
1484+
| DOTDOT { $$ = mk_node("ExprRange", 2, mk_none(), mk_none()); }
15391485
| expr_nostruct AS ty { $$ = mk_node("ExprCast", 2, $1, $3); }
15401486
| BOX nonparen_expr { $$ = mk_node("ExprBox", 1, $2); }
15411487
| %prec BOXPLACE BOX '(' maybe_expr ')' expr_nostruct { $$ = mk_node("ExprBox", 1, $3, $5); }
@@ -1612,14 +1558,6 @@ vec_expr
16121558
| exprs ';' expr { $$ = mk_node("VecRepeat", 2, $1, $3); }
16131559
;
16141560

1615-
index_expr
1616-
: expr_norange { $$ = mk_node("Index", 1, $1); }
1617-
| expr_norange DOTDOT { $$ = mk_node("SliceToEnd", 1, $1); }
1618-
| DOTDOT expr_norange { $$ = mk_node("SliceFromBeginning", 1, $2); }
1619-
| expr_norange DOTDOT expr_norange { $$ = mk_node("Slice", 2, $1, $3); }
1620-
| %empty { $$ = mk_none(); }
1621-
;
1622-
16231561
struct_expr_fields
16241562
: field_inits
16251563
| field_inits ','

branches/auto/src/librustc/lint/builtin.rs

Lines changed: 3 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2080,26 +2080,12 @@ declare_lint! {
20802080
"functions marked #[no_mangle] should be exported"
20812081
}
20822082

2083-
declare_lint! {
2084-
PRIVATE_NO_MANGLE_STATICS,
2085-
Warn,
2086-
"statics marked #[no_mangle] should be exported"
2087-
}
2088-
2089-
declare_lint! {
2090-
NO_MANGLE_CONST_ITEMS,
2091-
Deny,
2092-
"const items will not have their symbols exported"
2093-
}
2094-
20952083
#[derive(Copy)]
2096-
pub struct InvalidNoMangleItems;
2084+
pub struct PrivateNoMangleFns;
20972085

2098-
impl LintPass for InvalidNoMangleItems {
2086+
impl LintPass for PrivateNoMangleFns {
20992087
fn get_lints(&self) -> LintArray {
2100-
lint_array!(PRIVATE_NO_MANGLE_FNS,
2101-
PRIVATE_NO_MANGLE_STATICS,
2102-
NO_MANGLE_CONST_ITEMS)
2088+
lint_array!(PRIVATE_NO_MANGLE_FNS)
21032089
}
21042090

21052091
fn check_item(&mut self, cx: &Context, it: &ast::Item) {
@@ -2112,23 +2098,6 @@ impl LintPass for InvalidNoMangleItems {
21122098
cx.span_lint(PRIVATE_NO_MANGLE_FNS, it.span, &msg);
21132099
}
21142100
},
2115-
ast::ItemStatic(..) => {
2116-
if attr::contains_name(it.attrs.as_slice(), "no_mangle") &&
2117-
!cx.exported_items.contains(&it.id) {
2118-
let msg = format!("static {} is marked #[no_mangle], but not exported",
2119-
it.ident);
2120-
cx.span_lint(PRIVATE_NO_MANGLE_STATICS, it.span, msg.as_slice());
2121-
}
2122-
},
2123-
ast::ItemConst(..) => {
2124-
if attr::contains_name(it.attrs.as_slice(), "no_mangle") {
2125-
// Const items do not refer to a particular location in memory, and therefore
2126-
// don't have anything to attach a symbol to
2127-
let msg = "const items should never be #[no_mangle], consider instead using \
2128-
`pub static`";
2129-
cx.span_lint(NO_MANGLE_CONST_ITEMS, it.span, msg);
2130-
}
2131-
}
21322101
_ => {},
21332102
}
21342103
}

branches/auto/src/librustc/lint/context.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ impl LintStore {
213213
UnstableFeatures,
214214
Stability,
215215
UnconditionalRecursion,
216-
InvalidNoMangleItems,
216+
PrivateNoMangleFns,
217217
);
218218

219219
add_builtin_with_new!(sess,

branches/auto/src/librustc_trans/trans/foreign.rs

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -670,19 +670,14 @@ pub fn trans_rust_fn_with_foreign_abi<'a, 'tcx>(ccx: &CrateContext<'a, 'tcx>,
670670
}
671671
};
672672

673-
let rustfn_ty = Type::from_ref(llvm::LLVMTypeOf(llrustfn)).element_type();
674-
let mut rust_param_tys = rustfn_ty.func_params().into_iter();
675673
// Push Rust return pointer, using null if it will be unused.
676674
let rust_uses_outptr = match tys.fn_sig.output {
677675
ty::FnConverging(ret_ty) => type_of::return_uses_outptr(ccx, ret_ty),
678676
ty::FnDiverging => false
679677
};
680678
let return_alloca: Option<ValueRef>;
681-
let llrust_ret_ty = if rust_uses_outptr {
682-
rust_param_tys.next().expect("Missing return type!").element_type()
683-
} else {
684-
rustfn_ty.return_type()
685-
};
679+
let llrust_ret_ty = tys.llsig.llret_ty;
680+
let llrust_retptr_ty = llrust_ret_ty.ptr_to();
686681
if rust_uses_outptr {
687682
// Rust expects to use an outpointer. If the foreign fn
688683
// also uses an outpointer, we can reuse it, but the types
@@ -694,7 +689,7 @@ pub fn trans_rust_fn_with_foreign_abi<'a, 'tcx>(ccx: &CrateContext<'a, 'tcx>,
694689
debug!("out pointer, foreign={}",
695690
ccx.tn().val_to_string(llforeign_outptr));
696691
let llrust_retptr =
697-
builder.bitcast(llforeign_outptr, llrust_ret_ty.ptr_to());
692+
builder.bitcast(llforeign_outptr, llrust_retptr_ty);
698693
debug!("out pointer, foreign={} (casted)",
699694
ccx.tn().val_to_string(llrust_retptr));
700695
llrust_args.push(llrust_retptr);
@@ -726,13 +721,8 @@ pub fn trans_rust_fn_with_foreign_abi<'a, 'tcx>(ccx: &CrateContext<'a, 'tcx>,
726721
// a pointer and Rust does not or vice versa.
727722
for i in 0..tys.fn_sig.inputs.len() {
728723
let rust_ty = tys.fn_sig.inputs[i];
724+
let llrust_ty = tys.llsig.llarg_tys[i];
729725
let rust_indirect = type_of::arg_is_indirect(ccx, rust_ty);
730-
let llty = rust_param_tys.next().expect("Not enough parameter types!");
731-
let llrust_ty = if rust_indirect {
732-
llty.element_type()
733-
} else {
734-
llty
735-
};
736726
let llforeign_arg_ty = tys.fn_ty.arg_tys[i];
737727
let foreign_indirect = llforeign_arg_ty.is_indirect();
738728

@@ -848,7 +838,7 @@ pub fn trans_rust_fn_with_foreign_abi<'a, 'tcx>(ccx: &CrateContext<'a, 'tcx>,
848838
// Foreign ABI requires an out pointer, but Rust doesn't.
849839
// Store Rust return value.
850840
let llforeign_outptr_casted =
851-
builder.bitcast(llforeign_outptr, llrust_ret_ty.ptr_to());
841+
builder.bitcast(llforeign_outptr, llrust_retptr_ty);
852842
builder.store(llrust_ret_val, llforeign_outptr_casted);
853843
builder.ret_void();
854844
}

branches/auto/src/libstd/num/f32.rs

Lines changed: 1 addition & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ impl Float for f32 {
173173
#[inline]
174174
fn exp(self) -> f32 { num::Float::exp(self) }
175175
#[inline]
176-
fn exp2(self) -> f32 { num::Float::exp2(self) }
176+
fn exp2(self) -> f32 { num::Float::exp(self) }
177177
#[inline]
178178
fn ln(self) -> f32 { num::Float::ln(self) }
179179
#[inline]
@@ -554,33 +554,6 @@ mod tests {
554554
assert_approx_eq!((-1.7f32).fract(), -0.7f32);
555555
}
556556

557-
#[test]
558-
fn test_exp() {
559-
assert_eq!(1.0, 0.0f32.exp());
560-
assert_approx_eq!(2.718282, 1.0f32.exp());
561-
assert_approx_eq!(148.413162, 5.0f32.exp());
562-
563-
let inf: f32 = Float::infinity();
564-
let neg_inf: f32 = Float::neg_infinity();
565-
let nan: f32 = Float::nan();
566-
assert_eq!(inf, inf.exp());
567-
assert_eq!(0.0, neg_inf.exp());
568-
assert!(nan.exp().is_nan());
569-
}
570-
571-
#[test]
572-
fn test_exp2() {
573-
assert_eq!(32.0, 5.0f32.exp2());
574-
assert_eq!(1.0, 0.0f32.exp2());
575-
576-
let inf: f32 = Float::infinity();
577-
let neg_inf: f32 = Float::neg_infinity();
578-
let nan: f32 = Float::nan();
579-
assert_eq!(inf, inf.exp2());
580-
assert_eq!(0.0, neg_inf.exp2());
581-
assert!(nan.exp2().is_nan());
582-
}
583-
584557
#[test]
585558
fn test_asinh() {
586559
assert_eq!(0.0f32.asinh(), 0.0f32);

0 commit comments

Comments
 (0)