< prev index next >

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

Print this page

 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 
< prev index next >