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)