nemerle icon indicating copy to clipboard operation
nemerle copied to clipboard

Define class property in expression level macro

Open Ziaw opened this issue 12 years ago • 0 comments

  public macro Macro1()
  {
      Test.test(ImplicitCTX());
      <[]>
  }

  module Test
  {
    public test(t: Typer): void
    {
        t.CurrentTypeBuilder.Define(
            <[decl: Prop : int { get {1} } ]>
        );
    }
  }

throws ICE on usage

C:\Program Files\Nemerle\Net-4.0\Nemerle.MSBuild.targets(289,5): error : internal compiler error: assertion ``method_base != null && !method_base.IsConstructor'' failed in file ncc\hierarchy\ClassMembers.n, line 905: Program.get_Prop
           в Nemerle.Compiler.MethodBuilder.GetMethodInfo()
           в Nemerle.Compiler.PropertyBuilder.Compile()
           в Nemerle.Compiler.TypesManager._N__N_lambda__61444__61460.apply_void()
           в Nemerle.Compiler.TypeBuilder.BeforeFinalizeType()
           в Nemerle.Compiler.TypeBuilder.EmitImplementation()
           в Nemerle.Compiler.TypesManager._N_emit_impl__61365.apply_void(TypeBuilder ti)
           в Nemerle.Compiler.TypesManager._N_maybe_f__61616.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__60789__60892.apply_void()
           в Nemerle.Compiler.Solver.Enqueue(FunctionVoid action)
           в Nemerle.Compiler.TypesManager.EmitDecls()
           в Nemerle.Compiler.ManagerClass.Run()
           в Nemerle.CommandlineCompiler.MainClass.main_with_catching()

But defining field or method works properly.

Ziaw avatar Apr 08 '13 08:04 Ziaw