Skip to content

Commit

Permalink
fix: filter expression return type. (#546)
Browse files Browse the repository at this point in the history
fix: filter expression ret type.
  • Loading branch information
Peefy committed May 12, 2023
1 parent e6f5806 commit 74b1794
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 2 deletions.
4 changes: 2 additions & 2 deletions kclvm/sema/src/resolver/node.rs
Original file line number Diff line number Diff line change
Expand Up @@ -320,15 +320,15 @@ impl<'ctx> MutSelfTypedResultWalker<'ctx> for Resolver<'ctx> {
target_node.unwrap(),
key_name,
val_name,
iter_ty,
iter_ty.clone(),
quant_expr.target.get_pos(),
);
self.expr_or_any_type(&quant_expr.if_cond);
let item_ty = self.expr(&quant_expr.test);
self.leave_scope();
match &quant_expr.op {
ast::QuantOperation::All | ast::QuantOperation::Any => self.bool_ty(),
ast::QuantOperation::Filter => item_ty,
ast::QuantOperation::Filter => iter_ty,
ast::QuantOperation::Map => Rc::new(Type::list(item_ty)),
}
}
Expand Down
25 changes: 25 additions & 0 deletions test/grammar/quant/filter/simple_list_2/main.k
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
schema Student:
name: str
id: int
grade: int

check:
id >= 0
0 <= grade <= 100

students: [Student] = [
{name = "Alice", id = 1, grade = 85}
{name = "Bob", id = 2, grade = 70}
{name = "Charlie", id = 3, grade = 90}
{name = "David", id = 4, grade = 80}
{name = "Eve", id = 5, grade = 95}
]

query_student_where_name = lambda students: [Student], name: str -> Student {
(filter s in students {
s.name == name
})?[0]
}

alice: Student = query_student_where_name(students, name="Alice")
bob: Student = query_student_where_name(students, name="Bob")
24 changes: 24 additions & 0 deletions test/grammar/quant/filter/simple_list_2/stdout.golden
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
students:
- name: Alice
id: 1
grade: 85
- name: Bob
id: 2
grade: 70
- name: Charlie
id: 3
grade: 90
- name: David
id: 4
grade: 80
- name: Eve
id: 5
grade: 95
alice:
name: Alice
id: 1
grade: 85
bob:
name: Bob
id: 2
grade: 70

0 comments on commit 74b1794

Please sign in to comment.