Как дальше жить?
Путем отрезания кусков кода было локализовано до вот такого маленького куска:
using Nemerle;
using Nemerle.Collections;
using Nemerle.Text;
using Nemerle.Utility;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Data.SqlClient;
namespace Asd
{
public class ClassA
{
protected static КэшКоманд : Dictionary[string, SqlCommand] = Dictionary(8);
}
public abstract class ClassB[TypeT] : ClassA
{
private static ПолучитьКомВыборкиЭлем(_именаПолейКлюча : array[string]) : SqlCommand
{
mutable команда;
unless( КэшКоманд.TryGetValue("asd", out команда) ) {
команда = SqlCommand();
}
команда;
}
}
}
C:\Program Files (x86)\Nemerle\Net-4.0\Nemerle.MSBuild.targets(219,9): error : internal compiler error: got ArgumentException (Заданное поле должно быть объявлено в определении базового типа.
Имя параметра: field)
в System.Reflection.Emit.TypeBuilder.GetField(Type type, FieldInfo field)
в Nemerle.Compiler.ILEmitter.FrameworkGetField(Type t, FieldInfo m)
в Nemerle.Compiler.ILEmitter.GetFieldInfo(Type _from_type, IField meth)
в Nemerle.Compiler.ILEmitter.emit(TExpr expr)
в Nemerle.Compiler.ILEmitter.emit_and_convert_to_address(TExpr base_object)
в Nemerle.Compiler.ILEmitter.emit(TExpr expr)
в Nemerle.Compiler.ILEmitter.emit_debug_info(DebugInfo di)
в Nemerle.Compiler.ILEmitter.emit(TExpr expr)
в Nemerle.Compiler.ILEmitter.emit_exprs_push(LocalBuilder[] local_variables, list`1 exprs)
в Nemerle.Compiler.ILEmitter._N_emit_branch_72080(_N_closure_71914 _N_emit_cp_72079, TExpr expr, Label else_label, Location debug_loc)
в Nemerle.Compiler.ILEmitter.emit(TExpr expr)
в Nemerle.Compiler.ILEmitter.emit(TExpr expr)
в Nemerle.Compiler.ILEmitter.emit_debug_info(DebugInfo di)
в Nemerle.Compiler.ILEmitter.emit(TExpr expr)
в Nemerle.Compiler.ILEmitter.emit(TExpr expr)
в Nemerle.Compiler.ILEmitter.emit(TExpr expr)
в Nemerle.Compiler.ILEmitter.emit_debug_info(DebugInfo di)
в Nemerle.Compiler.ILEmitter.emit(TExpr expr)
в Nemerle.Compiler.ILEmitter.emit(TExpr expr)
в Nemerle.Compiler.ILEmitter.Run()
в Nemerle.Compiler.MethodBuilder._N__N_lambda__67615__67722.apply_void()
в Nemerle.Compiler.TypeBuilder.BeforeFinalizeType()
в Nemerle.Compiler.TypeBuilder.EmitImplementation()
в Nemerle.Compiler.TypesManager._N_emit_impl__60297.apply_void(TypeBuilder ti)
в Nemerle.Compiler.TypesManager._N_maybe_f__60540.apply_void(TypeBuilder ti)
в Nemerle.Collections.NList.Iter[T](list`1 l, FunctionVoid`1 f)
в Nemerle.Compiler.TypesManager.Iter(list`1 builders, FunctionVoid`1 f)
в Nemerle.Compiler.TypesManager.compile_all_tyinfos(Boolean aux_phase)
в Nemerle.Compiler.TypesManager._N__N_lambda__59721__59824.apply_void()
в Nemerle.Compiler.Solver.Enqueue(FunctionVoid action)
в Nemerle.Compiler.ManagerClass.Run()
в Nemerle.CommandlineCompiler.MainClass.main_with_catching()
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Здравствуйте, _d_m_, Вы писали:
___>...
___> public class ClassB[TypeT] : ClassA
___> {
...
___> }
___>}
___>
abstract можно тоже убрать, ошибка та же.
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Так компилируется:
unless( ClassA.КэшКоманд.TryGetValue("asd", out команда) ) {
Здравствуйте, Don Reba, Вы писали:
DR>Так компилируется:
DR>DR> unless( ClassA.КэшКоманд.TryGetValue("asd", out команда) ) {
DR>
Похоже баг.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Don Reba, Вы писали:
DR>>Так компилируется:
DR>>DR>> unless( ClassA.КэшКоманд.TryGetValue("asd", out команда) ) {
DR>>
VD>Похоже баг.
Заиссуил сразу же.
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>