From d9ea8df1649f0894a5aed1da7e72cda6ad78ff36 Mon Sep 17 00:00:00 2001 From: Oskar Eichler <62393985+OskarEichler@users.noreply.github.com> Date: Sun, 30 Aug 2026 06:33:17 +0200 Subject: [PATCH] Validate present optional record fields --- lib/rbs/test/type_check.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/rbs/test/type_check.rb b/lib/rbs/test/type_check.rb index 060a751a2f..4b9f6b9fc3 100644 --- a/lib/rbs/test/type_check.rb +++ b/lib/rbs/test/type_check.rb @@ -376,7 +376,10 @@ def value(val, type) type.types.map.with_index {|ty, index| value(val[index], ty) }.all? when Types::Record Test::call(val, IS_AP, ::Hash) && - type.fields.map {|key, type| value(val[key], type) }.all? + type.fields.all? {|key, type| value(val[key], type) } && + type.optional_fields.all? do |key, type| + !val.key?(key) || value(val[key], type) + end when Types::Proc Test::call(val, IS_AP, ::Proc) else