@@ -34,6 +34,7 @@ type BoolValue values.BoolValue
3434var _ Value = BoolValue (false )
3535var _ EquatableValue = BoolValue (false )
3636var _ HashableValue = BoolValue (false )
37+ var _ MemberAccessibleValue = BoolValue (false )
3738
3839const TrueValue = BoolValue (true )
3940const FalseValue = BoolValue (false )
@@ -191,3 +192,55 @@ func (v BoolValue) Clone(_ ValueCloneContext) Value {
191192func (BoolValue ) DeepRemove (_ ValueRemoveContext , _ bool ) {
192193 // NO-OP
193194}
195+
196+ func (v BoolValue ) GetMember (context MemberAccessibleContext , name string , memberKind common.DeclarationKind ) Value {
197+ return GetMember (
198+ context ,
199+ v ,
200+ name ,
201+ memberKind ,
202+ nil ,
203+ )
204+ }
205+
206+ func (v BoolValue ) GetMethod (context MemberAccessibleContext , name string ) FunctionValue {
207+ switch name {
208+ case sema .ToStringFunctionName :
209+ return NewBoundHostFunctionValue (
210+ context ,
211+ v ,
212+ sema .ToStringFunctionType ,
213+ NativeBoolValueToStringFunction ,
214+ )
215+ }
216+
217+ return nil
218+ }
219+
220+ var TrueStringValue = NewUnmeteredStringValue ("true" )
221+ var FalseStringValue = NewUnmeteredStringValue ("false" )
222+
223+ var NativeBoolValueToStringFunction = NativeFunction (
224+ func (
225+ context NativeFunctionContext ,
226+ _ TypeArgumentsIterator ,
227+ _ ArgumentTypesIterator ,
228+ receiver Value ,
229+ _ []Value ,
230+ ) Value {
231+ if AssertValueOfType [BoolValue ](receiver ) {
232+ return TrueStringValue
233+ }
234+ return FalseStringValue
235+ },
236+ )
237+
238+ func (BoolValue ) RemoveMember (_ ValueTransferContext , _ string ) Value {
239+ // Bool has no removable members (fields / functions)
240+ panic (errors .NewUnreachableError ())
241+ }
242+
243+ func (BoolValue ) SetMember (_ ValueTransferContext , _ string , _ Value ) bool {
244+ // Bool has no settable members (fields / functions)
245+ panic (errors .NewUnreachableError ())
246+ }
0 commit comments