On 27 Aug 2014, at 17:53, Camille Teruel <camille.teruel@gmail.com> wrote:

Hi all,

With Opal, if you want to customize how methods are compiled into a class you can override #compilerClass on class-side:
MyClass class>>#compilerClass
^ MySpecialCompiler


I�ve missed this feature. This is super cool!

However this custom compiler is not taken into account when compiling methods on the class-side:
MyClass class compilerClass ---> OpalCompiler
I was expecting to have the same compiler class for the metaclass. The consequence is that right now there is no way to specialize how methods are compiled in *one* metaclass.
Is it on purpose or is it a bug? 

Also is there cases where one wants instance-side methods and class-side methods to be compiled with different compiler classes?
My rough guess is that in most cases you want the same compiler class, but I don't fell confortable forcing that.
So I propose to add a method #classSideCompilerClass:
Class>>#classSideCompilerClass
^ self compilerClass

Then compilerClass can be implemented for metaclasses:
Metaclass>>#compilerClass
^ self instanceSide classSideCompilerClass

Likewise, if I override compilerClass, it is taken into account for both instance-side and class-side methods but I can still say that I want a different compiler for class-side methods by overriding classSideCompilerClass. Tell me what you think about it and if you're ok, I open a bug entry with the slice.

Cheers,
Camille