Skip to content

Macros: undefined method `block' for nil:NilClass #185

@jstepien

Description

@jstepien
$ cat Macros.mirah 
class Macros
  def initialize
    @foo = "It works."
  end

  macro def attr_reader(name_node)
    name = name_node.string_value
    quote {
      def `name`
        @`name`
      end
    }
  end

  attr_reader :foo
end

mirahc Macros.mirah with Mirah 0.0.11 and JRuby 1.6.7 works fine, however translating to Java causes a following error.

$ mirahc --java Macros.mirah 
Parsing...
  Macros.mirah
Inferring types...
Compiling...
  Macros.mirah
Macros.mirah:15: undefined method `block' for nil:NilClass
  attr_reader :foo
^^^^^^^^^^^^^^^^^^
Mirah::InternalCompilerError: undefined method `block' for nil:NilClass
             compile at mirah-0.0.11-java/lib/mirah/compiler/structure.rb:32
                send at org/jruby/RubyKernel.java:2084
  <Class:0x1de40494> at file:jruby-complete-1.6.7.jar!/META-INF/jruby.home/lib/ruby/1.8/delegate.rb:292
         maybe_store at mirah-0.0.11-java/lib/mirah/jvm/compiler/java_source.rb:351
                body at mirah-0.0.11-java/lib/mirah/jvm/compiler/java_source.rb:357
                body at mirah-0.0.11-java/lib/mirah/jvm/compiler/base.rb:212
                body at mirah-0.0.11-java/lib/mirah/jvm/compiler/java_source.rb:356
             compile at mirah-0.0.11-java/lib/mirah/compiler/structure.rb:21
         maybe_store at mirah-0.0.11-java/lib/mirah/jvm/compiler/java_source.rb:351
                body at mirah-0.0.11-java/lib/mirah/jvm/compiler/java_source.rb:357
                body at mirah-0.0.11-java/lib/mirah/jvm/compiler/base.rb:212
                body at mirah-0.0.11-java/lib/mirah/jvm/compiler/java_source.rb:356
             compile at mirah-0.0.11-java/lib/mirah/compiler/structure.rb:21
        define_class at mirah-0.0.11-java/lib/mirah/jvm/compiler/java_source.rb:65
                with at mirah-0.0.11-java/lib/mirah/jvm/compiler/base.rb:260
        define_class at mirah-0.0.11-java/lib/mirah/jvm/compiler/java_source.rb:61
             compile at mirah-0.0.11-java/lib/mirah/compiler/class.rb:20
         maybe_store at mirah-0.0.11-java/lib/mirah/jvm/compiler/java_source.rb:351
                body at mirah-0.0.11-java/lib/mirah/jvm/compiler/java_source.rb:357
                body at mirah-0.0.11-java/lib/mirah/jvm/compiler/base.rb:212
                body at mirah-0.0.11-java/lib/mirah/jvm/compiler/java_source.rb:356
             compile at mirah-0.0.11-java/lib/mirah/compiler/structure.rb:21
         define_main at mirah-0.0.11-java/lib/mirah/jvm/compiler/base.rb:94
             compile at mirah-0.0.11-java/lib/mirah/compiler/structure.rb:50
         compile_ast at mirah-0.0.11-java/lib/mirah/compiler.rb:49
        compile_asts at mirah-0.0.11-java/lib/mirah/compiler.rb:40
                each at org/jruby/RubyArray.java:1615
        compile_asts at mirah-0.0.11-java/lib/mirah/compiler.rb:38
            generate at mirah-0.0.11-java/lib/mirah/generator.rb:38
             execute at mirah-0.0.11-java/lib/mirah/commands/compile.rb:26
        execute_base at mirah-0.0.11-java/lib/mirah/commands/base.rb:44
               catch at org/jruby/RubyKernel.java:1183
        execute_base at mirah-0.0.11-java/lib/mirah/commands/base.rb:42
             execute at mirah-0.0.11-java/lib/mirah/commands/compile.rb:23
             compile at mirah-0.0.11-java/lib/mirah.rb:40
              (root) at mirah-0.0.11-java/bin/mirahc:27
                load at org/jruby/RubyKernel.java:1058
              (root) at mirahc:19

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions