diff --git a/source/dub/packagemanager.d b/source/dub/packagemanager.d index dfd4a5a..610ccfb 100644 --- a/source/dub/packagemanager.d +++ b/source/dub/packagemanager.d @@ -394,8 +394,14 @@ writeLocalPackageList(type); } - Package addTemporaryPackage(Path path, Version ver) + Package getTemporaryPackage(Path path, Version ver) { + foreach (p; m_temporaryPackages) + if (p.path == path) { + enforce(p.ver == ver, format("Package in %s is refrenced with two conflicting versions: %s vs %s", path.toNativeString(), p.ver, ver)); + return p; + } + auto info = jsonFromFile(path ~ PackageJsonFilename, false); string name; if( "name" !in info ) info["name"] = path.head.toString(); diff --git a/source/dub/project.d b/source/dub/project.d index 2dd341b..4c31e27 100644 --- a/source/dub/project.d +++ b/source/dub/project.d @@ -186,7 +186,7 @@ Path path = vspec.path; if( !path.absolute ) path = pack.path ~ path; logDiagnostic("Adding local %s %s", path, vspec.version_); - p = m_packageManager.addTemporaryPackage(path, vspec.version_); + p = m_packageManager.getTemporaryPackage(path, vspec.version_); } else { p = m_packageManager.getBestPackage(name, vspec); }