equal
deleted
inserted
replaced
240 */ |
240 */ |
241 private void init(Symtab syms, boolean definitive) { |
241 private void init(Symtab syms, boolean definitive) { |
242 if (classes != null) return; |
242 if (classes != null) return; |
243 |
243 |
244 if (definitive) { |
244 if (definitive) { |
245 assert packages == null || packages == syms.packages; |
245 Assert.check(packages == null || packages == syms.packages); |
246 packages = syms.packages; |
246 packages = syms.packages; |
247 assert classes == null || classes == syms.classes; |
247 Assert.check(classes == null || classes == syms.classes); |
248 classes = syms.classes; |
248 classes = syms.classes; |
249 } else { |
249 } else { |
250 packages = new HashMap<Name, PackageSymbol>(); |
250 packages = new HashMap<Name, PackageSymbol>(); |
251 classes = new HashMap<Name, ClassSymbol>(); |
251 classes = new HashMap<Name, ClassSymbol>(); |
252 } |
252 } |
528 */ |
528 */ |
529 Object readClassOrType(int i) { |
529 Object readClassOrType(int i) { |
530 int index = poolIdx[i]; |
530 int index = poolIdx[i]; |
531 int len = getChar(index + 1); |
531 int len = getChar(index + 1); |
532 int start = index + 3; |
532 int start = index + 3; |
533 assert buf[start] == '[' || buf[start + len - 1] != ';'; |
533 Assert.check(buf[start] == '[' || buf[start + len - 1] != ';'); |
534 // by the above assertion, the following test can be |
534 // by the above assertion, the following test can be |
535 // simplified to (buf[start] == '[') |
535 // simplified to (buf[start] == '[') |
536 return (buf[start] == '[' || buf[start + len - 1] == ';') |
536 return (buf[start] == '[' || buf[start + len - 1] == ';') |
537 ? (Object)sigToType(buf, start, len) |
537 ? (Object)sigToType(buf, start, len) |
538 : (Object)enterClass(names.fromUtf(internalize(buf, start, |
538 : (Object)enterClass(names.fromUtf(internalize(buf, start, |
1039 if (sym.kind == TYP) { |
1039 if (sym.kind == TYP) { |
1040 ClassSymbol c = (ClassSymbol) sym; |
1040 ClassSymbol c = (ClassSymbol) sym; |
1041 readingClassAttr = true; |
1041 readingClassAttr = true; |
1042 try { |
1042 try { |
1043 ClassType ct1 = (ClassType)c.type; |
1043 ClassType ct1 = (ClassType)c.type; |
1044 assert c == currentOwner; |
1044 Assert.check(c == currentOwner); |
1045 ct1.typarams_field = readTypeParams(nextChar()); |
1045 ct1.typarams_field = readTypeParams(nextChar()); |
1046 ct1.supertype_field = sigToType(); |
1046 ct1.supertype_field = sigToType(); |
1047 ListBuffer<Type> is = new ListBuffer<Type>(); |
1047 ListBuffer<Type> is = new ListBuffer<Type>(); |
1048 while (sigp != siglimit) is.append(sigToType()); |
1048 while (sigp != siglimit) is.append(sigToType()); |
1049 ct1.interfaces_field = is.toList(); |
1049 ct1.interfaces_field = is.toList(); |
1906 is = is.prepend(_inter); |
1906 is = is.prepend(_inter); |
1907 } |
1907 } |
1908 if (ct.interfaces_field == null) |
1908 if (ct.interfaces_field == null) |
1909 ct.interfaces_field = is.reverse(); |
1909 ct.interfaces_field = is.reverse(); |
1910 |
1910 |
1911 if (fieldCount != nextChar()) assert false; |
1911 Assert.check(fieldCount == nextChar()); |
1912 for (int i = 0; i < fieldCount; i++) enterMember(c, readField()); |
1912 for (int i = 0; i < fieldCount; i++) enterMember(c, readField()); |
1913 if (methodCount != nextChar()) assert false; |
1913 Assert.check(methodCount == nextChar()); |
1914 for (int i = 0; i < methodCount; i++) enterMember(c, readMethod()); |
1914 for (int i = 0; i < methodCount; i++) enterMember(c, readMethod()); |
1915 |
1915 |
1916 typevars = typevars.leave(); |
1916 typevars = typevars.leave(); |
1917 } |
1917 } |
1918 |
1918 |
2017 /** Define a new class given its name and owner. |
2017 /** Define a new class given its name and owner. |
2018 */ |
2018 */ |
2019 public ClassSymbol defineClass(Name name, Symbol owner) { |
2019 public ClassSymbol defineClass(Name name, Symbol owner) { |
2020 ClassSymbol c = new ClassSymbol(0, name, owner); |
2020 ClassSymbol c = new ClassSymbol(0, name, owner); |
2021 if (owner.kind == PCK) |
2021 if (owner.kind == PCK) |
2022 assert classes.get(c.flatname) == null : c; |
2022 Assert.checkNull(classes.get(c.flatname), c); |
2023 c.completer = this; |
2023 c.completer = this; |
2024 return c; |
2024 return c; |
2025 } |
2025 } |
2026 |
2026 |
2027 /** Create a new toplevel or member class symbol with given name |
2027 /** Create a new toplevel or member class symbol with given name |
2157 warnedAttrs.clear(); |
2157 warnedAttrs.clear(); |
2158 JavaFileObject classfile = c.classfile; |
2158 JavaFileObject classfile = c.classfile; |
2159 if (classfile != null) { |
2159 if (classfile != null) { |
2160 JavaFileObject previousClassFile = currentClassFile; |
2160 JavaFileObject previousClassFile = currentClassFile; |
2161 try { |
2161 try { |
2162 assert !filling : |
2162 if (filling) { |
2163 "Filling " + classfile.toUri() + |
2163 Assert.error("Filling " + classfile.toUri() + " during " + previousClassFile); |
2164 " during " + previousClassFile; |
2164 } |
2165 currentClassFile = classfile; |
2165 currentClassFile = classfile; |
2166 if (verbose) { |
2166 if (verbose) { |
2167 printVerbose("loading", currentClassFile.toString()); |
2167 printVerbose("loading", currentClassFile.toString()); |
2168 } |
2168 } |
2169 if (classfile.getKind() == JavaFileObject.Kind.CLASS) { |
2169 if (classfile.getKind() == JavaFileObject.Kind.CLASS) { |
2305 /** Make a package, given its fully qualified name. |
2305 /** Make a package, given its fully qualified name. |
2306 */ |
2306 */ |
2307 public PackageSymbol enterPackage(Name fullname) { |
2307 public PackageSymbol enterPackage(Name fullname) { |
2308 PackageSymbol p = packages.get(fullname); |
2308 PackageSymbol p = packages.get(fullname); |
2309 if (p == null) { |
2309 if (p == null) { |
2310 assert !fullname.isEmpty() : "rootPackage missing!"; |
2310 Assert.check(!fullname.isEmpty(), "rootPackage missing!"); |
2311 p = new PackageSymbol( |
2311 p = new PackageSymbol( |
2312 Convert.shortName(fullname), |
2312 Convert.shortName(fullname), |
2313 enterPackage(Convert.packagePart(fullname))); |
2313 enterPackage(Convert.packagePart(fullname))); |
2314 p.completer = this; |
2314 p.completer = this; |
2315 packages.put(fullname, p); |
2315 packages.put(fullname, p); |