[nem-en] Bugs in extension method implementation

Kamil Skalski kamil.skalski at gmail.com
Sun Aug 27 16:11:10 CEST 2006


Ok, I found the real cause of this bug. If Nemerle.Compiler is loaded
BEFORE Nemerle.dll, then when analyzing Nemerle.Compiler, the
extension attribute is not yet loaded.
The problem disappears, when Nemerle.dll occurs in command line before N.C.dll

I'm not sure what is the perfect way to solve this. For now I will
change the order of loading libraries in case of /greedy+  the
referenced libs should be loaded before the referencing one.

2006/8/26, Kamil Skalski <kamil.skalski at gmail.com>:
> Ok, could you try these binaries and give us the output:
> http://nemerle.org/~nazgul/temp/Nemerle.Compiler.dll
> http://nemerle.org/~nazgul/temp/Nemerle.dll
> http://nemerle.org/~nazgul/temp/Nemerle.Macros.dll
> http://nemerle.org/~nazgul/temp/Nemerle.MSBuild.Tasks.dll
>
> The MsBuild task does not reference Nemerle.dll any longer and there
> is a debug with information from which assembly is ExtensionAttribute
> loaded.
>
> 2006/8/26, vc <vc at rsdn.ru>:
> >    > Indeed, it fails with current boot/ version, but it works correctly
> >    > with out.stage3/ before your commit.
> >
> >    I not use boot/ncc.exe. I use compiled version of compiler. But I compile
> > it using MSBuild (Nemerle.sln).
> >
> >    > Well, this is strange, unless you compile using one compiler, but
> >    > referencing the other one, like:
> >    > boot/ncc.exe  utility.n -r out.stage3/Nemerle.Compiler
> >
> >    Probably it occurs because I compile a code from VS 2005.
> >
> >    > Could you try again with the version before patch and tell me how
> >    > exactly do I reproduce this error?
> >
> >    This is compilation log obtained from VS 2005.
> >    -----------------------------------------------------
> >    Target CoreCompile:
> >    C:\Program Files\Nemerle\ncc.exe /no-color /nowarn:1701,1702 /no-stdlib
> >    /define:DEBUG;TRACE /debug+
> >    /out:obj\Debug\Ext2.exe
> >    /target:exe Properties\AssemblyInfo.n Main.n
> >    /ref:"C:\Program Files\Nemerle\Nemerle.Compiler.dll"
> >    /ref:"C:\Program Files\Nemerle\Nemerle.dll"
> >    /ref:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll
> >    /ref:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll
> >    /ref:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll
> >
> >    D:\MyProjects\Tests\Nemerle\Ext2\Ext2\Main.n(5,14,5,28): error : there is
> > no member named `GetName' in Nemerle.Compiler.IMember with type ?
> >    -----------------------------------------------------
> >    C:\Program Files\Nemerle\ contains compilers binaries r6576 (compiled
> > from source, not boot).
> >
> >    > I don't like the patch, since IsDefined against assembly loaded into
> >    > SystemTypeCache is the *correct* (and probably fastest) way  to check
> >    > for attributes.
> >
> >    In my option ExtensionAttribute not usual attribute. As to speed... I do
> > not think, that it will affect performance. Not many of classes containing
> > extension methods. Against a background of time of loading of metadata it's
> > are nothing.
> >
> >
> >
> >
> > _______________________________________________
> > https://nemerle.org/mailman/listinfo/devel-en
> >
>
>
> --
> Kamil Skalski
> http://nazgul.omega.pl
>


-- 
Kamil Skalski
http://nazgul.omega.pl



More information about the devel-en mailing list