langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Enter.java
changeset 27224 228abfa87080
parent 25874 83c19f00452c
child 27857 7e913a535736
equal deleted inserted replaced
27130:41df50e7303d 27224:228abfa87080
    28 import java.util.*;
    28 import java.util.*;
    29 import javax.tools.JavaFileObject;
    29 import javax.tools.JavaFileObject;
    30 import javax.tools.JavaFileManager;
    30 import javax.tools.JavaFileManager;
    31 
    31 
    32 import com.sun.tools.javac.code.*;
    32 import com.sun.tools.javac.code.*;
       
    33 import com.sun.tools.javac.code.Kinds.KindSelector;
    33 import com.sun.tools.javac.code.Scope.*;
    34 import com.sun.tools.javac.code.Scope.*;
    34 import com.sun.tools.javac.code.Symbol.*;
    35 import com.sun.tools.javac.code.Symbol.*;
    35 import com.sun.tools.javac.code.Type.*;
    36 import com.sun.tools.javac.code.Type.*;
    36 import com.sun.tools.javac.jvm.*;
    37 import com.sun.tools.javac.jvm.*;
    37 import com.sun.tools.javac.main.Option.PkgInfo;
    38 import com.sun.tools.javac.main.Option.PkgInfo;
    41 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
    42 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
    42 import com.sun.tools.javac.util.List;
    43 import com.sun.tools.javac.util.List;
    43 
    44 
    44 
    45 
    45 import static com.sun.tools.javac.code.Flags.*;
    46 import static com.sun.tools.javac.code.Flags.*;
    46 import static com.sun.tools.javac.code.Kinds.*;
    47 import static com.sun.tools.javac.code.Kinds.Kind.*;
    47 
    48 
    48 /** This class enters symbols for all encountered definitions into
    49 /** This class enters symbols for all encountered definitions into
    49  *  the symbol table. The pass consists of two phases, organized as
    50  *  the symbol table. The pass consists of two phases, organized as
    50  *  follows:
    51  *  follows:
    51  *
    52  *
   400             // We are seeing a local or inner class.
   401             // We are seeing a local or inner class.
   401             // Set outer_field of this class to closest enclosing class
   402             // Set outer_field of this class to closest enclosing class
   402             // which contains this class in a non-static context
   403             // which contains this class in a non-static context
   403             // (its "enclosing instance class"), provided such a class exists.
   404             // (its "enclosing instance class"), provided such a class exists.
   404             Symbol owner1 = owner;
   405             Symbol owner1 = owner;
   405             while ((owner1.kind & (VAR | MTH)) != 0 &&
   406             while (owner1.kind.matches(KindSelector.VAL_MTH) &&
   406                    (owner1.flags_field & STATIC) == 0) {
   407                    (owner1.flags_field & STATIC) == 0) {
   407                 owner1 = owner1.owner;
   408                 owner1 = owner1.owner;
   408             }
   409             }
   409             if (owner1.kind == TYP) {
   410             if (owner1.kind == TYP) {
   410                 ct.setEnclosingType(owner1.type);
   411                 ct.setEnclosingType(owner1.type);