digitalmars.D - import issue (i think)
- Johan Granberg (16/16) Jun 19 2006 Does anyone know what causes the following error?
- Derek Parnell (22/38) Jun 19 2006 Ignore the template messages. They will disappear once the other problem...
- Johan Granberg (3/24) Jun 19 2006 thanks this fixed it.
Does anyone know what causes the following error? gdc -c input.d -o input.o -I../.. ../../sdl/main.d:79: import sdl.main.std conflicts with sige.string.std at ../../sige/string.d:2 ../../sdl/main.d:79: import sdl.main.std conflicts with sige.string.std at ../../sige/string.d:2 input.d:396: template instance cannot resolve forward reference input.d:396: template sige.string.split(T,D) cannot deduce template function from argument types (dchar[]) input.d:396: cannot implicitly convert expression ((split(T,D))((k))) of type int to dchar[][] the code in input.d compiled fine until i tried to move it to it's own file but it was never in the same file as sige/string.d and that module was imported along with sdl.sdl then to. I can show code if you want to but is a bit unsure about what to show so if you are interested tell me which parts is important.
Jun 19 2006
On Mon, 19 Jun 2006 21:52:41 +1000, Johan Granberg <lijat.meREM OVEgmail.com> wrote:Does anyone know what causes the following error? gdc -c input.d -o input.o -I../.. ../../sdl/main.d:79: import sdl.main.std conflicts with sige.string.std at ../../sige/string.d:2 ../../sdl/main.d:79: import sdl.main.std conflicts with sige.string.std at ../../sige/string.d:2 input.d:396: template instance cannot resolve forward reference input.d:396: template sige.string.split(T,D) cannot deduce template function from argument types (dchar[]) input.d:396: cannot implicitly convert expression ((split(T,D))((k))) of type int to dchar[][] the code in input.d compiled fine until i tried to move it to it's own file but it was never in the same file as sige/string.d and that module was imported along with sdl.sdl then to. I can show code if you want to but is a bit unsure about what to show so if you are interested tell me which parts is important.Ignore the template messages. They will disappear once the other problem is fixed. There is no easy way to find the line of code that is causing this problem. The error message is totally useless because it gives a lot of detail which is misleading or not relevant. Anyhow, the problem you have got is that somewhere in your code, probably in 'input.d' you have a qualified reference to a function but haven't explicitly imported that module, but you have imported two other modules (sdl.main.std and sige.string.std) that have imported that module. This can probably happen under a number of circumstances, but one example is ... import foo; import bar; . . . x = abc.def.func(); In this case, the coder has qualified 'func' with 'abc.def.' but has not imported that module, and both foo.d and bar.d have directly or indirectly imported 'abc.<something>'. -- Derek Parnell Melbourne, Australia
Jun 19 2006
Derek Parnell wrote:There is no easy way to find the line of code that is causing this problem. The error message is totally useless because it gives a lot of detail which is misleading or not relevant. Anyhow, the problem you have got is that somewhere in your code, probably in 'input.d' you have a qualified reference to a function but haven't explicitly imported that module, but you have imported two other modules (sdl.main.std and sige.string.std) that have imported that module. This can probably happen under a number of circumstances, but one example is ... import foo; import bar; . . . x = abc.def.func(); In this case, the coder has qualified 'func' with 'abc.def.' but has not imported that module, and both foo.d and bar.d have directly or indirectly imported 'abc.<something>'. --Derek Parnell Melbourne, Australiathanks this fixed it. ps. Walter please fix the import issues.
Jun 19 2006