Skip to content

Commit

Permalink
Move abs() into mod num
Browse files Browse the repository at this point in the history
Reviewed By: JakobDegen

Differential Revision: D63009017

fbshipit-source-id: 9f0a392fdbfded1bdf8ce8d56c95dc58ea4c3e03
  • Loading branch information
stepancheg authored and facebook-github-bot committed Sep 20, 2024
1 parent fae7981 commit 0701d2f
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 20 deletions.
2 changes: 2 additions & 0 deletions starlark/src/stdlib/funcs/globals.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ use crate::values::string::globals::register_str;
use crate::values::tuple::globals::register_tuple;
use crate::values::types::dict::globals::register_dict;
use crate::values::types::list::globals::register_list;
use crate::values::types::num::globals::register_num;

pub(crate) fn register_globals(globals: &mut GlobalsBuilder) {
register_list(globals);
Expand All @@ -38,6 +39,7 @@ pub(crate) fn register_globals(globals: &mut GlobalsBuilder) {
register_str(globals);
register_range(globals);
register_int(globals);
register_num(globals);
register_float(globals);
register_min_max(globals);
register_zip(globals);
Expand Down
20 changes: 0 additions & 20 deletions starlark/src/stdlib/funcs/other.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@ use crate::environment::GlobalsBuilder;
use crate::eval::Evaluator;
use crate::values::list::AllocList;
use crate::values::tuple::UnpackTuple;
use crate::values::types::num::value::Num;
use crate::values::types::num::value::NumRef;
use crate::values::typing::never::StarlarkNever;
use crate::values::typing::ty::AbstractType;
use crate::values::typing::StarlarkIter;
Expand Down Expand Up @@ -66,24 +64,6 @@ pub(crate) fn register_other(builder: &mut GlobalsBuilder) {
)))
}

/// Take the absolute value of an int.
///
/// ```
/// # starlark::assert::all_true(r#"
/// abs(0) == 0
/// abs(-10) == 10
/// abs(10) == 10
/// abs(10.0) == 10.0
/// abs(-12.34) == 12.34
/// # "#);
/// ```
fn abs(#[starlark(require = pos)] x: NumRef) -> anyhow::Result<Num> {
match x {
NumRef::Int(a) => Ok(Num::Int(a.abs())),
NumRef::Float(a) => Ok(Num::Float(a.0.abs())),
}
}

/// [any](
/// https://github.com/bazelbuild/starlark/blob/master/spec.md#any
/// ): returns true if any value in the iterable object have a truth value
Expand Down
1 change: 1 addition & 0 deletions starlark/src/values/types/num.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,6 @@

//! Helpers for numerical values.
pub(crate) mod globals;
pub(crate) mod typecheck;
pub(crate) mod value;
44 changes: 44 additions & 0 deletions starlark/src/values/types/num/globals.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
/*
* Copyright 2018 The Starlark in Rust Authors.
* Copyright (c) Facebook, Inc. and its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

use starlark_derive::starlark_module;

use crate as starlark;
use crate::environment::GlobalsBuilder;
use crate::values::types::num::value::Num;
use crate::values::types::num::value::NumRef;

#[starlark_module]
pub(crate) fn register_num(globals: &mut GlobalsBuilder) {
/// Take the absolute value of an int.
///
/// ```
/// # starlark::assert::all_true(r#"
/// abs(0) == 0
/// abs(-10) == 10
/// abs(10) == 10
/// abs(10.0) == 10.0
/// abs(-12.34) == 12.34
/// # "#);
/// ```
fn abs(#[starlark(require = pos)] x: NumRef) -> anyhow::Result<Num> {
match x {
NumRef::Int(a) => Ok(Num::Int(a.abs())),
NumRef::Float(a) => Ok(Num::Float(a.0.abs())),
}
}
}

0 comments on commit 0701d2f

Please sign in to comment.