floats iter 1.2: register Float as a primitive type name
This commit is contained in:
@@ -14,7 +14,7 @@
|
|||||||
/// typecheck-time well-formedness gating, the heap-type filter,
|
/// typecheck-time well-formedness gating, the heap-type filter,
|
||||||
/// the local-type qualifier, and the codegen substitution path.
|
/// the local-type qualifier, and the codegen substitution path.
|
||||||
pub fn is_primitive_name(name: &str) -> bool {
|
pub fn is_primitive_name(name: &str) -> bool {
|
||||||
matches!(name, "Int" | "Bool" | "Str" | "Unit")
|
matches!(name, "Int" | "Bool" | "Str" | "Unit" | "Float")
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the static-lifetime surface name iff `name` is a
|
/// Returns the static-lifetime surface name iff `name` is a
|
||||||
@@ -27,6 +27,7 @@ pub fn primitive_surface_name(name: &str) -> Option<&'static str> {
|
|||||||
"Bool" => Some("Bool"),
|
"Bool" => Some("Bool"),
|
||||||
"Str" => Some("Str"),
|
"Str" => Some("Str"),
|
||||||
"Unit" => Some("Unit"),
|
"Unit" => Some("Unit"),
|
||||||
|
"Float" => Some("Float"),
|
||||||
_ => None,
|
_ => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -41,12 +42,19 @@ mod tests {
|
|||||||
/// inside both functions plus a sample non-primitive.
|
/// inside both functions plus a sample non-primitive.
|
||||||
#[test]
|
#[test]
|
||||||
fn predicate_and_surface_name_agree() {
|
fn predicate_and_surface_name_agree() {
|
||||||
for name in ["Int", "Bool", "Str", "Unit", "List", "Foo", "", "int"] {
|
for name in ["Int", "Bool", "Str", "Unit", "Float", "List", "Foo", "", "int"] {
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
is_primitive_name(name),
|
is_primitive_name(name),
|
||||||
primitive_surface_name(name).is_some(),
|
primitive_surface_name(name).is_some(),
|
||||||
"lockstep violation for {name:?}"
|
"lockstep violation for {name:?}"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
// Float is a primitive (Floats milestone, iter 1).
|
||||||
|
assert!(is_primitive_name("Float"), "Float must be a primitive");
|
||||||
|
assert_eq!(
|
||||||
|
primitive_surface_name("Float"),
|
||||||
|
Some("Float"),
|
||||||
|
"Float surface name must be \"Float\""
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user