Mercurial > vim
comparison src/testdir/test_vim9_disassemble.vim @ 28287:dc68c111cf7a v8.2.4669
patch 8.2.4669: in compiled code len('string') is not inlined
Commit: https://github.com/vim/vim/commit/58f331a05f5b7bdddf04e68b6e51a827fd0c43f0
Author: LemonBoy <thatlemon@gmail.com>
Date: Sat Apr 2 21:59:06 2022 +0100
patch 8.2.4669: in compiled code len('string') is not inlined
Problem: In compiled code len('string') is not inlined.
Solution: Compute the length at compile time if possible. (closes https://github.com/vim/vim/issues/10065)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 02 Apr 2022 23:00:05 +0200 |
parents | 9d90eef65a46 |
children | d550054e1328 |
comparison
equal
deleted
inserted
replaced
28286:68700da20991 | 28287:dc68c111cf7a |
---|---|
1013 else | 1013 else |
1014 echo "no" | 1014 echo "no" |
1015 endif | 1015 endif |
1016 enddef | 1016 enddef |
1017 | 1017 |
1018 def s:LenConstant(): number | |
1019 return len("foo") + len("fighters") | |
1020 enddef | |
1021 | |
1018 def Test_disassemble_const_expr() | 1022 def Test_disassemble_const_expr() |
1023 var instr = execute('disassemble LenConstant') | |
1024 assert_match('LenConstant\_s*' .. | |
1025 'return len("foo") + len("fighters")\_s*' .. | |
1026 '\d PUSHNR 11\_s*', | |
1027 instr) | |
1028 assert_notmatch('BCALL len', instr) | |
1029 | |
1019 assert_equal("\nyes", execute('HasEval()')) | 1030 assert_equal("\nyes", execute('HasEval()')) |
1020 var instr = execute('disassemble HasEval') | 1031 instr = execute('disassemble HasEval') |
1021 assert_match('HasEval\_s*' .. | 1032 assert_match('HasEval\_s*' .. |
1022 'if has("eval")\_s*' .. | 1033 'if has("eval")\_s*' .. |
1023 'echo "yes"\_s*' .. | 1034 'echo "yes"\_s*' .. |
1024 '\d PUSHS "yes"\_s*' .. | 1035 '\d PUSHS "yes"\_s*' .. |
1025 '\d ECHO 1\_s*' .. | 1036 '\d ECHO 1\_s*' .. |