mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 7.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.
This commit is contained in:
parent
17a13437c9
commit
6039c7f053
10
src/json.c
10
src/json.c
@ -220,7 +220,7 @@ json_decode_array(js_read_T *reader, typval_T *res)
|
|||||||
listitem_T *li;
|
listitem_T *li;
|
||||||
|
|
||||||
if (rettv_list_alloc(res) == FAIL)
|
if (rettv_list_alloc(res) == FAIL)
|
||||||
goto fail;
|
goto failsilent;
|
||||||
++reader->js_used; /* consume the '[' */
|
++reader->js_used; /* consume the '[' */
|
||||||
|
|
||||||
while (TRUE)
|
while (TRUE)
|
||||||
@ -253,6 +253,8 @@ json_decode_array(js_read_T *reader, typval_T *res)
|
|||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
fail:
|
fail:
|
||||||
|
EMSG(_(e_invarg));
|
||||||
|
failsilent:
|
||||||
res->v_type = VAR_SPECIAL;
|
res->v_type = VAR_SPECIAL;
|
||||||
res->vval.v_number = VVAL_NONE;
|
res->vval.v_number = VVAL_NONE;
|
||||||
}
|
}
|
||||||
@ -268,7 +270,7 @@ json_decode_object(js_read_T *reader, typval_T *res)
|
|||||||
char_u *key;
|
char_u *key;
|
||||||
|
|
||||||
if (rettv_dict_alloc(res) == FAIL)
|
if (rettv_dict_alloc(res) == FAIL)
|
||||||
goto fail;
|
goto failsilent;
|
||||||
++reader->js_used; /* consume the '{' */
|
++reader->js_used; /* consume the '{' */
|
||||||
|
|
||||||
while (TRUE)
|
while (TRUE)
|
||||||
@ -293,7 +295,7 @@ json_decode_object(js_read_T *reader, typval_T *res)
|
|||||||
if (key != NULL)
|
if (key != NULL)
|
||||||
EMSG(_(e_emptykey));
|
EMSG(_(e_emptykey));
|
||||||
clear_tv(&tvkey);
|
clear_tv(&tvkey);
|
||||||
goto fail;
|
goto failsilent;
|
||||||
}
|
}
|
||||||
|
|
||||||
json_skip_white(reader);
|
json_skip_white(reader);
|
||||||
@ -329,6 +331,8 @@ json_decode_object(js_read_T *reader, typval_T *res)
|
|||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
fail:
|
fail:
|
||||||
|
EMSG(_(e_invarg));
|
||||||
|
failsilent:
|
||||||
res->v_type = VAR_SPECIAL;
|
res->v_type = VAR_SPECIAL;
|
||||||
res->vval.v_number = VVAL_NONE;
|
res->vval.v_number = VVAL_NONE;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
" Test for JSON functions.
|
" Test for JSON functions.
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
let s:json1 = '"str\"in\\g"'
|
let s:json1 = '"str\"in\\g"'
|
||||||
let s:var1 = "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(type(v:none), type(jsondecode('')))
|
||||||
call assert_equal("", 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("{-}")', "E474:")
|
|
||||||
call assert_fails('call jsondecode("blah")', "E474:")
|
call assert_fails('call jsondecode("blah")', "E474:")
|
||||||
call assert_fails('call jsondecode("true 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("[foobar]")', "E474:")
|
|
||||||
|
call assert_fails('call jsondecode("{")', "E474:")
|
||||||
call assert_fails('call jsondecode("{foobar}")', "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
|
endfunc
|
||||||
|
@ -946,6 +946,18 @@ func Test_type()
|
|||||||
call assert_equal('true', '' . v:true)
|
call assert_equal('true', '' . v:true)
|
||||||
call assert_equal('none', '' . v:none)
|
call assert_equal('none', '' . v:none)
|
||||||
call assert_equal('null', '' . v:null)
|
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
|
endfunc
|
||||||
|
|
||||||
"-------------------------------------------------------------------------------
|
"-------------------------------------------------------------------------------
|
||||||
|
@ -741,6 +741,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1164,
|
||||||
/**/
|
/**/
|
||||||
1163,
|
1163,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user