diff --git a/lib/typeprof/core/ast.rb b/lib/typeprof/core/ast.rb index 8420c3881..f13e34b6b 100644 --- a/lib/typeprof/core/ast.rb +++ b/lib/typeprof/core/ast.rb @@ -396,6 +396,7 @@ def self.create_pattern_node(raw_node, lenv) when :array_node then ArrayNode.new(raw_node, lenv) # for %w[foo bar] when :range_node then RangeNode.new(raw_node, lenv) # TODO: support range pattern correctly + when :lambda_node then LambdaNode.new(raw_node, lenv) # TODO: match by `===` instead of ignoring the subject else raise "unknown pattern node type: #{ raw_node.type }" diff --git a/scenario/patterns/lambda_pat.rb b/scenario/patterns/lambda_pat.rb new file mode 100644 index 000000000..dba64ca74 --- /dev/null +++ b/scenario/patterns/lambda_pat.rb @@ -0,0 +1,16 @@ +## update: test.rb +def check(x) + case x + in ->(i) { i == 0 } + :zero + in Integer + :int + end +end + +check(0) + +## assert +class Object + def check: (Integer) -> (:int | :zero) +end