Re: [swift-users] Cannot pass immutable value as inout argument

2018-01-17 Thread Geordie Jay via swift-users
Jordan Rose via swift-users  schrieb am Mi. 17. Jan.
2018 um 01:38:

> Oh no, you're right, I'm sorry. You can only do that with arrays at the
> moment. We do have a bug for this already.
>
> Jordan
>

But couldn’t you call it like this:

lgs_notify_params_t(notify: [lgs_notify_did_enter_background])


For exactly that reason?

- Geordie


>
> On Jan 16, 2018, at 16:37, Roderick Mann  wrote:
>
> Xcode can't properly parse the C header to show me the Swift signature,
> but if I try calling it like this:
>
>let p = lgs_notify_params_t(notify: lgs_notify_did_enter_background)
>lgs_notify(self.ctx, p)
>
> I get this error:
>
> Cannot convert value of type 'lgs_notify_params_t' to expected argument
> type 'UnsafePointer!'
>
>
> On Jan 16, 2018, at 13:22 , Jordan Rose  wrote:
>
> You can do this if you don't write '&', which incorporates the caveat that
> you're not passing a stable address. But please file a bug anyway, because
> the diagnostic should tell you that!
>
> Jordan
>
>
> On Jan 16, 2018, at 13:10, Rick Mann via swift-users <
> swift-users@swift.org> wrote:
>
> Is it not possible for Swift to treat C API const pointers as something
> that can take let arguments?
>
>
> LGS_EXPORT bool lgs_notify(struct lgs_context_t* ctx, const
> lgs_notify_params_t* params);
> .
> .
> .
> let p = lgs_notify_params_t(...)
> lgs_notify(self.ctx, )
>^Cannot pass immutable value as inout argument: 'p' is
> a 'let' constant
>
>
> Why isn't the "const" in the C declaration enough to let Swift know it's
> const and just allow it to be a let?
>
> --
> Rick Mann
> rm...@latencyzero.com
>
>
> ___
> swift-users mailing list
> swift-users@swift.org
> https://lists.swift.org/mailman/listinfo/swift-users
>
>
>
>
> --
> Rick Mann
> rm...@latencyzero.com
>
>
> ___
> swift-users mailing list
> swift-users@swift.org
> https://lists.swift.org/mailman/listinfo/swift-users
>
___
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users


Re: [swift-users] Cannot pass immutable value as inout argument

2018-01-16 Thread Jordan Rose via swift-users
Oh no, you're right, I'm sorry. You can only do that with arrays at the moment. 
We do have a bug for this already.

Jordan


> On Jan 16, 2018, at 16:37, Roderick Mann  wrote:
> 
> Xcode can't properly parse the C header to show me the Swift signature, but 
> if I try calling it like this:
> 
>let p = lgs_notify_params_t(notify: lgs_notify_did_enter_background)
>lgs_notify(self.ctx, p)
> 
> I get this error:
> 
> Cannot convert value of type 'lgs_notify_params_t' to expected argument type 
> 'UnsafePointer!'
> 
> 
>> On Jan 16, 2018, at 13:22 , Jordan Rose  wrote:
>> 
>> You can do this if you don't write '&', which incorporates the caveat that 
>> you're not passing a stable address. But please file a bug anyway, because 
>> the diagnostic should tell you that!
>> 
>> Jordan
>> 
>> 
>>> On Jan 16, 2018, at 13:10, Rick Mann via swift-users 
>>>  wrote:
>>> 
>>> Is it not possible for Swift to treat C API const pointers as something 
>>> that can take let arguments?
>>> 
>>> 
>>> LGS_EXPORT bool lgs_notify(struct lgs_context_t* ctx, const 
>>> lgs_notify_params_t* params);
>>> .
>>> .
>>> .
>>> let p = lgs_notify_params_t(...)
>>> lgs_notify(self.ctx, )
>>>^Cannot pass immutable value as inout argument: 'p' is a 
>>> 'let' constant
>>> 
>>> 
>>> Why isn't the "const" in the C declaration enough to let Swift know it's 
>>> const and just allow it to be a let?
>>> 
>>> -- 
>>> Rick Mann
>>> rm...@latencyzero.com
>>> 
>>> 
>>> ___
>>> swift-users mailing list
>>> swift-users@swift.org
>>> https://lists.swift.org/mailman/listinfo/swift-users
>> 
> 
> 
> -- 
> Rick Mann
> rm...@latencyzero.com 
___
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users


Re: [swift-users] Cannot pass immutable value as inout argument

2018-01-16 Thread Roderick Mann via swift-users
Xcode can't properly parse the C header to show me the Swift signature, but if 
I try calling it like this:

let p = lgs_notify_params_t(notify: lgs_notify_did_enter_background)
lgs_notify(self.ctx, p)

I get this error:

Cannot convert value of type 'lgs_notify_params_t' to expected argument type 
'UnsafePointer!'


> On Jan 16, 2018, at 13:22 , Jordan Rose  wrote:
> 
> You can do this if you don't write '&', which incorporates the caveat that 
> you're not passing a stable address. But please file a bug anyway, because 
> the diagnostic should tell you that!
> 
> Jordan
> 
> 
>> On Jan 16, 2018, at 13:10, Rick Mann via swift-users  
>> wrote:
>> 
>> Is it not possible for Swift to treat C API const pointers as something that 
>> can take let arguments?
>> 
>> 
>> LGS_EXPORT bool lgs_notify(struct lgs_context_t* ctx, const 
>> lgs_notify_params_t* params);
>> .
>> .
>> .
>> let p = lgs_notify_params_t(...)
>> lgs_notify(self.ctx, )
>> ^Cannot pass immutable value as inout argument: 'p' is a 
>> 'let' constant
>> 
>> 
>> Why isn't the "const" in the C declaration enough to let Swift know it's 
>> const and just allow it to be a let?
>> 
>> -- 
>> Rick Mann
>> rm...@latencyzero.com
>> 
>> 
>> ___
>> swift-users mailing list
>> swift-users@swift.org
>> https://lists.swift.org/mailman/listinfo/swift-users
> 


-- 
Rick Mann
rm...@latencyzero.com


___
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users


Re: [swift-users] Cannot pass immutable value as inout argument

2018-01-16 Thread Jordan Rose via swift-users
You can do this if you don't write '&', which incorporates the caveat that 
you're not passing a stable address. But please file a bug anyway, because the 
diagnostic should tell you that!

Jordan


> On Jan 16, 2018, at 13:10, Rick Mann via swift-users  
> wrote:
> 
> Is it not possible for Swift to treat C API const pointers as something that 
> can take let arguments?
> 
> 
> LGS_EXPORT bool lgs_notify(struct lgs_context_t* ctx, const 
> lgs_notify_params_t* params);
> .
> .
> .
> let p = lgs_notify_params_t(...)
> lgs_notify(self.ctx, )
> ^Cannot pass immutable value as inout argument: 'p' is a 
> 'let' constant
> 
> 
> Why isn't the "const" in the C declaration enough to let Swift know it's 
> const and just allow it to be a let?
> 
> -- 
> Rick Mann
> rm...@latencyzero.com
> 
> 
> ___
> swift-users mailing list
> swift-users@swift.org
> https://lists.swift.org/mailman/listinfo/swift-users

___
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users


[swift-users] Cannot pass immutable value as inout argument

2018-01-16 Thread Rick Mann via swift-users
Is it not possible for Swift to treat C API const pointers as something that 
can take let arguments?


LGS_EXPORT bool lgs_notify(struct lgs_context_t* ctx, const 
lgs_notify_params_t* params);
.
.
.
let p = lgs_notify_params_t(...)
lgs_notify(self.ctx, )
 ^Cannot pass immutable value as inout argument: 'p' is a 
'let' constant


Why isn't the "const" in the C declaration enough to let Swift know it's const 
and just allow it to be a let?

-- 
Rick Mann
rm...@latencyzero.com


___
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users