langtools/src/share/classes/com/sun/tools/javac/comp/Check.java
changeset 18412 d0e713f5cabd
parent 18395 d56a5fbf0b32
child 18413 5052b6314aad
equal deleted inserted replaced
18410:daf2e2653da5 18412:d0e713f5cabd
  2265             ((ClassType)c.type).supertype_field = types.createErrorType((ClassSymbol)st.tsym, Type.noType);
  2265             ((ClassType)c.type).supertype_field = types.createErrorType((ClassSymbol)st.tsym, Type.noType);
  2266         c.type = types.createErrorType(c, c.type);
  2266         c.type = types.createErrorType(c, c.type);
  2267         c.flags_field |= ACYCLIC;
  2267         c.flags_field |= ACYCLIC;
  2268     }
  2268     }
  2269 
  2269 
       
  2270     /**
       
  2271      * Check that functional interface methods would make sense when seen
       
  2272      * from the perspective of the implementing class
       
  2273      */
       
  2274     void checkFunctionalInterface(JCTree tree, Type funcInterface) {
       
  2275         ClassType c = new ClassType(Type.noType, List.<Type>nil(), null);
       
  2276         ClassSymbol csym = new ClassSymbol(0, names.empty, c, syms.noSymbol);
       
  2277         c.interfaces_field = List.of(types.removeWildcards(funcInterface));
       
  2278         c.supertype_field = syms.objectType;
       
  2279         c.tsym = csym;
       
  2280         csym.members_field = new Scope(csym);
       
  2281         Symbol descSym = types.findDescriptorSymbol(funcInterface.tsym);
       
  2282         Type descType = types.findDescriptorType(funcInterface);
       
  2283         csym.members_field.enter(new MethodSymbol(PUBLIC, descSym.name, descType, csym));
       
  2284         csym.completer = null;
       
  2285         checkImplementations(tree, csym, csym);
       
  2286     }
       
  2287 
  2270     /** Check that all methods which implement some
  2288     /** Check that all methods which implement some
  2271      *  method conform to the method they implement.
  2289      *  method conform to the method they implement.
  2272      *  @param tree         The class definition whose members are checked.
  2290      *  @param tree         The class definition whose members are checked.
  2273      */
  2291      */
  2274     void checkImplementations(JCClassDecl tree) {
  2292     void checkImplementations(JCClassDecl tree) {