Thread overview
a linking error very hard to understand and solve...
Nov 02, 2017
user1234
Nov 02, 2017
Biotronic
Nov 02, 2017
Ali Çehreli
Nov 02, 2017
Joakim
Nov 02, 2017
bauss
November 02, 2017
Dear colleagues,
I cannot solve this compilation issue; the message is ambiguous, in this sense that one of the proposed sulution (line 81) is apparently the one exposed as problematic...

Any help much appreciated...
best,
Jean-Yves (and thanks to all contributors)

src\stores.d(178): Error: none of the overloads of 'spawnFiber' are callable using argument types (void delegate(LRMSFiber f), string, uint, string), candidates are:
src\fiberManager.d(77):        fiberManager.FiberManager.spawnFiber(void delegate(LRMSFiber) op)
src\fiberManager.d(81):        fiberManager.FiberManager.spawnFiber(void delegate(LRMSFiber) op, string name)
src\fiberManager.d(85):        fiberManager.FiberManager.spawnFiber(void delegate(LRMSFiber) op, string name, uint maxMsg)
src\fiberManager.d(89):        fiberManager.FiberManager.spawnFiber(void delegate(LRMSFiber) op, string name, uint maxMsg, string ioch)

--- errorlevel 1
November 02, 2017
On Thursday, 2 November 2017 at 11:13:34 UTC, Jean-Yves Vion-Dury wrote:
>
> Dear colleagues,
> I cannot solve this compilation issue; the message is ambiguous, in this sense that one of the proposed sulution (line 81) is apparently the one exposed as problematic...

I suppose you meant 89 ?

>
> Any help much appreciated...
> best,
> Jean-Yves (and thanks to all contributors)
>
> src\stores.d(178): Error: none of the overloads of 'spawnFiber' are callable using argument types (void delegate(LRMSFiber f), string, uint, string), candidates are:
> [...]
> src\fiberManager.d(89):        fiberManager.FiberManager.spawnFiber(void delegate(LRMSFiber) op, string name, uint maxMsg, string ioch)
>
> --- errorlevel 1


November 02, 2017
On Thursday, 2 November 2017 at 11:13:34 UTC, Jean-Yves Vion-Dury wrote:
> src\stores.d(178): Error: none of the overloads of 'spawnFiber' are callable using argument types (void delegate(LRMSFiber f), string, uint, string), candidates are:
> src\fiberManager.d(77):        fiberManager.FiberManager.spawnFiber(void delegate(LRMSFiber) op)
> src\fiberManager.d(81):        fiberManager.FiberManager.spawnFiber(void delegate(LRMSFiber) op, string name)
> src\fiberManager.d(85):        fiberManager.FiberManager.spawnFiber(void delegate(LRMSFiber) op, string name, uint maxMsg)
> src\fiberManager.d(89):        fiberManager.FiberManager.spawnFiber(void delegate(LRMSFiber) op, string name, uint maxMsg, string ioch)

Is LRMSFiber the same type in all these cases? That is, do you have a type called LRMSFiber in more than one file?

--
  Biotronic


November 02, 2017
On Thursday, 2 November 2017 at 11:50:58 UTC, user1234 wrote:
> On Thursday, 2 November 2017 at 11:13:34 UTC, Jean-Yves Vion-Dury wrote:
>>
>> Dear colleagues,
>> I cannot solve this compilation issue; the message is ambiguous, in this sense that one of the proposed sulution (line 81) is apparently the one exposed as problematic...
>
> I suppose you meant 89 ?
>
yes, indeed sorry
>>
>> Any help much appreciated...
>> best,
>> Jean-Yves (and thanks to all contributors)
>>
>> src\stores.d(178): Error: none of the overloads of 'spawnFiber' are callable using argument types (void delegate(LRMSFiber f), string, uint, string), candidates are:
>> [...]
>> src\fiberManager.d(89):        fiberManager.FiberManager.spawnFiber(void delegate(LRMSFiber) op, string name, uint maxMsg, string ioch)
>>
>> --- errorlevel 1


November 02, 2017
On Thursday, 2 November 2017 at 11:54:51 UTC, Biotronic wrote:

>
> Is LRMSFiber the same type in all these cases? That is, do you have a type called LRMSFiber in more than one file?
>

Yes, it appears first in an interface (inside a module/file) definition and second in a class definition (inside another module/file)... does it matter ?


> --
>   Biotronic


November 02, 2017
On Thursday, 2 November 2017 at 11:13:34 UTC, Jean-Yves Vion-Dury wrote:
>
> Dear colleagues,
> I cannot solve this compilation issue; the message is ambiguous, in this sense that one of the proposed sulution (line 81) is apparently the one exposed as problematic...
>
> Any help much appreciated...
> best,
> Jean-Yves (and thanks to all contributors)
>
> src\stores.d(178): Error: none of the overloads of 'spawnFiber' are callable using argument types (void delegate(LRMSFiber f), string, uint, string), candidates are:
> src\fiberManager.d(77):        fiberManager.FiberManager.spawnFiber(void delegate(LRMSFiber) op)
> src\fiberManager.d(81):        fiberManager.FiberManager.spawnFiber(void delegate(LRMSFiber) op, string name)
> src\fiberManager.d(85):        fiberManager.FiberManager.spawnFiber(void delegate(LRMSFiber) op, string name, uint maxMsg)
> src\fiberManager.d(89):        fiberManager.FiberManager.spawnFiber(void delegate(LRMSFiber) op, string name, uint maxMsg, string ioch)
>
> --- errorlevel 1

This is not a linking error, it is a D compiler error message.

Is it possible you have a template constraint on the function at line 89 that's causing it not to match?  I've seen a similar problem lately with std.conv.to on AArch64 that I need to dig into.
November 02, 2017
On Thursday, 2 November 2017 at 11:13:34 UTC, Jean-Yves Vion-Dury wrote:
>
> Dear colleagues,
> I cannot solve this compilation issue; the message is ambiguous, in this sense that one of the proposed sulution (line 81) is apparently the one exposed as problematic...
>
> Any help much appreciated...
> best,
> Jean-Yves (and thanks to all contributors)
>
> src\stores.d(178): Error: none of the overloads of 'spawnFiber' are callable using argument types (void delegate(LRMSFiber f), string, uint, string), candidates are:
> src\fiberManager.d(77):        fiberManager.FiberManager.spawnFiber(void delegate(LRMSFiber) op)
> src\fiberManager.d(81):        fiberManager.FiberManager.spawnFiber(void delegate(LRMSFiber) op, string name)
> src\fiberManager.d(85):        fiberManager.FiberManager.spawnFiber(void delegate(LRMSFiber) op, string name, uint maxMsg)
> src\fiberManager.d(89):        fiberManager.FiberManager.spawnFiber(void delegate(LRMSFiber) op, string name, uint maxMsg, string ioch)
>
> --- errorlevel 1

Please post the full function definition of  "fiberManager.FiberManager.spawnFiber(void delegate(LRMSFiber) op, string name, uint maxMsg, string ioch)" as well the call-side.
November 02, 2017
On 11/02/2017 05:54 AM, Jean-Yves Vion-Dury wrote:
> On Thursday, 2 November 2017 at 11:54:51 UTC, Biotronic wrote:
> 
>>
>> Is LRMSFiber the same type in all these cases? That is, do you have a type called LRMSFiber in more than one file?
>>
> 
> Yes, it appears first in an interface (inside a module/file) definition and second in a class definition (inside another module/file)... does it matter ?

From the point of view of the type system, it's a coincidence that they have the same name but they are different types.

Ali