Mercurial > vim
comparison src/testdir/test_vim9_expr.vim @ 23332:cdb706d5c43d v8.2.2209
patch 8.2.2209: Vim9: return type of => lambda not parsed
Commit: https://github.com/vim/vim/commit/9e68c32563d8c9ffe1ac04ecd4ccd730af66b97c
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Dec 25 12:38:04 2020 +0100
patch 8.2.2209: Vim9: return type of => lambda not parsed
Problem: Vim9: return type of => lambda not parsed.
Solution: Parse and use the return type.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 25 Dec 2020 12:45:05 +0100 |
parents | c76240efdf02 |
children | 9c5275b1c763 |
comparison
equal
deleted
inserted
replaced
23331:c5b1246b9557 | 23332:cdb706d5c43d |
---|---|
1949 | 1949 |
1950 var res = map([1, 2, 3], (i: number, v: number) => i + v) | 1950 var res = map([1, 2, 3], (i: number, v: number) => i + v) |
1951 assert_equal([1, 3, 5], res) | 1951 assert_equal([1, 3, 5], res) |
1952 | 1952 |
1953 # Lambda returning a dict | 1953 # Lambda returning a dict |
1954 var Lmb = () => {key: 42} | 1954 var Lmb = () => ({key: 42}) |
1955 assert_equal({key: 42}, Lmb()) | 1955 assert_equal({key: 42}, Lmb()) |
1956 END | 1956 END |
1957 CheckDefSuccess(lines) | 1957 CheckDefSuccess(lines) |
1958 | 1958 |
1959 CheckDefFailure(["var Ref = (a)=>a + 1"], 'E1001:') | 1959 CheckDefFailure(["var Ref = (a)=>a + 1"], 'E1001:') |
1960 CheckDefFailure(["var Ref = (a)=> a + 1"], 'E1001:') | 1960 CheckDefFailure(["var Ref = (a)=> a + 1"], 'E1001:') |
1961 CheckDefFailure(["var Ref = (a) =>a + 1"], 'E1001:') | 1961 CheckDefFailure(["var Ref = (a) =>a + 1"], 'E1001:') |
1962 | 1962 |
1963 CheckDefSuccess(["var Ref: func(number): string = (a: number): string => 'x'"]) | |
1964 CheckDefSuccess(["var Ref: func(number): any = (a: number): any => 'x'"]) | |
1965 CheckDefFailure(["var Ref: func(number): number = (a: number): string => 'x'"], 'E1012:') | |
1966 CheckDefFailure(["var Ref: func(number): string = (a: number): string => 99"], 'E1012:') | |
1967 | |
1963 CheckDefFailure(["filter([1, 2], (k,v) => 1)"], 'E1069:', 1) | 1968 CheckDefFailure(["filter([1, 2], (k,v) => 1)"], 'E1069:', 1) |
1964 # error is in first line of the lambda | 1969 # error is in first line of the lambda |
1965 CheckDefFailure(["var L = (a) -> a + b"], 'E1001:', 1) | 1970 CheckDefFailure(["var L = (a) -> a + b"], 'E1001:', 1) |
1966 | 1971 |
1967 # TODO: lambda after -> doesn't work yet | 1972 # TODO: ->(lambda)() doesn't work yet |
1968 # assert_equal('xxxyyy', 'xxx'->((a, b) => a .. b)('yyy')) | 1973 # assert_equal('xxxyyy', 'xxx'->((a, b) => a .. b)('yyy')) |
1969 | 1974 |
1970 # CheckDefExecFailure(["var s = 'asdf'->{a -> a}('x')"], | 1975 # CheckDefExecFailure(["var s = 'asdf'->{a -> a}('x')"], |
1971 # 'E1106: One argument too many') | 1976 # 'E1106: One argument too many') |
1972 # CheckDefExecFailure(["var s = 'asdf'->{a -> a}('x', 'y')"], | 1977 # CheckDefExecFailure(["var s = 'asdf'->{a -> a}('x', 'y')"], |
1973 # 'E1106: 2 arguments too many') | 1978 # 'E1106: 2 arguments too many') |
1974 # CheckDefFailure(["echo 'asdf'->{a -> a}(x)"], 'E1001:', 1) | 1979 # CheckDefFailure(["echo 'asdf'->{a -> a}(x)"], 'E1001:', 1) |
1975 | 1980 |
1976 CheckDefSuccess(['var Fx = (a) => {k1: 0,', ' k2: 1}']) | 1981 CheckDefSuccess(['var Fx = (a) => ({k1: 0,', ' k2: 1})']) |
1977 CheckDefFailure(['var Fx = (a) => {k1: 0', ' k2: 1}'], 'E722:', 2) | 1982 CheckDefFailure(['var Fx = (a) => ({k1: 0', ' k2: 1})'], 'E722:', 2) |
1978 CheckDefFailure(['var Fx = (a) => {k1: 0,', ' k2 1}'], 'E720:', 2) | 1983 CheckDefFailure(['var Fx = (a) => ({k1: 0,', ' k2 1})'], 'E720:', 2) |
1979 | 1984 |
1980 CheckDefSuccess(['var Fx = (a) => [0,', ' 1]']) | 1985 CheckDefSuccess(['var Fx = (a) => [0,', ' 1]']) |
1981 CheckDefFailure(['var Fx = (a) => [0', ' 1]'], 'E696:', 2) | 1986 CheckDefFailure(['var Fx = (a) => [0', ' 1]'], 'E696:', 2) |
1982 enddef | 1987 enddef |
1983 | 1988 |