Компилятор отказывается это кушать
От: _Claus_  
Дата: 27.11.11 06:59
Оценка:
Всем привет! Имею метод, который формирует куски контекстного кода, чтобы потом сложить в генерируемый метод

 public create_string_prop() : void 
              
      mutable string_save_blocks = typeBuilder.UserData["data"] :> list[PExpr]            
      
      when (string_save_blocks == null)
        
        string_save_blocks = []
          
      //проблема здесь, указание ttype помогает убрать другие ошибки
      typeBuilder.UserData["data"] = \
      <[ttype:  
          when ($(has_saved : usesite))
      {
          datamap.write_string($(private_ref : usesite), exchange.$(fld_name : name)) 
                            
          $(has_saved : usesite) = false
      }
    ]> :: string_save_blocks 
      ...



компилятор отказывается это кушать, буйно ругаясь
C:\MyProjects\DBLib\DBLib\Macro1.n(147,9): error : Internal compiler error 'quoted code not supported: when ($((has_saved : usesite)))
{
datamap.write_string($((private_ref : usesite)), exchange.$((fld_name : name))) $ (has_saved : usesite) = false
}', please report a bug to bugs.nemerle.org. You can try modifying program near this location.
C:\Program Files\Nemerle\Net-4.0\Nemerle.MSBuild.targets(219,9): error : internal compiler error: assertion failed in file ncc\typing\Macros.n, line 603: quoted code not supported: when ($((has_saved : usesite)))
{
datamap.write_string($((private_ref : usesite)), exchange.$((fld_name : name))) $ (has_saved : usesite) = false
}
в Nemerle.Compiler.Macros.quoted_ttype(PExpr t) в C:\MyProjects\rsdn-nemerle-25424df\ncc\typing\Macros.n:строка 603
в Nemerle.Compiler.Typer.DoType(PExpr expression, TypeVar expected, Boolean is_toplevel_in_seq) в C:\MyProjects\rsdn-nemerle-25424df\ncc\typing\Typer.n:строка 2256
в Nemerle.Compiler.Typer.TypeExpr(PExpr expr, TypeVar expected, Boolean is_toplevel_in_seq) в C:\MyProjects\rsdn-nemerle-25424df\ncc\typing\Typer.n:строка 1397
в Nemerle.Compiler.Typer.TypeExpr(PExpr e, TypeVar expected) в C:\MyProjects\rsdn-nemerle-25424df\ncc\typing\Typer.n:строка 1366
в Nemerle.Compiler.Typer._N_refout_110734(_N_closure_110726 _N_TypeCall_cp_110733, String name, PExpr expr) в C:\MyProjects\rsdn-nemerle-25424df\ncc\typing\Typer.n:строка 3696
в Nemerle.Compiler.Typer._N_compile_parm__110746.apply(PExpr p) в C:\MyProjects\rsdn-nemerle-25424df\ncc\typing\Typer.n:строка 3714
в Nemerle.Collections.NList.Map[T,TOut](list`1 lst, Function`2 convert) в C:\MyProjects\rsdn-nemerle-25424df\lib\list.n:строка 938
в Nemerle.Core.list`1.Map[TOut](Function`2 convert) в C:\MyProjects\rsdn-nemerle-25424df\lib\list.n:строка 329
в Nemerle.Compiler.Typer.TypeCall(PExpr pfnc, list`1 parms, TypeVar expected, Boolean is_property) в C:\MyProjects\rsdn-nemerle-25424df\ncc\typing\Typer.n:строка 3717
в Nemerle.Compiler.Typer.DoType(PExpr expression, TypeVar expected, Boolean is_toplevel_in_seq) в C:\MyProjects\rsdn-nemerle-25424df\ncc\typing\Typer.n:строка 2004
в Nemerle.Compiler.Typer.TypeExpr(PExpr expr, TypeVar expected, Boolean is_toplevel_in_seq) в C:\MyProjects\rsdn-nemerle-25424df\ncc\typing\Typer.n:строка 1397
в Nemerle.Compiler.Typer.TypeExpr(PExpr e, TypeVar expected) в C:\MyProjects\rsdn-nemerle-25424df\ncc\typing\Typer.n:строка 1366
в Nemerle.Compiler.Typer.TypeExpr(PExpr e) в C:\MyProjects\rsdn-nemerle-25424df\ncc\typing\Typer.n:строка 1361
в Nemerle.Compiler.Typer.DoType(PExpr expression, TypeVar expected, Boolean is_toplevel_in_seq) в C:\MyProjects\rsdn-nemerle-25424df\ncc\typing\Typer.n:строка 2036
в Nemerle.Compiler.Typer.TypeExpr(PExpr expr, TypeVar expected, Boolean is_toplevel_in_seq) в C:\MyProjects\rsdn-nemerle-25424df\ncc\typing\Typer.n:строка 1397
в Nemerle.Compiler.Typer.TypeExpr(PExpr e, TypeVar expected) в C:\MyProjects\rsdn-nemerle-25424df\ncc\typing\Typer.n:строка 1366
в Nemerle.Compiler.Typer.DoType(PExpr expression, TypeVar expected, Boolean is_toplevel_in_seq) в C:\MyProjects\rsdn-nemerle-25424df\ncc\typing\Typer.n:строка 2172
в Nemerle.Compiler.Typer.TypeExpr(PExpr expr, TypeVar expected, Boolean is_toplevel_in_seq) в C:\MyProjects\rsdn-nemerle-25424df\ncc\typing\Typer.n:строка 1397
в Nemerle.Compiler.Typer.TypeExpr(PExpr e, TypeVar expected) в C:\MyProjects\rsdn-nemerle-25424df\ncc\typing\Typer.n:строка 1366
в Nemerle.Compiler.Typer.RunTyper() в C:\MyProjects\rsdn-nemerle-25424df\ncc\typing\Typer.n:строка 408
в Nemerle.Compiler.Typer.RunFullTyping() в C:\MyProjects\rsdn-nemerle-25424df\ncc\typing\Typer.n:строка 248
в Nemerle.Compiler.MethodBuilder.RunBodyTyper() в C:\MyProjects\rsdn-nemerle-25424df\ncc\hierarchy\ClassMembers.n:строка 932
в Nemerle.Compiler.MethodBuilder.Compile() в C:\MyProjects\rsdn-nemerle-25424df\ncc\generation\HierarchyEmitter.n:строка 1115
в Nemerle.Compiler.TypeBuilder.EmitImplementation() в C:\MyProjects\rsdn-nemerle-25424df\ncc\generation\HierarchyEmitter.n:строка 653
в Nemerle.Compiler.TypesManager._N_emit_impl__58456.apply_void(TypeBuilder ti) в C:\MyProjects\rsdn-nemerle-25424df\ncc\generation\HierarchyEmitter.n:строка 370
в Nemerle.Compiler.TypesManager._N_maybe_f__58691.apply_void(TypeBuilder ti) в C:\MyProjects\rsdn-nemerle-25424df\ncc\hierarchy\TypesManager.n:строка 257
в Nemerle.Collections.NList.Iter[T](list`1 l, FunctionVoid`1 f) в C:\MyProjects\rsdn-nemerle-25424df\lib\list.n:строка 926
в Nemerle.Core.list`1.Iter(FunctionVoid`1 f) в C:\MyProjects\rsdn-nemerle-25424df\lib\list.n:строка 317
в Nemerle.Compiler.TypesManager.Iter(list`1 builders, FunctionVoid`1 f) в C:\MyProjects\rsdn-nemerle-25424df\ncc\hierarchy\TypesManager.n:строка 264
в Nemerle.Compiler.TypesManager.Iter(FunctionVoid`1 f) в C:\MyProjects\rsdn-nemerle-25424df\ncc\hierarchy\TypesManager.n:строка 275
в Nemerle.Compiler.TypesManager.compile_all_tyinfos(Boolean aux_phase) в C:\MyProjects\rsdn-nemerle-25424df\ncc\generation\HierarchyEmitter.n:строка 397
в Nemerle.Compiler.TypesManager._N__N_lambda__57878__57982.apply_void() в C:\MyProjects\rsdn-nemerle-25424df\ncc\generation\HierarchyEmitter.n:строка 240
в Nemerle.Compiler.Solver.Enqueue(FunctionVoid action) в C:\MyProjects\rsdn-nemerle-25424df\ncc\typing\Solver.n:строка 199
в Nemerle.Compiler.TypesManager.EmitDecls() в C:\MyProjects\rsdn-nemerle-25424df\ncc\generation\HierarchyEmitter.n:строка 239
в Nemerle.Compiler.ManagerClass.Run() в C:\MyProjects\rsdn-nemerle-25424df\ncc\passes.n:строка 608
в Nemerle.CommandlineCompiler.MainClass.main_with_catching() в C:\MyProjects\rsdn-nemerle-25424df\ncc\main.n:строка 130
Построение проекта "DBLib.nproj" завершено с ошибкой.

как жить, что делать?



27.11.11 20:49: Ветка выделена из темы вопрос по метапрограммированию
Автор: _Claus_
Дата: 24.11.11
— VladD2
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.