Mercurial > vim
comparison src/testdir/test_vim9_expr.vim @ 21771:fcf978444298 v8.2.1435
patch 8.2.1435: Vim9: always converting to string for ".." leads to mistakes
Commit: https://github.com/vim/vim/commit/418f1df54763b79600db1c91c880fbc1007b2e1f
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Aug 12 21:34:49 2020 +0200
patch 8.2.1435: Vim9: always converting to string for ".." leads to mistakes
Problem: Vim9: always converting to string for ".." leads to mistakes.
Solution: Only automatically convert simple types.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 12 Aug 2020 21:45:03 +0200 |
parents | f37c1330b15c |
children | e591b448a670 |
comparison
equal
deleted
inserted
replaced
21770:48e91c319616 | 21771:fcf978444298 |
---|---|
919 assert_equal('hello 123', 'hello ' | 919 assert_equal('hello 123', 'hello ' |
920 .. 123) | 920 .. 123) |
921 assert_equal('123 hello', 123 .. ' hello') | 921 assert_equal('123 hello', 123 .. ' hello') |
922 assert_equal('123456', 123 .. 456) | 922 assert_equal('123456', 123 .. 456) |
923 | 923 |
924 assert_equal('av:true', 'a' .. true) | |
925 assert_equal('av:false', 'a' .. false) | |
926 assert_equal('av:null', 'a' .. v:null) | |
927 assert_equal('av:none', 'a' .. v:none) | |
928 if has('float') | |
929 assert_equal('a0.123', 'a' .. 0.123) | |
930 endif | |
931 | |
924 assert_equal([1, 2, 3, 4], [1, 2] + [3, 4]) | 932 assert_equal([1, 2, 3, 4], [1, 2] + [3, 4]) |
925 assert_equal(0z11223344, 0z1122 + 0z3344) | 933 assert_equal(0z11223344, 0z1122 + 0z3344) |
926 assert_equal(0z112201ab, 0z1122 | 934 assert_equal(0z112201ab, 0z1122 |
927 + g:ablob) | 935 + g:ablob) |
928 assert_equal(0z01ab3344, g:ablob + 0z3344) | 936 assert_equal(0z01ab3344, g:ablob + 0z3344) |
1011 lines =<< trim END | 1019 lines =<< trim END |
1012 vim9script | 1020 vim9script |
1013 echo 'a'.. 'b' | 1021 echo 'a'.. 'b' |
1014 END | 1022 END |
1015 CheckScriptFailure(lines, 'E1004:') | 1023 CheckScriptFailure(lines, 'E1004:') |
1024 | |
1025 # check valid string concatenation | |
1026 lines =<< trim END | |
1027 vim9script | |
1028 assert_equal('one123', 'one' .. 123) | |
1029 assert_equal('onev:true', 'one' .. true) | |
1030 assert_equal('onev:null', 'one' .. v:null) | |
1031 assert_equal('onev:none', 'one' .. v:none) | |
1032 if has('float') | |
1033 assert_equal('a0.123', 'a' .. 0.123) | |
1034 endif | |
1035 END | |
1036 CheckScriptSuccess(lines) | |
1037 | |
1038 # check invalid string concatenation | |
1039 lines =<< trim END | |
1040 vim9script | |
1041 echo 'a' .. [1] | |
1042 END | |
1043 CheckScriptFailure(lines, 'E730:') | |
1044 lines =<< trim END | |
1045 vim9script | |
1046 echo 'a' .. #{a: 1} | |
1047 END | |
1048 CheckScriptFailure(lines, 'E731:') | |
1049 lines =<< trim END | |
1050 vim9script | |
1051 echo 'a' .. test_void() | |
1052 END | |
1053 CheckScriptFailure(lines, 'E908:') | |
1054 lines =<< trim END | |
1055 vim9script | |
1056 echo 'a' .. 0z33 | |
1057 END | |
1058 CheckScriptFailure(lines, 'E976:') | |
1059 lines =<< trim END | |
1060 vim9script | |
1061 echo 'a' .. function('len') | |
1062 END | |
1063 CheckScriptFailure(lines, 'E729:') | |
1064 lines =<< trim END | |
1065 vim9script | |
1066 echo 'a' .. test_null_job() | |
1067 END | |
1068 CheckScriptFailure(lines, 'E908:') | |
1069 lines =<< trim END | |
1070 vim9script | |
1071 echo 'a' .. test_null_channel() | |
1072 END | |
1073 CheckScriptFailure(lines, 'E908:') | |
1016 enddef | 1074 enddef |
1017 | 1075 |
1018 def Test_expr5_float() | 1076 def Test_expr5_float() |
1019 if !has('float') | 1077 if !has('float') |
1020 MissingFeature 'float' | 1078 MissingFeature 'float' |
1061 call CheckDefFailure(["let x = 0z1122 + 'asd'"], 'E1051') | 1119 call CheckDefFailure(["let x = 0z1122 + 'asd'"], 'E1051') |
1062 call CheckDefFailure(["let x = 33 + 0z1122"], 'E1051') | 1120 call CheckDefFailure(["let x = 33 + 0z1122"], 'E1051') |
1063 call CheckDefFailure(["let x = [3] + 0z1122"], 'E1051') | 1121 call CheckDefFailure(["let x = [3] + 0z1122"], 'E1051') |
1064 call CheckDefFailure(["let x = 'asdf' + 0z1122"], 'E1051') | 1122 call CheckDefFailure(["let x = 'asdf' + 0z1122"], 'E1051') |
1065 call CheckDefFailure(["let x = 6 + xxx"], 'E1001') | 1123 call CheckDefFailure(["let x = 6 + xxx"], 'E1001') |
1124 | |
1125 call CheckDefFailure(["let x = 'a' .. [1]"], 'E1105') | |
1126 call CheckDefFailure(["let x = 'a' .. #{a: 1}"], 'E1105') | |
1127 call CheckDefFailure(["let x = 'a' .. test_void()"], 'E1105') | |
1128 call CheckDefFailure(["let x = 'a' .. 0z32"], 'E1105') | |
1129 call CheckDefFailure(["let x = 'a' .. function('len')"], 'E1105') | |
1130 call CheckDefFailure(["let x = 'a' .. function('len', ['a'])"], 'E1105') | |
1131 call CheckDefFailure(["let x = 'a' .. test_null_job()"], 'E1105') | |
1132 call CheckDefFailure(["let x = 'a' .. test_null_channel()"], 'E1105') | |
1066 endfunc | 1133 endfunc |
1067 | 1134 |
1068 " test multiply, divide, modulo | 1135 " test multiply, divide, modulo |
1069 def Test_expr6() | 1136 def Test_expr6() |
1070 assert_equal(36, 6 * 6) | 1137 assert_equal(36, 6 * 6) |