46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
# File 'lib/bitescript/signature.rb', line 46
def class_id(cls)
return cls.descriptor if cls.kind_of?(BiteScript::ASM::Type)
return cls.type.descriptor if cls.kind_of?(BiteScript::ASM::ClassMirror)
cls = cls.java_class if Class === cls
if !cls || cls == java.lang.Void.java_class || Java::void == cls
return "V"
end
if Module === cls || Symbol === cls
return "L#{path(cls)};"
end
if cls.array?
cls = cls.component_type
if cls.primitive?
cls = cls.primitive_type if cls.respond_to? :primitive_type
case cls
when JavaTypes::Byte::TYPE
return "[B"
when JavaTypes::Boolean::TYPE
return "[Z"
when JavaTypes::Short::TYPE
return "[S"
when JavaTypes::Character::TYPE
return "[C"
when JavaTypes::Integer::TYPE
return "[I"
when JavaTypes::Long::TYPE
return "[J"
when JavaTypes::Float::TYPE
return "[F"
when JavaTypes::Double::TYPE
return "[D"
else
raise "Unknown type in compiler: #{cls.name}"
end
else
return "[#{class_id(cls)}"
end
else
if cls.primitive?
cls = cls.primitive_type if cls.respond_to? :primitive_type
case cls
when JavaTypes::Byte::TYPE
return "B"
when JavaTypes::Boolean::TYPE
return "Z"
when JavaTypes::Short::TYPE
return "S"
when JavaTypes::Character::TYPE
return "C"
when JavaTypes::Integer::TYPE
return "I"
when JavaTypes::Long::TYPE
return "J"
when JavaTypes::Float::TYPE
return "F"
when JavaTypes::Double::TYPE
return "D"
when JavaTypes::Void::TYPE, java.lang.Void
return "V"
else
raise "Unknown type in compiler: #{cls.name}"
end
else
return "L#{path(cls)};"
end
end
end
|