langtools/src/share/classes/com/sun/tools/classfile/Signature.java
changeset 22163 3651128c74eb
parent 9303 eae35c201e19
equal deleted inserted replaced
22162:3b3e23e67329 22163:3651128c74eb
    94             Type returnType = parseTypeSignature();
    94             Type returnType = parseTypeSignature();
    95             List<Type> throwsTypes = null;
    95             List<Type> throwsTypes = null;
    96             while (sigp < sig.length() && sig.charAt(sigp) == '^') {
    96             while (sigp < sig.length() && sig.charAt(sigp) == '^') {
    97                 sigp++;
    97                 sigp++;
    98                 if (throwsTypes == null)
    98                 if (throwsTypes == null)
    99                     throwsTypes = new ArrayList<Type>();
    99                     throwsTypes = new ArrayList<>();
   100                 throwsTypes.add(parseTypeSignature());
   100                 throwsTypes.add(parseTypeSignature());
   101             }
   101             }
   102             return new MethodType(typeParamTypes, paramTypes, returnType, throwsTypes);
   102             return new MethodType(typeParamTypes, paramTypes, returnType, throwsTypes);
   103         } else {
   103         } else {
   104             Type t = parseTypeSignature();
   104             Type t = parseTypeSignature();
   106                 return t;
   106                 return t;
   107             Type superclass = t;
   107             Type superclass = t;
   108             List<Type> superinterfaces = null;
   108             List<Type> superinterfaces = null;
   109             while (sigp < sig.length()) {
   109             while (sigp < sig.length()) {
   110                 if (superinterfaces == null)
   110                 if (superinterfaces == null)
   111                     superinterfaces = new ArrayList<Type>();
   111                     superinterfaces = new ArrayList<>();
   112                 superinterfaces.add(parseTypeSignature());
   112                 superinterfaces.add(parseTypeSignature());
   113             }
   113             }
   114             return new ClassSigType(typeParamTypes, superclass, superinterfaces);
   114             return new ClassSigType(typeParamTypes, superclass, superinterfaces);
   115 
   115 
   116         }
   116         }
   181         }
   181         }
   182     }
   182     }
   183 
   183 
   184     private List<Type> parseTypeSignatures(char term) {
   184     private List<Type> parseTypeSignatures(char term) {
   185         sigp++;
   185         sigp++;
   186         List<Type> types = new ArrayList<Type>();
   186         List<Type> types = new ArrayList<>();
   187         while (sig.charAt(sigp) != term)
   187         while (sig.charAt(sigp) != term)
   188             types.add(parseTypeSignature());
   188             types.add(parseTypeSignature());
   189         sigp++;
   189         sigp++;
   190         return types;
   190         return types;
   191     }
   191     }
   227     }
   227     }
   228 
   228 
   229     private List<TypeParamType> parseTypeParamTypes() {
   229     private List<TypeParamType> parseTypeParamTypes() {
   230         assert sig.charAt(sigp) == '<';
   230         assert sig.charAt(sigp) == '<';
   231         sigp++;
   231         sigp++;
   232         List<TypeParamType> types = new ArrayList<TypeParamType>();
   232         List<TypeParamType> types = new ArrayList<>();
   233         while (sig.charAt(sigp) != '>')
   233         while (sig.charAt(sigp) != '>')
   234             types.add(parseTypeParamType());
   234             types.add(parseTypeParamType());
   235         sigp++;
   235         sigp++;
   236         return types;
   236         return types;
   237     }
   237     }
   245         if (sig.charAt(sigp) != ':')
   245         if (sig.charAt(sigp) != ':')
   246             classBound = parseTypeSignature();
   246             classBound = parseTypeSignature();
   247         while (sig.charAt(sigp) == ':') {
   247         while (sig.charAt(sigp) == ':') {
   248             sigp++;
   248             sigp++;
   249             if (interfaceBounds == null)
   249             if (interfaceBounds == null)
   250                 interfaceBounds = new ArrayList<Type>();
   250                 interfaceBounds = new ArrayList<>();
   251             interfaceBounds.add(parseTypeSignature());
   251             interfaceBounds.add(parseTypeSignature());
   252         }
   252         }
   253         return new TypeParamType(name, classBound, interfaceBounds);
   253         return new TypeParamType(name, classBound, interfaceBounds);
   254     }
   254     }
   255 
   255