MCPcopy Create free account
hub / github.com/golang/mobile / parseJavaType

Method parseJavaType

internal/importers/java/java.go:1120–1175  ·  view source on GitHub ↗
(desc string)

Source from the content-addressed store, hash-verified

1118}
1119
1120func (j *Importer) parseJavaType(desc string) (*Type, int, error) {
1121 t := new(Type)
1122 var n int
1123 if desc == "" {
1124 return t, n, errors.New("empty type signature")
1125 }
1126 n++
1127 switch desc[0] {
1128 case 'Z':
1129 t.Kind = Boolean
1130 case 'B':
1131 t.Kind = Byte
1132 case 'C':
1133 t.Kind = Char
1134 case 'S':
1135 t.Kind = Short
1136 case 'I':
1137 t.Kind = Int
1138 case 'J':
1139 t.Kind = Long
1140 case 'F':
1141 t.Kind = Float
1142 case 'D':
1143 t.Kind = Double
1144 case 'L':
1145 var clsName string
1146 for i := n; i < len(desc); i++ {
1147 if desc[i] == ';' {
1148 clsName = strings.Replace(desc[n:i], "/", ".", -1)
1149 clsName = strings.Replace(clsName, "$", ".", -1)
1150 n += i - n + 1
1151 break
1152 }
1153 }
1154 if clsName == "" {
1155 return t, n, errors.New("missing ; in class type signature")
1156 }
1157 if clsName == "java.lang.String" {
1158 t.Kind = String
1159 } else {
1160 t.Kind = Object
1161 t.Class = clsName
1162 }
1163 case '[':
1164 et, n2, err := j.parseJavaType(desc[n:])
1165 if err != nil {
1166 return t, n, err
1167 }
1168 n += n2
1169 t.Kind = Array
1170 t.Elem = et
1171 default:
1172 return t, n, fmt.Errorf("invalid type signature: %s", desc)
1173 }
1174 return t, n, nil
1175}
1176
1177func initialUpper(s string) string {

Callers 2

scanVarMethod · 0.95
scanMethodMethod · 0.95

Calls 1

NewMethod · 0.80

Tested by

no test coverage detected