Disable string type in type checker

This commit is contained in:
d0cd 2022-10-31 15:06:56 -07:00
parent 3c2da076ff
commit 43919a9644
3 changed files with 15 additions and 1 deletions

View File

@ -601,7 +601,10 @@ impl<'a> ExpressionVisitor<'a> for TypeChecker<'a> {
},
Literal::Group(_) => self.assert_and_return_type(Type::Group, expected, input.span()),
Literal::Scalar(_, _) => self.assert_and_return_type(Type::Scalar, expected, input.span()),
Literal::String(_, _) => self.assert_and_return_type(Type::String, expected, input.span()),
Literal::String(_, _) => {
self.emit_err(TypeCheckerError::strings_are_not_supported(input.span()));
self.assert_and_return_type(Type::String, expected, input.span())
}
})
}

View File

@ -387,6 +387,10 @@ impl<'a> TypeChecker<'a> {
/// Emits an error if the type is not valid.
pub(crate) fn assert_type_is_valid(&self, span: Span, type_: &Type) {
match type_ {
// String types are temporarily disabled.
Type::String => {
self.emit_err(TypeCheckerError::strings_are_not_supported(span));
}
// Check that the named composite type has been defined.
Type::Identifier(identifier) if self.symbol_table.borrow().lookup_struct(identifier.name).is_none() => {
self.emit_err(TypeCheckerError::undefined_type(identifier.name, span));

View File

@ -430,4 +430,11 @@ create_messages!(
msg: format!("Loop bound must be a literal."),
help: None,
}
@formatted
strings_are_not_supported {
args: (),
msg: format!("Strings are not yet supported."),
help: None,
}
);