1473 * already been added to C and its superclasses.
1474 */
1475 class ScanNested extends TreeScanner {
1476 Set<Env<AttrContext>> dependencies = new LinkedHashSet<>();
1477 protected boolean hasLambdas;
1478 @Override
1479 public void visitClassDef(JCClassDecl node) {
1480 Type st = types.supertype(node.sym.type);
1481 boolean envForSuperTypeFound = false;
1482 while (!envForSuperTypeFound && st.hasTag(CLASS)) {
1483 ClassSymbol c = st.tsym.outermostClass();
1484 Env<AttrContext> stEnv = enter.getEnv(c);
1485 if (stEnv != null && env != stEnv) {
1486 if (dependencies.add(stEnv)) {
1487 boolean prevHasLambdas = hasLambdas;
1488 try {
1489 scan(stEnv.tree);
1490 } finally {
1491 /*
1492 * ignore any updates to hasLambdas made during
1493 * the nested scan, this ensures an initalized
1494 * LambdaToMethod is available only to those
1495 * classes that contain lambdas
1496 */
1497 hasLambdas = prevHasLambdas;
1498 }
1499 }
1500 envForSuperTypeFound = true;
1501 }
1502 st = types.supertype(st);
1503 }
1504 super.visitClassDef(node);
1505 }
1506 @Override
1507 public void visitLambda(JCLambda tree) {
1508 hasLambdas = true;
1509 super.visitLambda(tree);
1510 }
1511 @Override
1512 public void visitReference(JCMemberReference tree) {
1513 hasLambdas = true;
|
1473 * already been added to C and its superclasses.
1474 */
1475 class ScanNested extends TreeScanner {
1476 Set<Env<AttrContext>> dependencies = new LinkedHashSet<>();
1477 protected boolean hasLambdas;
1478 @Override
1479 public void visitClassDef(JCClassDecl node) {
1480 Type st = types.supertype(node.sym.type);
1481 boolean envForSuperTypeFound = false;
1482 while (!envForSuperTypeFound && st.hasTag(CLASS)) {
1483 ClassSymbol c = st.tsym.outermostClass();
1484 Env<AttrContext> stEnv = enter.getEnv(c);
1485 if (stEnv != null && env != stEnv) {
1486 if (dependencies.add(stEnv)) {
1487 boolean prevHasLambdas = hasLambdas;
1488 try {
1489 scan(stEnv.tree);
1490 } finally {
1491 /*
1492 * ignore any updates to hasLambdas made during
1493 * the nested scan, this ensures an initialized
1494 * LambdaToMethod is available only to those
1495 * classes that contain lambdas
1496 */
1497 hasLambdas = prevHasLambdas;
1498 }
1499 }
1500 envForSuperTypeFound = true;
1501 }
1502 st = types.supertype(st);
1503 }
1504 super.visitClassDef(node);
1505 }
1506 @Override
1507 public void visitLambda(JCLambda tree) {
1508 hasLambdas = true;
1509 super.visitLambda(tree);
1510 }
1511 @Override
1512 public void visitReference(JCMemberReference tree) {
1513 hasLambdas = true;
|