[nem-en] expresion level macro to define methods

Igor Tkachev it at rsdn.ru
Sat Nov 18 00:29:43 CET 2006


Hello Kamil,

I confirm there is problem with attributes in quotation.
Yesterday I added DebuggerStepThrough attribute in the Accessor macro
(it's still there). It's simply ignored.



Friday, November 17, 2006, 2:16:06 PM, you wrote:

> Kamil Skalski wrote:
>> Which version of compiler are you using? If it is with svn, then you
>> should file a bug report.

> I used 0.9.3.

> I just checked that it works properly with the compiler built from the
> latest source.

>> As a workaround you shoud be able to use:
>>
>> def mem_builder =
>> Nemerle.Macros.ImplicitCTX().CurrentType.DefineAndReturn(a_test);
>> mem_builder.GetModifiers().AddCustomAttribute (<[ Test ]>);

> That didn't help; still no attribute on the method. But, as I wrote 
> above, it is all fine with the compiler from the latest revision.

> Kamil Dworakowski
>>
>> On 11/17/06, Kamil Dworakowski
>> <kamil.dworakowski at googlemail.com> wrote:
>>> It works fine except that it ignores attributes I define for my method.
>>> I want the method to have [Test] attribute, but it gets lost somehow.
>>> Why?
>>>
>>>  def a_test = <[
>>>             decl: [Test] public testSth(): void  {
>>>                 Assert.IsTrue(false);
>>>             }
>>>         ]>;
>>>         Nemerle.Macros.ImplicitCTX().CurrentType.Define(a_test);
>>>
>>> Kamil Dworakowski
>>>
>>>
>>> Kamil Skalski wrote:
>>> > Yes,
>>> >
>>> > macro MarkWithMy (expr) {
>>> >  Nemerle.Macros.ImplicitCTX().CurrentType.Define ( <[ decl:
>>> >     public MyGeneratedMethod (x : int) : int {
>>> >         x + $expr
>>> >     }
>>> >  ]>);
>>> >  <[ () ]>
>>> > }
>>> >
>>> > but probably if you tried using this method in compilation of current
>>> > class/method (for other classes it might be even more indeterministic
>>> > ;) ), like
>>> >
>>> > macro MarkWithMy (expr) {
>>> >  Nemerle.Macros.ImplicitCTX().CurrentType.Define ( <[ decl:
>>> >     public MyGeneratedMethod (x : int) : int {
>>> >         x + $expr
>>> >     }
>>> >  ]>);
>>> >  <[ MyGeneratedMethod(1) ]>
>>> > }
>>> >
>>> > you might get strange problems...
>>> >
>>> > On 11/17/06, Kamil Dworakowski
>>> <kamil.dworakowski at googlemail.com> 
>>> wrote:
>>> >> Is it possible for an expresion lvl macro to define a method on the
>>> >> enclosing class?
>>> >>
>>> >> Kamil Dworakowski
>>> >>
>>> >> _______________________________________________
>>> >> https://nemerle.org/mailman/listinfo/devel-en
>>> >>
>>> >
>>> >
>>>
>>>
>>> _______________________________________________
>>> https://nemerle.org/mailman/listinfo/devel-en
>>>
>>
>>


> _______________________________________________
> https://nemerle.org/mailman/listinfo/devel-en
 



-- 
Best regards,
 Igor                            mailto:it at rsdn.ru





More information about the devel-en mailing list