From f1db420317a53eacf3dfb08b8121ea06ad1ca5b5 Mon Sep 17 00:00:00 2001 From: Graydon Hoare Date: Mon, 19 Jul 2010 12:03:58 -0700 Subject: Fix over-optimistic resolution of self-methods within obj scopes. There is no such feature in the language at present. Add test to prevent regression. Closes #114. --- src/boot/me/semant.ml | 6 +----- src/test/compile-fail/no-self-dispatch.rs | 11 +++++++++++ 2 files changed, 12 insertions(+), 5 deletions(-) create mode 100644 src/test/compile-fail/no-self-dispatch.rs diff --git a/src/boot/me/semant.ml b/src/boot/me/semant.ml index 789a2360..1992bf93 100644 --- a/src/boot/me/semant.ml +++ b/src/boot/me/semant.ml @@ -1758,11 +1758,7 @@ and lookup_by_ident check_slots scopes f.Ast.fn_input_slots | Ast.MOD_ITEM_obj obj -> - begin - match htab_search obj.Ast.obj_fns ident with - Some fn -> found cx scopes fn.id - | None -> check_slots scopes obj.Ast.obj_state - end + check_slots scopes obj.Ast.obj_state | Ast.MOD_ITEM_mod md -> project_ident_from_items cx lchk diff --git a/src/test/compile-fail/no-self-dispatch.rs b/src/test/compile-fail/no-self-dispatch.rs new file mode 100644 index 00000000..be90c12f --- /dev/null +++ b/src/test/compile-fail/no-self-dispatch.rs @@ -0,0 +1,11 @@ +// error-pattern: unresolved identifier +obj oT() { + fn get() -> int { + ret 3; + } + fn foo() { + auto c = get(); + } +} +fn main() { +} -- cgit v1.2.3