[phobos] improved module cycle detection algorithm finds existing cycle in phobos, what to do?
Steve Schveighoffer
schveiguy at yahoo.com
Mon Nov 8 06:42:28 PST 2010
Here is the new format, see if you like it:
Cyclic dependency in module std.encoding
imported from (std.string)
imported from (std.dateparse)
imported from (std.date)
imported from (std.file)
imported from (std.stdio)
imported from (std.functional)
imported from (std.range)
imported from (std.exception)
imported from (std.conv)
imported from (std.array)
imported from (std.algorithm)
imported from std.random containing module ctor/dtor
imported from (std.range)
imported from (std.exception)
imported from (std.conv)
imported from (std.array)
imported from (std.algorithm)
imported from (std.string)
imported from std.encoding containing module ctor/dtor
Cycle detected between modules with ctors/dtors:
std.encoding -> std.random -> std.encoding
object.Exception: Aborting!
-Steve
----- Original Message ----
> From: Steve Schveighoffer <schveiguy at yahoo.com>
>
> ----- Original Message ----
>
> > From: Andrei Alexandrescu <andrei at erdani.com>
> >
> > On 11/5/10 11:21 AM, Steve Schveighoffer wrote:
> > > I think the cycle as I print it is pretty clear. What do you find
>unclear
>
> >about
> > > it?
> >
> > Well I didn't look into this closely but essentially there was this list:
> >
> > Cyclic dependency in module std.encoding
> > imported from std.string
> > imported from std.dateparse
> > imported from std.date
> > imported from std.file
> > imported from std.stdio
> > imported from std.functional
> > imported from std.range
> > imported from std.exception
> > imported from std.conv
> > imported from std.array
> > imported from std.algorithm
> > imported from std.random *
> > imported from std.range
> > imported from std.exception
> > imported from std.conv
> > imported from std.array
> > imported from std.algorithm
> > imported from std.string
> > imported from std.encoding *
> > object.Exception: Aborting due to cycle between (*) elements with module
> >ctors/dtors
> >
> > It didn't immediately give away where the problem is and what steps need to
>be
>
> >taken to fix it. Probably that's why you were compelled to add a natural
> >language translation:
> >
> > > So what this is saying, is std.encoding indirectly imports std.random,
> which
> > > indirectly imports std.encoding, and both of these modules contain shared
>
> >module
> > > ctors. I manually verified the cycle path, and that shared ctors exist,
>so
>
> >it
> > > is a real cycle.
More information about the phobos
mailing list