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.Type.UnknownType;
55 import com.sun.tools.javac.code.Types.UniqueType;
56 import com.sun.tools.javac.comp.Modules;
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
68 import static com.sun.tools.javac.code.Flags.*;
69 import static com.sun.tools.javac.code.Kinds.Kind.*;
70 import static com.sun.tools.javac.code.TypeTag.*;
71
72 /** A class that defines all predefined constants and operators
73 * as well as special classes such as java.lang.Object, which need
74 * to be known to the compiler. All symbols are held in instance
75 * fields. This makes it possible to work in multiple concurrent
76 * projects, which might use different class files for library classes.
372 type.supertype_field = annotationType;
373 type.interfaces_field = List.nil();
374 return type;
375 }
376
377 /** Constructor; enters all predefined identifiers and operators
378 * into symbol table.
379 */
380 protected Symtab(Context context) throws CompletionFailure {
381 context.put(symtabKey, this);
382
383 names = Names.instance(context);
384
385 // Create the unknown type
386 unknownType = new UnknownType();
387
388 messages = JavacMessages.instance(context);
389
390 MissingInfoHandler missingInfoHandler = MissingInfoHandler.instance(context);
391
392 rootPackage = new RootPackageSymbol(names.empty, null, missingInfoHandler);
393
394 // create the basic builtin symbols
395 unnamedModule = new ModuleSymbol(names.empty, null) {
396 {
397 directives = List.nil();
398 exports = List.nil();
399 provides = List.nil();
400 uses = List.nil();
401 ModuleSymbol java_base = enterModule(names.java_base);
402 com.sun.tools.javac.code.Directive.RequiresDirective d =
403 new com.sun.tools.javac.code.Directive.RequiresDirective(java_base,
404 EnumSet.of(com.sun.tools.javac.code.Directive.RequiresFlag.MANDATED));
405 requires = List.of(d);
406 }
407 @Override
408 public String toString() {
409 return messages.getLocalizedString("compiler.misc.unnamed.module");
410 }
411 };
412 addRootPackageFor(unnamedModule);
|
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.Type.UnknownType;
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
69 import static com.sun.tools.javac.code.Flags.*;
70 import static com.sun.tools.javac.code.Kinds.Kind.*;
71 import static com.sun.tools.javac.code.TypeTag.*;
72
73 /** A class that defines all predefined constants and operators
74 * as well as special classes such as java.lang.Object, which need
75 * to be known to the compiler. All symbols are held in instance
76 * fields. This makes it possible to work in multiple concurrent
77 * projects, which might use different class files for library classes.
373 type.supertype_field = annotationType;
374 type.interfaces_field = List.nil();
375 return type;
376 }
377
378 /** Constructor; enters all predefined identifiers and operators
379 * into symbol table.
380 */
381 protected Symtab(Context context) throws CompletionFailure {
382 context.put(symtabKey, this);
383
384 names = Names.instance(context);
385
386 // Create the unknown type
387 unknownType = new UnknownType();
388
389 messages = JavacMessages.instance(context);
390
391 MissingInfoHandler missingInfoHandler = MissingInfoHandler.instance(context);
392
393 Target target = Target.instance(context);
394 rootPackage = new RootPackageSymbol(names.empty, null,
395 missingInfoHandler,
396 target.runtimeUseNestAccess());
397
398 // create the basic builtin symbols
399 unnamedModule = new ModuleSymbol(names.empty, null) {
400 {
401 directives = List.nil();
402 exports = List.nil();
403 provides = List.nil();
404 uses = List.nil();
405 ModuleSymbol java_base = enterModule(names.java_base);
406 com.sun.tools.javac.code.Directive.RequiresDirective d =
407 new com.sun.tools.javac.code.Directive.RequiresDirective(java_base,
408 EnumSet.of(com.sun.tools.javac.code.Directive.RequiresFlag.MANDATED));
409 requires = List.of(d);
410 }
411 @Override
412 public String toString() {
413 return messages.getLocalizedString("compiler.misc.unnamed.module");
414 }
415 };
416 addRootPackageFor(unnamedModule);
|