28 import java.util.Collection;
29 import java.util.Collections;
30 import java.util.EnumSet;
31 import java.util.HashMap;
32 import java.util.LinkedHashMap;
33 import java.util.Map;
34
35 import javax.lang.model.element.ElementVisitor;
36
37 import com.sun.tools.javac.code.Scope.WriteableScope;
38 import com.sun.tools.javac.code.Source.Feature;
39 import com.sun.tools.javac.code.Symbol.ClassSymbol;
40 import com.sun.tools.javac.code.Symbol.Completer;
41 import com.sun.tools.javac.code.Symbol.CompletionFailure;
42 import com.sun.tools.javac.code.Symbol.MethodSymbol;
43 import com.sun.tools.javac.code.Symbol.ModuleSymbol;
44 import com.sun.tools.javac.code.Symbol.PackageSymbol;
45 import com.sun.tools.javac.code.Symbol.RootPackageSymbol;
46 import com.sun.tools.javac.code.Symbol.TypeSymbol;
47 import com.sun.tools.javac.code.Symbol.VarSymbol;
48 import com.sun.tools.javac.code.Type.BottomType;
49 import com.sun.tools.javac.code.Type.ClassType;
50 import com.sun.tools.javac.code.Type.ErrorType;
51 import com.sun.tools.javac.code.Type.JCPrimitiveType;
52 import com.sun.tools.javac.code.Type.JCVoidType;
53 import com.sun.tools.javac.code.Type.MethodType;
54 import com.sun.tools.javac.code.Types.UniqueType;
55 import com.sun.tools.javac.comp.Modules;
56 import com.sun.tools.javac.jvm.Target;
57 import com.sun.tools.javac.util.Assert;
58 import com.sun.tools.javac.util.Context;
59 import com.sun.tools.javac.util.Convert;
60 import com.sun.tools.javac.util.DefinedBy;
61 import com.sun.tools.javac.util.DefinedBy.Api;
62 import com.sun.tools.javac.util.Iterators;
63 import com.sun.tools.javac.util.JavacMessages;
64 import com.sun.tools.javac.util.List;
65 import com.sun.tools.javac.util.Name;
66 import com.sun.tools.javac.util.Names;
67
309 new ClassSymbol(
310 PUBLIC, names.fromString(name), type, rootPackage));
311 }
312
313 public void initType(Type type, String name, String bname) {
314 initType(type, name);
315 boxedName[type.getTag().ordinal()] = names.fromString("java.lang." + bname);
316 }
317
318 /** The class symbol that owns all predefined symbols.
319 */
320 public final ClassSymbol predefClass;
321
322 /** Enter a class into symbol table.
323 * @param s The name of the class.
324 */
325 private Type enterClass(String s) {
326 return enterClass(java_base, names.fromString(s)).type;
327 }
328
329 public void synthesizeEmptyInterfaceIfMissing(final Type type) {
330 final Completer completer = type.tsym.completer;
331 type.tsym.completer = new Completer() {
332 @Override
333 public void complete(Symbol sym) throws CompletionFailure {
334 try {
335 completer.complete(sym);
336 } catch (CompletionFailure e) {
337 sym.flags_field |= (PUBLIC | INTERFACE);
338 ((ClassType) sym.type).supertype_field = objectType;
339 }
340 }
341
342 @Override
343 public boolean isTerminal() {
344 return completer.isTerminal();
345 }
346 };
347 }
348
|
28 import java.util.Collection;
29 import java.util.Collections;
30 import java.util.EnumSet;
31 import java.util.HashMap;
32 import java.util.LinkedHashMap;
33 import java.util.Map;
34
35 import javax.lang.model.element.ElementVisitor;
36
37 import com.sun.tools.javac.code.Scope.WriteableScope;
38 import com.sun.tools.javac.code.Source.Feature;
39 import com.sun.tools.javac.code.Symbol.ClassSymbol;
40 import com.sun.tools.javac.code.Symbol.Completer;
41 import com.sun.tools.javac.code.Symbol.CompletionFailure;
42 import com.sun.tools.javac.code.Symbol.MethodSymbol;
43 import com.sun.tools.javac.code.Symbol.ModuleSymbol;
44 import com.sun.tools.javac.code.Symbol.PackageSymbol;
45 import com.sun.tools.javac.code.Symbol.RootPackageSymbol;
46 import com.sun.tools.javac.code.Symbol.TypeSymbol;
47 import com.sun.tools.javac.code.Symbol.VarSymbol;
48 import com.sun.tools.javac.code.Type.ArrayType;
49 import com.sun.tools.javac.code.Type.BottomType;
50 import com.sun.tools.javac.code.Type.ClassType;
51 import com.sun.tools.javac.code.Type.ErrorType;
52 import com.sun.tools.javac.code.Type.JCPrimitiveType;
53 import com.sun.tools.javac.code.Type.JCVoidType;
54 import com.sun.tools.javac.code.Type.MethodType;
55 import com.sun.tools.javac.code.Types.UniqueType;
56 import com.sun.tools.javac.comp.Modules;
57 import com.sun.tools.javac.jvm.Target;
58 import com.sun.tools.javac.util.Assert;
59 import com.sun.tools.javac.util.Context;
60 import com.sun.tools.javac.util.Convert;
61 import com.sun.tools.javac.util.DefinedBy;
62 import com.sun.tools.javac.util.DefinedBy.Api;
63 import com.sun.tools.javac.util.Iterators;
64 import com.sun.tools.javac.util.JavacMessages;
65 import com.sun.tools.javac.util.List;
66 import com.sun.tools.javac.util.Name;
67 import com.sun.tools.javac.util.Names;
68
310 new ClassSymbol(
311 PUBLIC, names.fromString(name), type, rootPackage));
312 }
313
314 public void initType(Type type, String name, String bname) {
315 initType(type, name);
316 boxedName[type.getTag().ordinal()] = names.fromString("java.lang." + bname);
317 }
318
319 /** The class symbol that owns all predefined symbols.
320 */
321 public final ClassSymbol predefClass;
322
323 /** Enter a class into symbol table.
324 * @param s The name of the class.
325 */
326 private Type enterClass(String s) {
327 return enterClass(java_base, names.fromString(s)).type;
328 }
329
330 /** Enter a class into symbol table.
331 * @param s The name of the class.
332 */
333 public Type enterClass(ModuleSymbol moduleSymbol, String s) {
334 try {
335 return enterClass(moduleSymbol, names.fromString(s)).type;
336 } catch (Throwable ex) {
337 ex.printStackTrace();
338 return Type.noType;
339 }
340 }
341
342 public void synthesizeEmptyInterfaceIfMissing(final Type type) {
343 final Completer completer = type.tsym.completer;
344 type.tsym.completer = new Completer() {
345 @Override
346 public void complete(Symbol sym) throws CompletionFailure {
347 try {
348 completer.complete(sym);
349 } catch (CompletionFailure e) {
350 sym.flags_field |= (PUBLIC | INTERFACE);
351 ((ClassType) sym.type).supertype_field = objectType;
352 }
353 }
354
355 @Override
356 public boolean isTerminal() {
357 return completer.isTerminal();
358 }
359 };
360 }
361
|