[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:33:59 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:33 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...
----------------------------------------------------------------------
Snaury - 08-07-06 14:33
----------------------------------------------------------------------
Aha! This behaviour occurs when parameter is optional
(ParameterInfo.IsOptional). In that case when method is called without
this parameter specified, compiler should pass Missing.Value as that
parameter. I think the easiest way to properly fix this would be adding a
new Missing to Literal variant...
Issue History
Date Modified Username Field Change
======================================================================
08-07-06 13:20 Snaury New Issue
08-07-06 14:00 Snaury Note Added: 0001401
08-07-06 14:33 Snaury Note Added: 0001402
======================================================================
More information about the bugs
mailing list