forked from aniani/vim
patch 9.0.2027: Vim9: no support for bitwise operators in lambda funcs
Problem: Vim9: no support for bitwise operators in lambda funcs
Solution: move "evaluate" assignment a bit up in order to decide
to perform bitwise operations
closes: #13342
closes: #13345
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
This commit is contained in:
committed by
Christian Brabandt
parent
ae3cfa47d3
commit
de3295dd0c
@@ -1041,6 +1041,50 @@ func Test_bitwise_shift()
|
||||
assert_equal(16, a)
|
||||
END
|
||||
call v9.CheckDefAndScriptSuccess(lines)
|
||||
|
||||
let lines =<< trim END
|
||||
# Use in a lambda function
|
||||
const DivBy2Ref_A = (n: number): number => n >> 1
|
||||
assert_equal(16, DivBy2Ref_A(32))
|
||||
const DivBy2Ref_B = (n: number): number => (<number>n) >> 1
|
||||
assert_equal(16, DivBy2Ref_B(32))
|
||||
const MultBy2Ref_A = (n: number): number => n << 1
|
||||
assert_equal(8, MultBy2Ref_A(4))
|
||||
const MultBy2Ref_B = (n: number): number => (<number>n) << 1
|
||||
assert_equal(8, MultBy2Ref_B(4))
|
||||
|
||||
def DivBy2_A(): func(number): number
|
||||
return (n: number): number => n >> 1
|
||||
enddef
|
||||
assert_equal(16, DivBy2_A()(32))
|
||||
def DivBy2_B(): func(number): number
|
||||
return (n: number): number => (<number>n) >> 1
|
||||
enddef
|
||||
assert_equal(16, DivBy2_B()(32))
|
||||
def MultBy2_A(): func(number): number
|
||||
return (n: number): number => n << 1
|
||||
enddef
|
||||
assert_equal(64, MultBy2_A()(32))
|
||||
def MultBy2_B(): func(number): number
|
||||
return (n: number): number => (<number>n) << 1
|
||||
enddef
|
||||
assert_equal(64, MultBy2_B()(32))
|
||||
END
|
||||
call v9.CheckDefAndScriptSuccess(lines)
|
||||
|
||||
" Use in a legacy lambda function
|
||||
const DivBy2Ref_A = {n -> n >> 1}
|
||||
call assert_equal(16, DivBy2Ref_A(32))
|
||||
func DivBy2_A()
|
||||
return {n -> n >> 1}
|
||||
endfunc
|
||||
call assert_equal(16, DivBy2_A()(32))
|
||||
const MultBy2Ref_A = {n -> n << 1}
|
||||
call assert_equal(64, MultBy2Ref_A(32))
|
||||
func MultBy2_A()
|
||||
return {n -> n << 1}
|
||||
endfunc
|
||||
call assert_equal(64, MultBy2_A()(32))
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab
|
||||
|
||||
Reference in New Issue
Block a user