# typed: strict module DataModel class Builtin::Boolean < Type include Errors class Arguments < T::Struct prop :optional, T::Boolean, default: false end sig { override.params(val: Object, coerce: T::Boolean).returns(TTypeResult) } def read(val, coerce: false) err = Error.new if val.nil? err.add(missing_error(DataModel::Boolean)) return [val, err] end if coerce case val when "true" val = true when "false" val = false end end if !val.is_a?(TrueClass) && !val.is_a?(FalseClass) err.add(type_error(Boolean, val)) return [val, err] end return [val, err] end end end