Add type argument test
This commit is contained in:
parent
e1002b21d9
commit
200a5d9127
@ -134,8 +134,8 @@ impl AbstractNode for FunctionCall {
|
|||||||
.map(|r#type| r#type.node.clone())
|
.map(|r#type| r#type.node.clone())
|
||||||
.zip(self.type_arguments.into_iter().map(|r#type| r#type.node))
|
.zip(self.type_arguments.into_iter().map(|r#type| r#type.node))
|
||||||
{
|
{
|
||||||
if let Type::Argument(identifier) = type_parameter {
|
if let Type::Argument(identifier, r#type) = type_parameter {
|
||||||
function_context.set_type(identifier, type_argument)?;
|
function_context.set_type(identifier, *r#type)?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -13,7 +13,7 @@ use super::{AbstractNode, Action, WithPosition};
|
|||||||
#[derive(Clone, Debug, Eq, PartialEq, PartialOrd, Ord)]
|
#[derive(Clone, Debug, Eq, PartialEq, PartialOrd, Ord)]
|
||||||
pub enum Type {
|
pub enum Type {
|
||||||
Any,
|
Any,
|
||||||
Argument(Identifier),
|
Argument(Identifier, Box<Type>),
|
||||||
Boolean,
|
Boolean,
|
||||||
Float,
|
Float,
|
||||||
Function {
|
Function {
|
||||||
@ -191,7 +191,7 @@ impl Display for Type {
|
|||||||
write!(f, ") : {}", return_type.node)
|
write!(f, ") : {}", return_type.node)
|
||||||
}
|
}
|
||||||
Type::Structure { name, .. } => write!(f, "{name}"),
|
Type::Structure { name, .. } => write!(f, "{name}"),
|
||||||
Type::Argument(identifier) => write!(f, "{identifier}"),
|
Type::Argument(identifier, _type) => write!(f, "{identifier}"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,19 @@ use dust_lang::{
|
|||||||
*,
|
*,
|
||||||
};
|
};
|
||||||
|
|
||||||
use dust_lang::interpret;
|
#[test]
|
||||||
|
fn function_call_with_type_argument() {
|
||||||
|
assert_eq!(
|
||||||
|
interpret(
|
||||||
|
"test",
|
||||||
|
"
|
||||||
|
foobar = (T)(x : T) T { x }
|
||||||
|
foobar::(int)::(42)
|
||||||
|
",
|
||||||
|
),
|
||||||
|
Ok(Some(Value::integer(42)))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn function_call() {
|
fn function_call() {
|
||||||
|
Loading…
Reference in New Issue
Block a user