< prev index next >

src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symtab.java

Print this page
rev 58568 : [mq]: hidden-class-4


  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);


< prev index next >