Class: Mirah::JVM::Types::JavaFieldGetter

Inherits:
JavaFieldAccessor show all
Defined in:
lib/mirah/jvm/types/methods.rb

Instance Attribute Summary

Attributes inherited from JavaCallable

#member

Instance Method Summary collapse

Methods inherited from JavaFieldAccessor

#field?, #final?, #public?, #return_type

Methods inherited from JavaMethod

#abstract?, #call_special, #constructor?, #return_type, #static?, #type_parameters, #void?

Methods inherited from JavaConstructor

#constructor?, #declaring_class, #exceptions, #isVararg, #return_type, #type_parameters, #varargs?

Methods inherited from JavaCallable

#field?, #initialize, #name, #parameter_types, #synthetic?

Methods included from ArgumentConversion

#convert_args

Constructor Details

This class inherits a constructor from Mirah::JVM::Types::JavaCallable

Instance Method Details

#accept(visitor, expression) ⇒ Object



428
429
430
431
432
433
434
# File 'lib/mirah/jvm/types/methods.rb', line 428

def accept(visitor, expression)
  if self.static?
    visitor.visitStaticFieldAccess(self, expression)
  else
    visitor.visitFieldAccess(self, expression)
  end
end

#argument_typesObject



409
410
411
# File 'lib/mirah/jvm/types/methods.rb', line 409

def argument_types
  []
end

#call(compiler, ast, expression, parameters = nil) ⇒ Object



413
414
415
416
417
418
419
420
421
422
423
424
425
426
# File 'lib/mirah/jvm/types/methods.rb', line 413

def call(compiler, ast, expression, parameters=nil)
  target = compiler.inferred_type(ast.target)

  # TODO: assert that no args are being passed, though that should have failed lookup

  if expression
    if @member.static?
      compiler.method.getstatic(target, name, @member.type)
    else
      compiler.visit(ast.target, true)
      compiler.method.getfield(target, name, @member.type)
    end
  end
end

#kindObject



436
437
438
439
440
441
442
# File 'lib/mirah/jvm/types/methods.rb', line 436

def kind
  if self.static?
    Java::OrgMirahJvmTypes::MemberKind::STATIC_FIELD_ACCESS
  else
    Java::OrgMirahJvmTypes::MemberKind::FIELD_ACCESS
  end
end