langtools/src/share/classes/com/sun/tools/javac/comp/MemberEnter.java
changeset 6352 217d5a69681a
parent 5857 84d4886d48aa
child 6592 dc56420a69bc
equal deleted inserted replaced
6351:84c44db80d06 6352:217d5a69681a
  1077         }
  1077         }
  1078     }
  1078     }
  1079 
  1079 
  1080 
  1080 
  1081     private Env<AttrContext> baseEnv(JCClassDecl tree, Env<AttrContext> env) {
  1081     private Env<AttrContext> baseEnv(JCClassDecl tree, Env<AttrContext> env) {
  1082         Scope typaramScope = new Scope(tree.sym);
  1082         Scope baseScope = new Scope(tree.sym);
       
  1083         //import already entered local classes into base scope
       
  1084         for (Scope.Entry e = env.outer.info.scope.elems ; e != null ; e = e.sibling) {
       
  1085             if (e.sym.isLocal()) {
       
  1086                 baseScope.enter(e.sym);
       
  1087             }
       
  1088         }
       
  1089         //import current type-parameters into base scope
  1083         if (tree.typarams != null)
  1090         if (tree.typarams != null)
  1084             for (List<JCTypeParameter> typarams = tree.typarams;
  1091             for (List<JCTypeParameter> typarams = tree.typarams;
  1085                  typarams.nonEmpty();
  1092                  typarams.nonEmpty();
  1086                  typarams = typarams.tail)
  1093                  typarams = typarams.tail)
  1087                 typaramScope.enter(typarams.head.type.tsym);
  1094                 baseScope.enter(typarams.head.type.tsym);
  1088         Env<AttrContext> outer = env.outer; // the base clause can't see members of this class
  1095         Env<AttrContext> outer = env.outer; // the base clause can't see members of this class
  1089         Env<AttrContext> localEnv = outer.dup(tree, outer.info.dup(typaramScope));
  1096         Env<AttrContext> localEnv = outer.dup(tree, outer.info.dup(baseScope));
  1090         localEnv.baseClause = true;
  1097         localEnv.baseClause = true;
  1091         localEnv.outer = outer;
  1098         localEnv.outer = outer;
  1092         localEnv.info.isSelfCall = false;
  1099         localEnv.info.isSelfCall = false;
  1093         return localEnv;
  1100         return localEnv;
  1094     }
  1101     }