Merge pull request #891 from MartinNowak/dmd_nightly
test with dmd-nightly and dmd-beta
commit d759ede05b677e1d101b089fa7ee06a04cb76fa6
2 parents 9fd95e3 + 9c4cf5f
@Sönke Ludwig Sönke Ludwig authored on 7 Jul 2016
GitHub committed on 7 Jul 2016
Showing 2 changed files
View
4
.travis.yml
sudo: false
 
matrix:
include:
- d: dmd-beta
env: [FRONTEND=2.071]
- d: dmd
env: [FRONTEND=2.071]
- d: dmd-2.070.2
env: [FRONTEND=2.070]
- d: dmd-2.069.2
env: [FRONTEND=2.069]
- d: dmd-2.068.2
View
8
source/dub/internal/vibecompat/data/json.d
import std.conv;
import std.datetime;
import std.exception;
import std.format;
import std.string;
import std.range;
import std.string : format;
import std.traits;
 
version = JsonLineNumbers;
version = VibeJsonFieldNames;
*/
Json parseJson(R)(ref R range, int* line = null, string filename = null)
if( is(R == string) )
{
import std.string : startsWith;
 
Json ret;
enforceJson(!range.empty, "JSON string is empty.", filename, 0);
 
skipWhitespace(range, line);
Throws a JSONException if any parsing error occurs.
*/
Json parseJsonString(string str, string filename = null)
{
import std.string : strip;
 
auto strcopy = str;
int line = 0;
auto ret = parseJson(strcopy, &line, filename);
enforceJson(strcopy.strip().length == 0, "Expected end of string after JSON value.", filename, line);
assert(json.toPrettyString() == parseJsonString(json.toPrettyString()).toPrettyString());
}
 
unittest {
import std.string : endsWith;
 
try parseJsonString(`{"a": 1`);
catch (Exception e) assert(e.msg.endsWith("Missing '}' before EOF."));
try parseJsonString(`{"a": 1 x`);
catch (Exception e) assert(e.msg.endsWith("Expected '}' or ',' - got 'x'."));