[nem-bug] [Nemerle 0000731]: Compiler ices when trying to use OfficeXP interop assemblies

feedback at nemerle.org feedback at nemerle.org
Mon Aug 7 14:00:11 CEST 2006


A NOTE has been added to this issue.
======================================================================
<http://nemerle.org/bugs/view.php?id=731> 
======================================================================
Reported By:                Snaury
Assigned To:                
======================================================================
Project:                    Nemerle
Issue ID:                   731
Category:                   Compiler
Reproducibility:            always
Severity:                   major
Priority:                   normal
Status:                     new
======================================================================
Date Submitted:             08-07-2006 13:20 CEST
Last Modified:              08-07-2006 14:00 CEST
======================================================================
Summary:                    Compiler ices when trying to use OfficeXP interop
assemblies
Description: 
Example code:

// REFERENCE: C:\Program Files\Microsoft.NET\Primary Interop
Assemblies\OfficeXP\Microsoft.Office.Interop.Excel.dll
using Microsoft.Office.Interop;

def xlApp = Excel.ApplicationClass();
xlApp.UserControl = true;
xlApp.Visible = true;

Produces this output:

ncc.exe -no-color {-r:C:\Program Files\Microsoft.NET\Primary Interop
Assemblies\OfficeXP\Microsoft.Office.Interop.Excel.dll}
-out:_bug_missing.exe _bug_missing.n
_bug_missing.n:4:13:4:35: debug: Internal compiler error, please report a
bug to bugs.nemerle.org. You can try modifying program near this
location.
error: internal compiler error: assertion failed in file parsing/AST.n,
line 676:
cannot create literal from System.Reflection.Missing
   at Nemerle.Compiler.Literal.FromObject(Object o) in
h:\Alex\mine\svn\Nemerle-current\ncc\parsing\AST.n:line 676
   at
Nemerle.Compiler.LibraryReference.MethodInfo._N_mkparm_23301.apply(ParameterInfo
_N_23300) in
h:\Alex\mine\svn\Nemerle-current\ncc\external\LibrariesLoader.n:line 1886
   at Nemerle.Collections.List.MapFromArray['a,'b]('a[] x, Function`2 f)
in h:\Alex\mine\svn\Nemerle-current\lib\list.n:line 875
   at Nemerle.Compiler.LibraryReference.MethodInfo..ctor(Map`2 tenv,
LibraryReference lib, MethodBase h) in
h:\Alex\mine\svn\Nemerle-current\ncc\external\LibrariesLoader.n:line 1906
   at Nemerle.Compiler.LibraryReference.MethodOfMethodInfo(Map`2 tenv,
MethodInfo meth) in
h:\Alex\mine\svn\Nemerle-current\ncc\external\LibrariesLoader.n:line 662
   at Nemerle.Compiler.LibraryReference.NetProperty..ctor(Map`2 tenv,
LibraryReference lib, PropertyInfo h) in
h:\Alex\mine\svn\Nemerle-current\ncc\external\LibrariesLoader.n:line 1700
   at
Nemerle.Compiler.LibraryReference.NetType.imember_of_memberinfo(MemberInfo
m) in h:\Alex\mine\svn\Nemerle-current\ncc\external\LibrariesLoader.n:line
1256
   at Nemerle.Compiler.LibraryReference.NetType.collect_members() in
h:\Alex\mine\svn\Nemerle-current\ncc\external\LibrariesLoader.n:line 1284
   at Nemerle.Compiler.LibraryReference.NetType.LookupMemberImpl(String
name) in
h:\Alex\mine\svn\Nemerle-current\ncc\external\LibrariesLoader.n:line 1326
   at Nemerle.Compiler.TypeInfo.LookupMember(String name, Boolean
for_completion) in
h:\Alex\mine\svn\Nemerle-current\ncc\hierarchy\TypeInfo.n:line 560
   at Nemerle.Compiler.Typer.TypeToConstructor(PExpr pt_from, TypeInfo t)
in h:\Alex\mine\svn\Nemerle-current\ncc\typing\Typer.n:line 2042
   at Nemerle.Compiler.Typer.InterpretGlobal(PExpr pt_from, IMember
symbol) in h:\Alex\mine\svn\Nemerle-current\ncc\typing\Typer.n:line 2204
   at Nemerle.Compiler.Typer.InterpretGlobals(PExpr pt_from, list`1
symbols, TyVar expected, Boolean dump_errors) in
h:\Alex\mine\svn\Nemerle-current\ncc\typing\Typer.n:line 2273
   at Nemerle.Compiler.Typer.TypeNameFull(PExpr expr, TyVar expected,
Boolean for_completion) in
h:\Alex\mine\svn\Nemerle-current\ncc\typing\Typer.n:line 2551
   at Nemerle.Compiler.Typer.TypeName(PExpr expr, TyVar expected) in
h:\Alex\mine\svn\Nemerle-current\ncc\typing\Typer.n:line 2574
   at Nemerle.Compiler.Typer._N__N_l65320_65685.apply() in
h:\Alex\mine\svn\Nemerle-current\ncc\typing\Typer.n:line 1351
   at Nemerle.Compiler.Typer.TryTyping(Function`1 fn) in
h:\Alex\mine\svn\Nemerle-current\ncc\typing\Typer.n:line 581
   at Nemerle.Compiler.Typer.DoType(PExpr expression, TyVar expected,
Boolean is_toplevel_in_seq) in
h:\Alex\mine\svn\Nemerle-current\ncc\typing\Typer.n:line 1351
   at Nemerle.Compiler.Typer.TypeExpr(PExpr e, TyVar expected, Boolean
is_toplevel_in_seq) in
h:\Alex\mine\svn\Nemerle-current\ncc\typing\Typer.n:line 1024
   at Nemerle.Compiler.Typer.TypeExpr(PExpr e, TyVar expected) in
h:\Alex\mine\svn\Nemerle-current\ncc\typing\Typer.n:line 1005
   at Nemerle.Compiler.Typer.TypeCall(PExpr fnc, list`1 parms, TyVar
expected, Boolean is_property) in
h:\Alex\mine\svn\Nemerle-current\ncc\typing\Typer.n:line 2874
   at Nemerle.Compiler.Typer.DoType(PExpr expression, TyVar expected,
Boolean is_toplevel_in_seq) in
h:\Alex\mine\svn\Nemerle-current\ncc\typing\Typer.n:line 1461
   at Nemerle.Compiler.Typer.TypeExpr(PExpr e, TyVar expected, Boolean
is_toplevel_in_seq) in
h:\Alex\mine\svn\Nemerle-current\ncc\typing\Typer.n:line 1024
   at Nemerle.Compiler.Typer.TypeExpr(PExpr e, TyVar expected) in
h:\Alex\mine\svn\Nemerle-current\ncc\typing\Typer.n:line 1005
   at Nemerle.Compiler.Typer.TypeLocalDefinition(Boolean is_mutable, Name
name, PExpr val) in
h:\Alex\mine\svn\Nemerle-current\ncc\typing\Typer.n:line 1691
   at Nemerle.Compiler.Typer.DoType(PExpr expression, TyVar expected,
Boolean is_toplevel_in_seq) in
h:\Alex\mine\svn\Nemerle-current\ncc\typing\Typer.n:line 1101
   at Nemerle.Compiler.Typer.TypeExpr(PExpr e, TyVar expected, Boolean
is_toplevel_in_seq) in
h:\Alex\mine\svn\Nemerle-current\ncc\typing\Typer.n:line 1024
   at Nemerle.Compiler.Typer.DoType(PExpr expression, TyVar expected,
Boolean is_toplevel_in_seq) in
h:\Alex\mine\svn\Nemerle-current\ncc\typing\Typer.n:line 1569
   at Nemerle.Compiler.Typer.TypeExpr(PExpr e, TyVar expected, Boolean
is_toplevel_in_seq) in
h:\Alex\mine\svn\Nemerle-current\ncc\typing\Typer.n:line 1024
   at Nemerle.Compiler.Typer.TypeExpr(PExpr e, TyVar expected) in
h:\Alex\mine\svn\Nemerle-current\ncc\typing\Typer.n:line 1005
   at Nemerle.Compiler.Typer.TypeExpr(PExpr e) in
h:\Alex\mine\svn\Nemerle-current\ncc\typing\Typer.n:line 999
   at Nemerle.Compiler.Typer.RunTyper() in
h:\Alex\mine\svn\Nemerle-current\ncc\typing\Typer.n:line 310
   at Nemerle.Compiler.Typer..ctor(MethodBuilder m) in
h:\Alex\mine\svn\Nemerle-current\ncc\typing\Typer.n:line 131
   at Nemerle.Compiler.MethodBuilder.RunBodyTyper() in
h:\Alex\mine\svn\Nemerle-current\ncc\hierarchy\ClassMembers.n:line 684
   at Nemerle.Compiler.MethodBuilder.Compile() in
h:\Alex\mine\svn\Nemerle-current\ncc\generation\HierarchyEmitter.n:line
987
   at Nemerle.Compiler.TypeBuilder.EmitImplementation() in
h:\Alex\mine\svn\Nemerle-current\ncc\generation\HierarchyEmitter.n:line
574
   at
Nemerle.Compiler.TypesManager._N_emit_impl_25079.apply_void(TypeBuilder
_N_25078) in
h:\Alex\mine\svn\Nemerle-current\ncc\generation\HierarchyEmitter.n:line
321
   at
Nemerle.Compiler.TypesManager._N_maybe_f_25526.apply_void(TypeBuilder
_N_25525) in
h:\Alex\mine\svn\Nemerle-current\ncc\hierarchy\TypesManager.n:line 217
   at Nemerle.Collections.List.Iter['a](list`1 l, FunctionVoid`1 f) in
h:\Alex\mine\svn\Nemerle-current\lib\list.n:line 837
   at Nemerle.Core.list`1.Iter(FunctionVoid`1 f) in
h:\Alex\mine\svn\Nemerle-current\lib\list.n:line 279
   at Nemerle.Compiler.TypesManager.Iter(list`1 builders, FunctionVoid`1
f) in h:\Alex\mine\svn\Nemerle-current\ncc\hierarchy\TypesManager.n:line
223
   at Nemerle.Compiler.TypesManager.Iter(FunctionVoid`1 f) in
h:\Alex\mine\svn\Nemerle-current\ncc\hierarchy\TypesManager.n:line 234
   at Nemerle.Compiler.TypesManager.compile_all_tyinfos(Boolean aux_phase)
in h:\Alex\mine\svn\Nemerle-current\ncc\generation\HierarchyEmitter.n:line
345
   at Nemerle.Compiler.TypesManager._N__N_l24657_24748.apply_void() in
h:\Alex\mine\svn\Nemerle-current\ncc\generation\HierarchyEmitter.n:line
210
   at Nemerle.Compiler.Solver.Enqueue(FunctionVoid action) in
h:\Alex\mine\svn\Nemerle-current\ncc\typing\Solver.n:line 196
   at Nemerle.Compiler.TypesManager.EmitDecls() in
h:\Alex\mine\svn\Nemerle-current\ncc\generation\HierarchyEmitter.n:line
209
   at Nemerle.Compiler.ManagerClass.Run() in
h:\Alex\mine\svn\Nemerle-current\ncc\passes.n:line 416
   at Nemerle.CommandlineCompiler.MainClass.main_with_catching() in
h:\Alex\mine\svn\Nemerle-current\ncc\main.n:line 86

error: child process exited abnormally
... while compiling _bug_missing.n
======================================================================

----------------------------------------------------------------------
 Snaury - 08-07-06 14:00 
----------------------------------------------------------------------
The easy workaround for this bug is to change code in
external/LibrariesLoader.n MethodInfo .ctor to filter Missing.Value as
well:

          when (deflt != System.DBNull.Value && deflt !=
System.Reflection.Missing.Value)
            fp.default_value = Some (Literal.FromObject (deflt));

I'm still not sure whether it is 100% correct though, because I suspect it
might be that compiler is asked to pass Missing.Value for optional
parameter in this way. I'm still determining what type and method has this
Missing.Value though...

Issue History
Date Modified  Username       Field                    Change              
======================================================================
08-07-06 13:20 Snaury         New Issue                                    
08-07-06 14:00 Snaury         Note Added: 0001401                          
======================================================================




More information about the bugs mailing list