Thread overview | |||||||||
---|---|---|---|---|---|---|---|---|---|
|
January 24, 2017 alias and UFCS | ||||
---|---|---|---|---|
| ||||
This code: T tFunc(alias F, T)(T n) { n.F; return n; } Produces this error: Error: no property 'F' for type 'int[]' (or whatever type I use). The alias rules for functions seem to be incompatible with UFCS, F(n) works fine. What are the rewrite steps here? Is this necessary or an oversight? Not very uniform function call syntax. |
January 24, 2017 Re: alias and UFCS | ||||
---|---|---|---|---|
| ||||
Posted in reply to ixid | On Tuesday, 24 January 2017 at 13:11:41 UTC, ixid wrote:
> This code:
>
> T tFunc(alias F, T)(T n) {
> n.F;
> return n;
> }
>
> Produces this error:
>
> Error: no property 'F' for type 'int[]' (or whatever type I use).
>
> The alias rules for functions seem to be incompatible with UFCS, F(n) works fine. What are the rewrite steps here? Is this necessary or an oversight? Not very uniform function call syntax.
Submit a bug report then.
|
January 24, 2017 Re: alias and UFCS | ||||
---|---|---|---|---|
| ||||
Posted in reply to ixid | On Tuesday, 24 January 2017 at 13:11:41 UTC, ixid wrote:
> This code:
>
> T tFunc(alias F, T)(T n) {
> n.F;
> return n;
> }
>
> Produces this error:
>
> Error: no property 'F' for type 'int[]' (or whatever type I use).
I believe UFCS is supposed to only work with top-level functions. I don't remember the rationale behind the decision.
|
January 24, 2017 Re: alias and UFCS | ||||
---|---|---|---|---|
| ||||
Posted in reply to Las | On Tuesday, 24 January 2017 at 15:57:48 UTC, Las wrote:
> On Tuesday, 24 January 2017 at 13:11:41 UTC, ixid wrote:
>> This code:
>>
>> T tFunc(alias F, T)(T n) {
>> n.F;
>> return n;
>> }
>>
>> Produces this error:
>>
>> Error: no property 'F' for type 'int[]' (or whatever type I use).
>>
>> The alias rules for functions seem to be incompatible with UFCS, F(n) works fine. What are the rewrite steps here? Is this necessary or an oversight? Not very uniform function call syntax.
>
> Submit a bug report then.
I will if it turns out the behaviour is wrong, that's what I'm checking at this stage. =)
|
January 24, 2017 Re: alias and UFCS | ||||
---|---|---|---|---|
| ||||
Posted in reply to ixid | On Tuesday, 24 January 2017 at 16:27:50 UTC, ixid wrote:
> On Tuesday, 24 January 2017 at 15:57:48 UTC, Las wrote:
>> On Tuesday, 24 January 2017 at 13:11:41 UTC, ixid wrote:
>>> This code:
>>>
>>> T tFunc(alias F, T)(T n) {
>>> n.F;
>>> return n;
>>> }
>>>
>>> Produces this error:
>>>
>>> Error: no property 'F' for type 'int[]' (or whatever type I use).
>>>
>>> The alias rules for functions seem to be incompatible with UFCS, F(n) works fine. What are the rewrite steps here? Is this necessary or an oversight? Not very uniform function call syntax.
>>
>> Submit a bug report then.
>
> I will if it turns out the behaviour is wrong, that's what I'm checking at this stage. =)
Apologies for the extra post - does the alias function count as declared in the same scope as the content of the function? That would be plausible as UFCS refuses to work on functions declared in the same scope. Is this something that could be changed?
|
January 24, 2017 Re: alias and UFCS | ||||
---|---|---|---|---|
| ||||
Posted in reply to ixid | On Tuesday, 24 January 2017 at 16:41:12 UTC, ixid wrote:
> On Tuesday, 24 January 2017 at 16:27:50 UTC, ixid wrote:
>> On Tuesday, 24 January 2017 at 15:57:48 UTC, Las wrote:
>>> On Tuesday, 24 January 2017 at 13:11:41 UTC, ixid wrote:
>>>> [...]
>>>
>>> Submit a bug report then.
>>
>> I will if it turns out the behaviour is wrong, that's what I'm checking at this stage. =)
>
> Apologies for the extra post - does the alias function count as declared in the same scope as the content of the function? That would be plausible as UFCS refuses to work on functions declared in the same scope. Is this something that could be changed?
UFCS is only applied if the function if defined at module scope.
This to to prevent the meaning of a ufcs function from changing.
|
January 24, 2017 Re: alias and UFCS | ||||
---|---|---|---|---|
| ||||
Posted in reply to Stefan Koch | On Tuesday, 24 January 2017 at 20:51:49 UTC, Stefan Koch wrote:
> On Tuesday, 24 January 2017 at 16:41:12 UTC, ixid wrote:
>> On Tuesday, 24 January 2017 at 16:27:50 UTC, ixid wrote:
>>> On Tuesday, 24 January 2017 at 15:57:48 UTC, Las wrote:
>>>> On Tuesday, 24 January 2017 at 13:11:41 UTC, ixid wrote:
>>>>> [...]
>>>>
>>>> Submit a bug report then.
>>>
>>> I will if it turns out the behaviour is wrong, that's what I'm checking at this stage. =)
>>
>> Apologies for the extra post - does the alias function count as declared in the same scope as the content of the function? That would be plausible as UFCS refuses to work on functions declared in the same scope. Is this something that could be changed?
>
> UFCS is only applied if the function if defined at module scope.
>
> This to to prevent the meaning of a ufcs function from changing.
Does alias of an existing function count as a new function definition in that case?
|
Copyright © 1999-2021 by the D Language Foundation