let prefix =
[GetLocal_0;
ConstructSuper 0] in
+ let member x =
+ name ^ "::" ^ x in
let {init=init; cinit=cinit; methods=methods} =
List.fold_left
(fun ctx (name,args,body) ->
"init" ->
{ctx with init = arguments_self args
(fun e args ->
- Asm.make_proc ~args:args name @@ prefix @ (generate_expr body e))}
+ Asm.make_proc ~args:args (member name) @@ prefix @ (generate_expr body e))}
| "cinit" ->
{ctx with cinit = arguments_self args
(fun e args ->
- Asm.make_proc ~args:args name @@ generate_expr body e)}
+ Asm.make_proc ~args:args (member name) @@ generate_expr body e)}
| _ ->
{ctx with methods =
(arguments_self args
(fun e args->
- Asm.make_meth ~args:args name @@ generate_expr body e)) :: ctx.methods})
- {init = make_proc "init" prefix;
- cinit = make_proc "cinit" [];
+ Asm.make_meth ~args:args (member name) @@ generate_expr body e)) :: ctx.methods})
+ {init = make_proc (member "init") prefix;
+ cinit = make_proc (member "cinit") [];
methods = []} body in
let klass = {
Asm.cname = name';
let traits_class =
ExtList.List.mapi
(fun i {Abc.name_i=name} ->
- {Abc.t_name=name; data=Abc.ClassTrait (i,i)})
+ {Abc.t_name=name; data=Abc.ClassTrait (i+1,i)})
instance_info in
{ Abc.cpool=cpool;
method_info=info;
sname = make_qname "Object";
flags_k = [Asm.Sealed];
attributes = [];
- cinit = Asm.make_proc "cinit" [];
- iinit = Asm.make_proc "init" @@ prefix@[PushByte 10];
+ cinit = Asm.make_proc "Foo::cinit" [];
+ iinit = Asm.make_proc "Foo::init" @@ prefix@[PushByte 10];
interface = [];
methods = []})
(generate_script @@ compile_string
sname = make_qname "Object";
flags_k = [Asm.Sealed];
attributes = [];
- cinit = Asm.make_proc "cinit" [];
- iinit = Asm.make_proc "init" prefix;
+ cinit = Asm.make_proc "Foo::cinit" [];
+ iinit = Asm.make_proc "Foo::init" prefix;
interface = [];
methods = []})
(generate_script @@ compile_string "(define-class Foo (Object) ())")
sname = make_qname "Object";
flags_k = [Asm.Sealed];
attributes = [];
- cinit = Asm.make_proc "cinit" [];
- iinit = Asm.make_proc "init" prefix;
+ cinit = Asm.make_proc "Foo::cinit" [];
+ iinit = Asm.make_proc "Foo::init" prefix;
interface = [];
- methods = [Asm.make_meth "f" [PushByte 42]]})
+ methods = [Asm.make_meth "Foo::f" [PushByte 42]]})
(generate_script @@ compile_string
"(define-class Foo (Object) ())
(define-method f ((self Foo)) 42)")
sname = make "flash.text" "Object";
flags_k = [Asm.Sealed];
attributes = [];
- cinit = Asm.make_proc "cinit" [];
- iinit = Asm.make_proc "init" @@ prefix@[PushByte 10];
+ cinit = Asm.make_proc "Foo::cinit" [];
+ iinit = Asm.make_proc "Foo::init" @@ prefix@[PushByte 10];
interface = [];
methods = []})
(generate_script @@ compile_string
sname = make_qname "Object";
flags_k = [Asm.Sealed];
attributes = [];
- cinit = Asm.make_proc "cinit" [];
- iinit = Asm.make_proc "init" ~args:[0] @@ prefix@[GetLocal 1];
+ cinit = Asm.make_proc "Foo::cinit" [];
+ iinit = Asm.make_proc "Foo::init" ~args:[0] @@ prefix@[GetLocal 1];
interface = [];
methods = []})
(generate_script @@ compile_string
sname = make_qname "Object";
flags_k = [Asm.Sealed];
attributes = [];
- cinit = Asm.make_proc "cinit" [];
- iinit = Asm.make_proc "init" ~args:[] @@ prefix@[GetLocal 0];
+ cinit = Asm.make_proc "Foo::cinit" [];
+ iinit = Asm.make_proc "Foo::init" ~args:[] @@ prefix@[GetLocal 0];
interface = [];
methods = []})
(generate_script @@ compile_string
{Asm.cname = make_qname "Foo";
sname = make_qname "Object";
flags_k = [Asm.Sealed];
- cinit = Asm.make_proc "cinit" [];
- iinit = Asm.make_proc "init" prefix;
+ cinit = Asm.make_proc "Foo::cinit" [];
+ iinit = Asm.make_proc "Foo::init" prefix;
interface = [];
attributes = [];
- methods = [Asm.make_meth "f" ~args:[0] [GetLocal 1]]})
+ methods = [Asm.make_meth "Foo::f" ~args:[0] [GetLocal 1]]})
(generate_script @@ compile_string "(define-class Foo (Object) ())
(define-method f ((self Foo) x) x)")
{Asm.cname = make_qname "Foo";
sname = make_qname "Object";
flags_k = [Asm.Sealed];
- cinit = Asm.make_proc "cinit" [];
- iinit = Asm.make_proc "init" prefix;
+ cinit = Asm.make_proc "Foo::cinit" [];
+ iinit = Asm.make_proc "Foo::init" prefix;
interface = [];
attributes = [Cpool.make_qname "x";Cpool.make_qname "y"];
methods = []})