MCPcopy Create free account
hub / github.com/FabricMC/Matcher / parse

Method parse

src/main/java/matcher/type/Signature.java:507–552  ·  view source on GitHub ↗
(String sig, ClassEnv env)

Source from the content-addressed store, hash-verified

505
506 public static final class MethodSignature implements PotentialComparable<MethodSignature> {
507 public static MethodSignature parse(String sig, ClassEnv env) {
508 // [<TypeParameter+>] '(' JavaTypeSignature* ')' ( 'V' | JavaTypeSignature ) ThrowsSignature*
509 MethodSignature ret = new MethodSignature();
510 MutableInt pos = new MutableInt();
511
512 if (sig.startsWith("<")) {
513 pos.val++;
514 ret.typeParameters = new ArrayList<>();
515
516 do {
517 ret.typeParameters.add(TypeParameter.parse(sig, pos, env));
518 } while (sig.charAt(pos.val) != '>');
519
520 pos.val++;
521 }
522
523 assert sig.charAt(pos.val) == '(';
524 pos.val++;
525
526 ret.args = new ArrayList<>();
527
528 while (sig.charAt(pos.val) != ')') {
529 ret.args.add(JavaTypeSignature.parse(sig, pos, env));
530 }
531
532 assert sig.charAt(pos.val) == ')';
533 pos.val++;
534
535 if (sig.charAt(pos.val) == 'V') {
536 pos.val++;
537 } else {
538 ret.result = JavaTypeSignature.parse(sig, pos, env);
539 }
540
541 if (pos.val < sig.length()) {
542 ret.throwsSignatures = new ArrayList<>();
543
544 do {
545 ret.throwsSignatures.add(ThrowsSignature.parse(sig, pos, env));
546 } while (pos.val < sig.length());
547 }
548
549 assert ret.toString().equals(sig);
550
551 return ret;
552 }
553
554 public List<TypeParameter> getTypeParameters() {
555 return typeParameters;

Callers 1

MethodInstanceMethod · 0.95

Calls 5

parseMethod · 0.95
parseMethod · 0.95
parseMethod · 0.95
toStringMethod · 0.95
equalsMethod · 0.45

Tested by

no test coverage detected