* Parse smali method parameter list. * e.g. "ILjava/lang/String;Z" -> ["I", "Ljava/lang/String;", "Z"]
(paramStr: string)
| 59 | * e.g. "ILjava/lang/String;Z" -> ["I", "Ljava/lang/String;", "Z"] |
| 60 | */ |
| 61 | function parseSmaliParams(paramStr: string): string[] { |
| 62 | const params: string[] = []; |
| 63 | let i = 0; |
| 64 | while (i < paramStr.length) { |
| 65 | let arrayPrefix = ""; |
| 66 | while (i < paramStr.length && paramStr[i] === "[") { |
| 67 | arrayPrefix += "["; |
| 68 | i++; |
| 69 | } |
| 70 | if (i >= paramStr.length) break; |
| 71 | |
| 72 | if (paramStr[i] === "L") { |
| 73 | const semi = paramStr.indexOf(";", i); |
| 74 | if (semi === -1) break; |
| 75 | params.push(arrayPrefix + paramStr.slice(i, semi + 1)); |
| 76 | i = semi + 1; |
| 77 | } else { |
| 78 | params.push(arrayPrefix + paramStr[i]); |
| 79 | i++; |
| 80 | } |
| 81 | } |
| 82 | return params; |
| 83 | } |
| 84 | |
| 85 | /** |
| 86 | * Parse a .method directive line and class context into SmaliMethod. |
no outgoing calls
no test coverage detected