Skip to content

Commit

Permalink
Eliminate use of Json.opDispatch.
Browse files Browse the repository at this point in the history
  • Loading branch information
s-ludwig committed Jun 24, 2016
1 parent 9658298 commit bf65c40
Show file tree
Hide file tree
Showing 7 changed files with 43 additions and 51 deletions.
8 changes: 4 additions & 4 deletions source/dub/compilers/utils.d
Expand Up @@ -378,9 +378,9 @@ BuildPlatform readPlatformProbe(string output)
auto json = parseJsonString(output);

BuildPlatform build_platform;
build_platform.platform = json.platform.get!(Json[]).map!(e => e.get!string()).array();
build_platform.architecture = json.architecture.get!(Json[]).map!(e => e.get!string()).array();
build_platform.compiler = json.compiler.get!string;
build_platform.frontendVersion = json.frontendVersion.get!int;
build_platform.platform = json["platform"].get!(Json[]).map!(e => e.get!string()).array();
build_platform.architecture = json["architecture"].get!(Json[]).map!(e => e.get!string()).array();
build_platform.compiler = json["compiler"].get!string;
build_platform.frontendVersion = json["frontendVersion"].get!int;
return build_platform;
}
2 changes: 1 addition & 1 deletion source/dub/dependency.d
Expand Up @@ -302,7 +302,7 @@ struct Dependency {
logDiagnostic("Ignoring version specification (%s) for path based dependency %s", pv.get!string, pp.get!string);

dep = Dependency.any;
dep.path = Path(verspec.path.get!string);
dep.path = Path(verspec["path"].get!string);
} else {
enforce("version" in verspec, "No version field specified!");
auto ver = verspec["version"].get!string;
Expand Down
20 changes: 6 additions & 14 deletions source/dub/internal/vibecompat/data/json.d
Expand Up @@ -693,14 +693,6 @@ struct Json {
m_array ~= element;
}

/** Scheduled for deprecation, please use `opIndex` instead.
Allows to access existing fields of a JSON object using dot syntax.
*/
@property const(Json) opDispatch(string prop)() const { return opIndex(prop); }
/// ditto
@property ref Json opDispatch(string prop)() { return opIndex(prop); }

/**
Compares two JSON values for equality.
Expand Down Expand Up @@ -1422,8 +1414,8 @@ unittest {
s.a = 2;

auto j = serializeToJson(s);
assert(j.a.type == Json.Type.int_);
assert(j.b.type == Json.Type.null_);
assert(j["a"].type == Json.Type.int_);
assert(j["b"].type == Json.Type.null_);

auto t = deserializeJson!S(j);
assert(!t.a.isNull() && t.a == 2);
Expand Down Expand Up @@ -1807,10 +1799,10 @@ void writeJsonString(R, bool pretty = false)(ref R dst, in Json json, size_t lev

unittest {
auto a = Json.emptyObject;
a.a = Json.emptyArray;
a.b = Json.emptyArray;
a.b ~= Json(1);
a.b ~= Json.emptyObject;
a["a"] = Json.emptyArray;
a["b"] = Json.emptyArray;
a["b"] ~= Json(1);
a["b"] ~= Json.emptyObject;

assert(a.toString() == `{"a":[],"b":[1,{}]}` || a.toString == `{"b":[1,{}],"a":[]}`);
assert(a.toPrettyString() ==
Expand Down
8 changes: 4 additions & 4 deletions source/dub/internal/vibecompat/data/serialization.d
Expand Up @@ -139,8 +139,8 @@ unittest {
test.text = "Hello";

Json serialized = serialize!JsonSerializer(test);
assert(serialized.value.get!int == 12);
assert(serialized.text.get!string == "Hello");
assert(serialized["value"].get!int == 12);
assert(serialized["text"].get!string == "Hello");
}

unittest {
Expand Down Expand Up @@ -243,8 +243,8 @@ unittest {
}

Json serialized = Json.emptyObject;
serialized.value = 12;
serialized.text = "Hello";
serialized["value"] = 12;
serialized["text"] = "Hello";

Test test = deserialize!(JsonSerializer, Test)(serialized);
assert(test.value == 12);
Expand Down
20 changes: 10 additions & 10 deletions source/dub/packagemanager.d
Expand Up @@ -338,7 +338,7 @@ class PackageManager {
/// destination and sets a version field in the package description.
Package storeFetchedPackage(Path zip_file_path, Json package_info, Path destination)
{
auto package_name = package_info.name.get!string;
auto package_name = package_info["name"].get!string;
auto package_version = package_info["version"].get!string;
auto clean_package_version = package_version[package_version.startsWith("~") ? 1 : 0 .. $];

Expand Down Expand Up @@ -527,8 +527,8 @@ class PackageManager {
enforce(packlist.type == Json.Type.array, LocalPackagesFilename~" must contain an array.");
foreach( pentry; packlist ){
try {
auto name = pentry.name.get!string;
auto path = Path(pentry.path.get!string);
auto name = pentry["name"].get!string;
auto path = Path(pentry["path"].get!string);
if (name == "*") {
paths ~= path;
} else {
Expand All @@ -550,7 +550,7 @@ class PackageManager {
logWarn("Locally registered package %s %s was not found. Please run \"dub remove-local %s\".",
name, ver, path.toNativeString());
auto info = Json.emptyObject;
info.name = name;
info["name"] = name;
pp = new Package(info, path);
}
}
Expand Down Expand Up @@ -631,7 +631,7 @@ class PackageManager {
if (existsFile(ovrfilepath)) {
foreach (entry; jsonFromFile(ovrfilepath)) {
PackageOverride ovr;
ovr.package_ = entry.name.get!string;
ovr.package_ = entry["name"].get!string;
ovr.version_ = Dependency(entry["version"].get!string);
if (auto pv = "targetVersion" in entry) ovr.targetVersion = Version(pv.get!string);
if (auto pv = "targetPath" in entry) ovr.targetPath = Path(pv.get!string);
Expand Down Expand Up @@ -678,8 +678,8 @@ class PackageManager {
Json[] newlist;
foreach (p; m_repositories[type].searchPath) {
auto entry = Json.emptyObject;
entry.name = "*";
entry.path = p.toNativeString();
entry["name"] = "*";
entry["path"] = p.toNativeString();
newlist ~= entry;
}

Expand All @@ -702,10 +702,10 @@ class PackageManager {
Json[] newlist;
foreach (ovr; m_repositories[type].overrides) {
auto jovr = Json.emptyObject;
jovr.name = ovr.package_;
jovr["name"] = ovr.package_;
jovr["version"] = ovr.version_.versionSpec;
if (!ovr.targetPath.empty) jovr.targetPath = ovr.targetPath.toNativeString();
else jovr.targetVersion = ovr.targetVersion.toString();
if (!ovr.targetPath.empty) jovr["targetPath"] = ovr.targetPath.toNativeString();
else jovr["targetVersion"] = ovr.targetVersion.toString();
newlist ~= jovr;
}
auto path = m_repositories[type].packagePath;
Expand Down
10 changes: 5 additions & 5 deletions source/dub/project.d
Expand Up @@ -1347,18 +1347,18 @@ final class SelectedVersions {
if (j.type == Json.Type.string)
return Dependency(Version(j.get!string));
else if (j.type == Json.Type.object)
return Dependency(Path(j.path.get!string));
return Dependency(Path(j["path"].get!string));
else throw new Exception(format("Unexpected type for dependency: %s", j.type));
}

Json serialize()
const {
Json json = serializeToJson(m_selections);
Json serialized = Json.emptyObject;
serialized.fileVersion = FileVersion;
serialized.versions = Json.emptyObject;
serialized["fileVersion"] = FileVersion;
serialized["versions"] = Json.emptyObject;
foreach (p, v; m_selections)
serialized.versions[p] = dependencyToJson(v.dep);
serialized["versions"][p] = dependencyToJson(v.dep);
return serialized;
}

Expand All @@ -1367,7 +1367,7 @@ final class SelectedVersions {
enforce(cast(int)json["fileVersion"] == FileVersion, "Mismatched dub.select.json version: " ~ to!string(cast(int)json["fileVersion"]) ~ "vs. " ~to!string(FileVersion));
clear();
scope(failure) clear();
foreach (string p, v; json.versions)
foreach (string p, v; json["versions"])
m_selections[p] = Selected(dependencyFromJson(v));
}
}
Expand Down
26 changes: 13 additions & 13 deletions source/dub/recipe/json.d
Expand Up @@ -73,13 +73,13 @@ void parseJson(ref PackageRecipe recipe, Json json, string parent_name)
Json toJson(in ref PackageRecipe recipe)
{
auto ret = recipe.buildSettings.toJson();
ret.name = recipe.name;
ret["name"] = recipe.name;
if (!recipe.version_.empty) ret["version"] = recipe.version_;
if (!recipe.description.empty) ret.description = recipe.description;
if (!recipe.homepage.empty) ret.homepage = recipe.homepage;
if (!recipe.authors.empty) ret.authors = serializeToJson(recipe.authors);
if (!recipe.copyright.empty) ret.copyright = recipe.copyright;
if (!recipe.license.empty) ret.license = recipe.license;
if (!recipe.description.empty) ret["description"] = recipe.description;
if (!recipe.homepage.empty) ret["homepage"] = recipe.homepage;
if (!recipe.authors.empty) ret["authors"] = serializeToJson(recipe.authors);
if (!recipe.copyright.empty) ret["copyright"] = recipe.copyright;
if (!recipe.license.empty) ret["license"] = recipe.license;
if (!recipe.subPackages.empty) {
Json[] jsonSubPackages = new Json[recipe.subPackages.length];
foreach (i, subPackage; recipe.subPackages) {
Expand All @@ -89,19 +89,19 @@ Json toJson(in ref PackageRecipe recipe)
jsonSubPackages[i] = subPackage.recipe.toJson();
}
}
ret.subPackages = jsonSubPackages;
ret["subPackages"] = jsonSubPackages;
}
if (recipe.configurations.length) {
Json[] configs;
foreach(config; recipe.configurations)
configs ~= config.toJson();
ret.configurations = configs;
ret["configurations"] = configs;
}
if (recipe.buildTypes.length) {
Json[string] types;
foreach (name, settings; recipe.buildTypes)
types[name] = settings.toJson();
ret.buildTypes = types;
ret["buildTypes"] = types;
}
if (!recipe.ddoxFilterArgs.empty) ret["-ddoxFilterArgs"] = recipe.ddoxFilterArgs.serializeToJson();
if (!recipe.ddoxTool.empty) ret["-ddoxTool"] = recipe.ddoxTool;
Expand Down Expand Up @@ -151,8 +151,8 @@ private void parseJson(ref ConfigurationInfo config, Json json, string package_n
private Json toJson(in ref ConfigurationInfo config)
{
auto ret = config.buildSettings.toJson();
ret.name = config.name;
if (config.platforms.length) ret.platforms = serializeToJson(config.platforms);
ret["name"] = config.name;
if (config.platforms.length) ret["platforms"] = serializeToJson(config.platforms);
return ret;
}

Expand Down Expand Up @@ -243,9 +243,9 @@ private Json toJson(in ref BuildSettingsTemplate bs)
auto deps = Json.emptyObject;
foreach( pack, d; bs.dependencies )
deps[pack] = serializeToJson(d);
ret.dependencies = deps;
ret["dependencies"] = deps;
}
if (bs.systemDependencies !is null) ret.systemDependencies = bs.systemDependencies;
if (bs.systemDependencies !is null) ret["systemDependencies"] = bs.systemDependencies;
if (bs.targetType != TargetType.autodetect) ret["targetType"] = bs.targetType.to!string();
if (!bs.targetPath.empty) ret["targetPath"] = bs.targetPath;
if (!bs.targetName.empty) ret["targetName"] = bs.targetName;
Expand Down

0 comments on commit bf65c40

Please sign in to comment.