forked from M-Labs/nac3
core/toplevel: fix PrimDef method names
This commit is contained in:
parent
339b74161b
commit
8adfe781c5
|
@ -346,8 +346,8 @@ impl<'a> BuiltinBuilder<'a> {
|
||||||
let (is_some_ty, unwrap_ty, option_tvar) =
|
let (is_some_ty, unwrap_ty, option_tvar) =
|
||||||
if let TypeEnum::TObj { fields, params, .. } = unifier.get_ty(option).as_ref() {
|
if let TypeEnum::TObj { fields, params, .. } = unifier.get_ty(option).as_ref() {
|
||||||
(
|
(
|
||||||
*fields.get(&PrimDef::OptionIsSome.simple_name().into()).unwrap(),
|
*fields.get(&PrimDef::FunOptionIsSome.simple_name().into()).unwrap(),
|
||||||
*fields.get(&PrimDef::OptionUnwrap.simple_name().into()).unwrap(),
|
*fields.get(&PrimDef::FunOptionUnwrap.simple_name().into()).unwrap(),
|
||||||
iter_type_vars(params).next().unwrap(),
|
iter_type_vars(params).next().unwrap(),
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
|
@ -362,9 +362,9 @@ impl<'a> BuiltinBuilder<'a> {
|
||||||
let ndarray_dtype_tvar = iter_type_vars(ndarray_params).next().unwrap();
|
let ndarray_dtype_tvar = iter_type_vars(ndarray_params).next().unwrap();
|
||||||
let ndarray_ndims_tvar = iter_type_vars(ndarray_params).nth(1).unwrap();
|
let ndarray_ndims_tvar = iter_type_vars(ndarray_params).nth(1).unwrap();
|
||||||
let ndarray_copy_ty =
|
let ndarray_copy_ty =
|
||||||
*ndarray_fields.get(&PrimDef::NDArrayCopy.simple_name().into()).unwrap();
|
*ndarray_fields.get(&PrimDef::FunNDArrayCopy.simple_name().into()).unwrap();
|
||||||
let ndarray_fill_ty =
|
let ndarray_fill_ty =
|
||||||
*ndarray_fields.get(&PrimDef::NDArrayFill.simple_name().into()).unwrap();
|
*ndarray_fields.get(&PrimDef::FunNDArrayFill.simple_name().into()).unwrap();
|
||||||
|
|
||||||
let num_ty = unifier.get_fresh_var_with_range(
|
let num_ty = unifier.get_fresh_var_with_range(
|
||||||
&[int32, int64, float, boolean, uint32, uint64],
|
&[int32, int64, float, boolean, uint32, uint64],
|
||||||
|
@ -464,14 +464,14 @@ impl<'a> BuiltinBuilder<'a> {
|
||||||
PrimDef::Exception => self.build_exception_class_related(prim),
|
PrimDef::Exception => self.build_exception_class_related(prim),
|
||||||
|
|
||||||
PrimDef::Option
|
PrimDef::Option
|
||||||
| PrimDef::OptionIsSome
|
| PrimDef::FunOptionIsSome
|
||||||
| PrimDef::OptionIsNone
|
| PrimDef::FunOptionIsNone
|
||||||
| PrimDef::OptionUnwrap
|
| PrimDef::FunOptionUnwrap
|
||||||
| PrimDef::FunSome => self.build_option_class_related(prim),
|
| PrimDef::FunSome => self.build_option_class_related(prim),
|
||||||
|
|
||||||
PrimDef::List => self.build_list_class_related(prim),
|
PrimDef::List => self.build_list_class_related(prim),
|
||||||
|
|
||||||
PrimDef::NDArray | PrimDef::NDArrayCopy | PrimDef::NDArrayFill => {
|
PrimDef::NDArray | PrimDef::FunNDArrayCopy | PrimDef::FunNDArrayFill => {
|
||||||
self.build_ndarray_class_related(prim)
|
self.build_ndarray_class_related(prim)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -794,9 +794,9 @@ impl<'a> BuiltinBuilder<'a> {
|
||||||
prim,
|
prim,
|
||||||
&[
|
&[
|
||||||
PrimDef::Option,
|
PrimDef::Option,
|
||||||
PrimDef::OptionIsSome,
|
PrimDef::FunOptionIsSome,
|
||||||
PrimDef::OptionIsNone,
|
PrimDef::FunOptionIsNone,
|
||||||
PrimDef::OptionUnwrap,
|
PrimDef::FunOptionUnwrap,
|
||||||
PrimDef::FunSome,
|
PrimDef::FunSome,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
@ -809,9 +809,9 @@ impl<'a> BuiltinBuilder<'a> {
|
||||||
fields: Vec::default(),
|
fields: Vec::default(),
|
||||||
attributes: Vec::default(),
|
attributes: Vec::default(),
|
||||||
methods: vec![
|
methods: vec![
|
||||||
Self::create_method(PrimDef::OptionIsSome, self.is_some_ty.0),
|
Self::create_method(PrimDef::FunOptionIsSome, self.is_some_ty.0),
|
||||||
Self::create_method(PrimDef::OptionIsNone, self.is_some_ty.0),
|
Self::create_method(PrimDef::FunOptionIsNone, self.is_some_ty.0),
|
||||||
Self::create_method(PrimDef::OptionUnwrap, self.unwrap_ty.0),
|
Self::create_method(PrimDef::FunOptionUnwrap, self.unwrap_ty.0),
|
||||||
],
|
],
|
||||||
ancestors: vec![TypeAnnotation::CustomClass {
|
ancestors: vec![TypeAnnotation::CustomClass {
|
||||||
id: prim.id(),
|
id: prim.id(),
|
||||||
|
@ -822,7 +822,7 @@ impl<'a> BuiltinBuilder<'a> {
|
||||||
loc: None,
|
loc: None,
|
||||||
},
|
},
|
||||||
|
|
||||||
PrimDef::OptionUnwrap => TopLevelDef::Function {
|
PrimDef::FunOptionUnwrap => TopLevelDef::Function {
|
||||||
name: prim.name().into(),
|
name: prim.name().into(),
|
||||||
simple_name: prim.simple_name().into(),
|
simple_name: prim.simple_name().into(),
|
||||||
signature: self.unwrap_ty.0,
|
signature: self.unwrap_ty.0,
|
||||||
|
@ -836,7 +836,7 @@ impl<'a> BuiltinBuilder<'a> {
|
||||||
loc: None,
|
loc: None,
|
||||||
},
|
},
|
||||||
|
|
||||||
PrimDef::OptionIsNone | PrimDef::OptionIsSome => TopLevelDef::Function {
|
PrimDef::FunOptionIsNone | PrimDef::FunOptionIsSome => TopLevelDef::Function {
|
||||||
name: prim.name().to_string(),
|
name: prim.name().to_string(),
|
||||||
simple_name: prim.simple_name().into(),
|
simple_name: prim.simple_name().into(),
|
||||||
signature: self.is_some_ty.0,
|
signature: self.is_some_ty.0,
|
||||||
|
@ -857,10 +857,10 @@ impl<'a> BuiltinBuilder<'a> {
|
||||||
};
|
};
|
||||||
|
|
||||||
let returned_int = match prim {
|
let returned_int = match prim {
|
||||||
PrimDef::OptionIsNone => {
|
PrimDef::FunOptionIsNone => {
|
||||||
ctx.builder.build_is_null(ptr, prim.simple_name())
|
ctx.builder.build_is_null(ptr, prim.simple_name())
|
||||||
}
|
}
|
||||||
PrimDef::OptionIsSome => {
|
PrimDef::FunOptionIsSome => {
|
||||||
ctx.builder.build_is_not_null(ptr, prim.simple_name())
|
ctx.builder.build_is_not_null(ptr, prim.simple_name())
|
||||||
}
|
}
|
||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
|
@ -933,7 +933,7 @@ impl<'a> BuiltinBuilder<'a> {
|
||||||
fn build_ndarray_class_related(&self, prim: PrimDef) -> TopLevelDef {
|
fn build_ndarray_class_related(&self, prim: PrimDef) -> TopLevelDef {
|
||||||
debug_assert_prim_is_allowed(
|
debug_assert_prim_is_allowed(
|
||||||
prim,
|
prim,
|
||||||
&[PrimDef::NDArray, PrimDef::NDArrayCopy, PrimDef::NDArrayFill],
|
&[PrimDef::NDArray, PrimDef::FunNDArrayCopy, PrimDef::FunNDArrayFill],
|
||||||
);
|
);
|
||||||
|
|
||||||
match prim {
|
match prim {
|
||||||
|
@ -944,8 +944,8 @@ impl<'a> BuiltinBuilder<'a> {
|
||||||
fields: Vec::default(),
|
fields: Vec::default(),
|
||||||
attributes: Vec::default(),
|
attributes: Vec::default(),
|
||||||
methods: vec![
|
methods: vec![
|
||||||
Self::create_method(PrimDef::NDArrayCopy, self.ndarray_copy_ty.0),
|
Self::create_method(PrimDef::FunNDArrayCopy, self.ndarray_copy_ty.0),
|
||||||
Self::create_method(PrimDef::NDArrayFill, self.ndarray_fill_ty.0),
|
Self::create_method(PrimDef::FunNDArrayFill, self.ndarray_fill_ty.0),
|
||||||
],
|
],
|
||||||
ancestors: Vec::default(),
|
ancestors: Vec::default(),
|
||||||
constructor: None,
|
constructor: None,
|
||||||
|
@ -953,7 +953,7 @@ impl<'a> BuiltinBuilder<'a> {
|
||||||
loc: None,
|
loc: None,
|
||||||
},
|
},
|
||||||
|
|
||||||
PrimDef::NDArrayCopy => TopLevelDef::Function {
|
PrimDef::FunNDArrayCopy => TopLevelDef::Function {
|
||||||
name: prim.name().into(),
|
name: prim.name().into(),
|
||||||
simple_name: prim.simple_name().into(),
|
simple_name: prim.simple_name().into(),
|
||||||
signature: self.ndarray_copy_ty.0,
|
signature: self.ndarray_copy_ty.0,
|
||||||
|
@ -970,7 +970,7 @@ impl<'a> BuiltinBuilder<'a> {
|
||||||
loc: None,
|
loc: None,
|
||||||
},
|
},
|
||||||
|
|
||||||
PrimDef::NDArrayFill => TopLevelDef::Function {
|
PrimDef::FunNDArrayFill => TopLevelDef::Function {
|
||||||
name: prim.name().into(),
|
name: prim.name().into(),
|
||||||
simple_name: prim.simple_name().into(),
|
simple_name: prim.simple_name().into(),
|
||||||
signature: self.ndarray_fill_ty.0,
|
signature: self.ndarray_fill_ty.0,
|
||||||
|
|
|
@ -28,16 +28,16 @@ pub enum PrimDef {
|
||||||
NDArray,
|
NDArray,
|
||||||
|
|
||||||
// Option methods
|
// Option methods
|
||||||
OptionIsSome,
|
FunOptionIsSome,
|
||||||
OptionIsNone,
|
FunOptionIsNone,
|
||||||
OptionUnwrap,
|
FunOptionUnwrap,
|
||||||
|
|
||||||
// Option-related functions
|
// Option-related functions
|
||||||
FunSome,
|
FunSome,
|
||||||
|
|
||||||
// NDArray methods
|
// NDArray methods
|
||||||
NDArrayCopy,
|
FunNDArrayCopy,
|
||||||
NDArrayFill,
|
FunNDArrayFill,
|
||||||
|
|
||||||
// Range methods
|
// Range methods
|
||||||
FunRangeInit,
|
FunRangeInit,
|
||||||
|
@ -192,13 +192,13 @@ impl PrimDef {
|
||||||
PrimDef::UInt32 => class("uint32", |primitives| primitives.uint32),
|
PrimDef::UInt32 => class("uint32", |primitives| primitives.uint32),
|
||||||
PrimDef::UInt64 => class("uint64", |primitives| primitives.uint64),
|
PrimDef::UInt64 => class("uint64", |primitives| primitives.uint64),
|
||||||
PrimDef::Option => class("Option", |primitives| primitives.option),
|
PrimDef::Option => class("Option", |primitives| primitives.option),
|
||||||
PrimDef::OptionIsSome => fun("Option.is_some", Some("is_some")),
|
PrimDef::FunOptionIsSome => fun("Option.is_some", Some("is_some")),
|
||||||
PrimDef::OptionIsNone => fun("Option.is_none", Some("is_none")),
|
PrimDef::FunOptionIsNone => fun("Option.is_none", Some("is_none")),
|
||||||
PrimDef::OptionUnwrap => fun("Option.unwrap", Some("unwrap")),
|
PrimDef::FunOptionUnwrap => fun("Option.unwrap", Some("unwrap")),
|
||||||
PrimDef::List => class("list", |primitives| primitives.list),
|
PrimDef::List => class("list", |primitives| primitives.list),
|
||||||
PrimDef::NDArray => class("ndarray", |primitives| primitives.ndarray),
|
PrimDef::NDArray => class("ndarray", |primitives| primitives.ndarray),
|
||||||
PrimDef::NDArrayCopy => fun("ndarray.copy", Some("copy")),
|
PrimDef::FunNDArrayCopy => fun("ndarray.copy", Some("copy")),
|
||||||
PrimDef::NDArrayFill => fun("ndarray.fill", Some("fill")),
|
PrimDef::FunNDArrayFill => fun("ndarray.fill", Some("fill")),
|
||||||
PrimDef::FunInt32 => fun("int32", None),
|
PrimDef::FunInt32 => fun("int32", None),
|
||||||
PrimDef::FunInt64 => fun("int64", None),
|
PrimDef::FunInt64 => fun("int64", None),
|
||||||
PrimDef::FunUInt32 => fun("uint32", None),
|
PrimDef::FunUInt32 => fun("uint32", None),
|
||||||
|
@ -422,9 +422,9 @@ impl TopLevelComposer {
|
||||||
let option = unifier.add_ty(TypeEnum::TObj {
|
let option = unifier.add_ty(TypeEnum::TObj {
|
||||||
obj_id: PrimDef::Option.id(),
|
obj_id: PrimDef::Option.id(),
|
||||||
fields: vec![
|
fields: vec![
|
||||||
(PrimDef::OptionIsSome.simple_name().into(), (is_some_type_fun_ty, true)),
|
(PrimDef::FunOptionIsSome.simple_name().into(), (is_some_type_fun_ty, true)),
|
||||||
(PrimDef::OptionIsNone.simple_name().into(), (is_some_type_fun_ty, true)),
|
(PrimDef::FunOptionIsNone.simple_name().into(), (is_some_type_fun_ty, true)),
|
||||||
(PrimDef::OptionUnwrap.simple_name().into(), (unwrap_fun_ty, true)),
|
(PrimDef::FunOptionUnwrap.simple_name().into(), (unwrap_fun_ty, true)),
|
||||||
]
|
]
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.collect::<HashMap<_, _>>(),
|
.collect::<HashMap<_, _>>(),
|
||||||
|
@ -465,8 +465,8 @@ impl TopLevelComposer {
|
||||||
let ndarray = unifier.add_ty(TypeEnum::TObj {
|
let ndarray = unifier.add_ty(TypeEnum::TObj {
|
||||||
obj_id: PrimDef::NDArray.id(),
|
obj_id: PrimDef::NDArray.id(),
|
||||||
fields: Mapping::from([
|
fields: Mapping::from([
|
||||||
(PrimDef::NDArrayCopy.simple_name().into(), (ndarray_copy_fun_ty, true)),
|
(PrimDef::FunNDArrayCopy.simple_name().into(), (ndarray_copy_fun_ty, true)),
|
||||||
(PrimDef::NDArrayFill.simple_name().into(), (ndarray_fill_fun_ty, true)),
|
(PrimDef::FunNDArrayFill.simple_name().into(), (ndarray_fill_fun_ty, true)),
|
||||||
]),
|
]),
|
||||||
params: into_var_map([ndarray_dtype_tvar, ndarray_ndims_tvar]),
|
params: into_var_map([ndarray_dtype_tvar, ndarray_ndims_tvar]),
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue