From b5d73dd91f39a171d04c359a8304d166a1b2bac6 Mon Sep 17 00:00:00 2001 From: Jean Privat Date: Fri, 31 Jul 2009 21:55:38 -0400 Subject: [PATCH] syntax: [] method can have closure definition Signed-off-by: Jean Privat --- src/syntax/typing.nit | 8 ++++++++ tests/base_closure_forms.nit | 12 ++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/syntax/typing.nit b/src/syntax/typing.nit index 8d69a52..0f19f7f 100644 --- a/src/syntax/typing.nit +++ b/src/syntax/typing.nit @@ -1517,6 +1517,14 @@ end redef class ABraExpr redef fun name do return once "[]".to_symbol redef fun compute_raw_arguments do return n_args.to_a + redef fun closure_defs + do + if n_closure_defs.is_empty then + return null + else + return n_closure_defs.to_a + end + end end redef class ABraAssignExpr diff --git a/tests/base_closure_forms.nit b/tests/base_closure_forms.nit index 9a654e0..3be20e9 100644 --- a/tests/base_closure_forms.nit +++ b/tests/base_closure_forms.nit @@ -56,12 +56,12 @@ class Array[E] end class Map[K, V] - fun get(k: K): V + fun [](k: K): V !def: V do abort do if _k == k then return _v var n = _next - if n != null then return n.get(k) !def do continue def + if n != null then return n[k] !def do continue def var v = def _next = new Map[K, V](k, v) return v @@ -160,7 +160,7 @@ do if not m.has_key('I') then (-1).output 'I'.output '='.output - var i = m.get('I') + var i = m['I'] i.output '\n'.output @@ -169,7 +169,7 @@ do if m.has_key('V') then (-2).output 'V'.output '='.output - i = m.get('V') !def = '5' + i = m['V'] !def = '5' i.output '\n'.output @@ -178,7 +178,7 @@ do if not m.has_key('V') then (-3).output 'V'.output '='.output - i = m.get('V') !def = '6' + i = m['V'] !def = '6' i.output '\n'.output @@ -187,7 +187,7 @@ do if m.has_key('X') then (-4).output 'X'.output '='.output - i = m.get('X') !def do break '0' + i = m['X'] !def do break '0' i.output '\n'.output -- 1.7.9.5