summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-01-24 15:05:32 +0100
committerBram Moolenaar <Bram@vim.org>2016-01-24 15:05:32 +0100
commit6039c7f05376f0e470cf62bf2757e653aea357f3 (patch)
treeab4cbced0c4d4ac6c48cdacd4d2472b8b615077f /src
parent17a13437c9414a8693369a97f3be2fc8ad48c12e (diff)
patch 7.4.1164v7.4.1164
Problem: No tests for comparing special variables. Error in jsondecode() not reported. test_json does not work Japanse system. Solution: Set scriptencoding. (Ken Takata) Add a few more tests. Add error.
Diffstat (limited to 'src')
-rw-r--r--src/json.c10
-rw-r--r--src/testdir/test_json.vim19
-rw-r--r--src/testdir/test_viml.vim12
-rw-r--r--src/version.c2
4 files changed, 38 insertions, 5 deletions
diff --git a/src/json.c b/src/json.c
index accb6cf85d..e4473830a6 100644
--- a/src/json.c
+++ b/src/json.c
@@ -220,7 +220,7 @@ json_decode_array(js_read_T *reader, typval_T *res)
listitem_T *li;
if (rettv_list_alloc(res) == FAIL)
- goto fail;
+ goto failsilent;
++reader->js_used; /* consume the '[' */
while (TRUE)
@@ -253,6 +253,8 @@ json_decode_array(js_read_T *reader, typval_T *res)
goto fail;
}
fail:
+ EMSG(_(e_invarg));
+failsilent:
res->v_type = VAR_SPECIAL;
res->vval.v_number = VVAL_NONE;
}
@@ -268,7 +270,7 @@ json_decode_object(js_read_T *reader, typval_T *res)
char_u *key;
if (rettv_dict_alloc(res) == FAIL)
- goto fail;
+ goto failsilent;
++reader->js_used; /* consume the '{' */
while (TRUE)
@@ -293,7 +295,7 @@ json_decode_object(js_read_T *reader, typval_T *res)
if (key != NULL)
EMSG(_(e_emptykey));
clear_tv(&tvkey);
- goto fail;
+ goto failsilent;
}
json_skip_white(reader);
@@ -329,6 +331,8 @@ json_decode_object(js_read_T *reader, typval_T *res)
goto fail;
}
fail:
+ EMSG(_(e_invarg));
+failsilent:
res->v_type = VAR_SPECIAL;
res->vval.v_number = VVAL_NONE;
}
diff --git a/src/testdir/test_json.vim b/src/testdir/test_json.vim
index b30647947f..a1cfa93ac8 100644
--- a/src/testdir/test_json.vim
+++ b/src/testdir/test_json.vim
@@ -1,4 +1,5 @@
" Test for JSON functions.
+scriptencoding utf-8
let s:json1 = '"str\"in\\g"'
let s:var1 = "str\"in\\g"
@@ -95,11 +96,25 @@ func Test_decode()
call assert_equal(type(v:none), type(jsondecode('')))
call assert_equal("", jsondecode('""'))
+ call assert_equal({'n': 1}, jsondecode('{"n":1,}'))
+
call assert_fails('call jsondecode("\"")', "E474:")
- call assert_fails('call jsondecode("{-}")', "E474:")
call assert_fails('call jsondecode("blah")', "E474:")
call assert_fails('call jsondecode("true blah")', "E474:")
call assert_fails('call jsondecode("<foobar>")', "E474:")
- call assert_fails('call jsondecode("[foobar]")', "E474:")
+
+ call assert_fails('call jsondecode("{")', "E474:")
call assert_fails('call jsondecode("{foobar}")', "E474:")
+ call assert_fails('call jsondecode("{\"n\",")', "E474:")
+ call assert_fails('call jsondecode("{\"n\":")', "E474:")
+ call assert_fails('call jsondecode("{\"n\":1")', "E474:")
+ call assert_fails('call jsondecode("{\"n\":1,")', "E474:")
+ call assert_fails('call jsondecode("{\"n\",1}")', "E474:")
+ call assert_fails('call jsondecode("{-}")', "E474:")
+
+ call assert_fails('call jsondecode("[foobar]")', "E474:")
+ call assert_fails('call jsondecode("[")', "E474:")
+ call assert_fails('call jsondecode("[1")', "E474:")
+ call assert_fails('call jsondecode("[1,")', "E474:")
+ call assert_fails('call jsondecode("[1 2]")', "E474:")
endfunc
diff --git a/src/testdir/test_viml.vim b/src/testdir/test_viml.vim
index f1a7cb4351..645f1b522e 100644
--- a/src/testdir/test_viml.vim
+++ b/src/testdir/test_viml.vim
@@ -946,6 +946,18 @@ func Test_type()
call assert_equal('true', '' . v:true)
call assert_equal('none', '' . v:none)
call assert_equal('null', '' . v:null)
+
+ call assert_true(v:false == 0)
+ call assert_false(v:false != 0)
+ call assert_true(v:true == 1)
+ call assert_false(v:true != 1)
+ call assert_false(v:true == v:false)
+ call assert_true(v:true != v:false)
+
+ call assert_true(v:null == 0)
+ call assert_false(v:null != 0)
+ call assert_true(v:none == 0)
+ call assert_false(v:none != 0)
endfunc
"-------------------------------------------------------------------------------
diff --git a/src/version.c b/src/version.c
index 60cb07c348..c41230921b 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1164,
+/**/
1163,
/**/
1162,