Class: Mirah::JVM::Types::JavaConstructor
Instance Attribute Summary
Attributes inherited from JavaCallable
#member
Instance Method Summary
collapse
#field?, #initialize, #name, #parameter_types, #synthetic?
#convert_args
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_types ⇒ Object
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
225
226
227
|
# File 'lib/mirah/jvm/types/methods.rb', line 225
def constructor?
true
end
|
#declaring_class ⇒ Object
203
204
205
|
# File 'lib/mirah/jvm/types/methods.rb', line 203
def declaring_class
@types.type(nil, @member.declaring_class)
end
|
#exceptions ⇒ Object
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
|
#isVararg ⇒ Object
233
234
235
|
# File 'lib/mirah/jvm/types/methods.rb', line 233
def isVararg
varargs?
end
|
#kind ⇒ Object
241
242
243
|
# File 'lib/mirah/jvm/types/methods.rb', line 241
def kind
Java::OrgMirahJvmTypes::MemberKind::CONSTRUCTOR
end
|
#return_type ⇒ Object
189
190
191
|
# File 'lib/mirah/jvm/types/methods.rb', line 189
def return_type
declaring_class
end
|
#type_parameters ⇒ Object
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
229
230
231
|
# File 'lib/mirah/jvm/types/methods.rb', line 229
def varargs?
@member.varargs?
end
|