Class: Mirah::JVM::Types::JavaConstructor

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

Direct Known Subclasses

JavaMethod

Instance Attribute Summary

Attributes inherited from JavaCallable

#member

Instance Method Summary collapse

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



237
238
239
# File 'lib/mirah/jvm/types/methods.rb', line 237

def accept(visitor, expression)
  visitor.visitConstructor(self, expression)
end

#argument_typesObject



179
180
181
182
183
184
185
186
187
# File 'lib/mirah/jvm/types/methods.rb', line 179

def argument_types
  @argument_types ||= @member.argument_types.map do |arg|
    if arg.kind_of?(Type) || arg.nil?
      arg
    else
      @types.type(nil, arg)
    end
  end
end

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



211
212
213
214
215
216
217
218
219
220
221
222
223
# File 'lib/mirah/jvm/types/methods.rb', line 211

def call(compiler, ast, expression, parameters=nil, delegate=false)
  target = compiler.inferred_type(ast.target)
  unless delegate
    compiler.method.new target
    compiler.method.dup if expression
  end
  parameters ||= ast.parameters
  convert_args(compiler, parameters)
  compiler.method.invokespecial(
    target,
    "<init>",
    [nil, *@member.argument_types])
end

#constructor?Boolean

Returns:

  • (Boolean)


225
226
227
# File 'lib/mirah/jvm/types/methods.rb', line 225

def constructor?
  true
end

#declaring_classObject



203
204
205
# File 'lib/mirah/jvm/types/methods.rb', line 203

def declaring_class
  @types.type(nil, @member.declaring_class)
end

#exceptionsObject



193
194
195
196
197
198
199
200
201
# File 'lib/mirah/jvm/types/methods.rb', line 193

def exceptions
  @member.exception_types.map do |exception|
    if exception.kind_of?(Mirah::Typer::ResolvedType)
      exception
    else
      @types.type(nil, exception.class_name)
    end
  end
end

#isVarargObject



233
234
235
# File 'lib/mirah/jvm/types/methods.rb', line 233

def isVararg
  varargs?
end

#kindObject



241
242
243
# File 'lib/mirah/jvm/types/methods.rb', line 241

def kind
  Java::OrgMirahJvmTypes::MemberKind::CONSTRUCTOR
end

#return_typeObject



189
190
191
# File 'lib/mirah/jvm/types/methods.rb', line 189

def return_type
  declaring_class
end

#type_parametersObject



207
208
209
# File 'lib/mirah/jvm/types/methods.rb', line 207

def type_parameters
  @declaring_class and @declaring_class.jvm_type.type_parameters
end

#varargs?Boolean

Returns:

  • (Boolean)


229
230
231
# File 'lib/mirah/jvm/types/methods.rb', line 229

def varargs?
  @member.varargs?
end