src/com/google/javascript/rhino/jstype/FunctionType.java
// the super type: see testInterfaceExtendsLoop in TypeCheckTest.java
the super type: see testInterfaceExtendsLoop in TypeCheckTest.java
the super type : see testInterfaceExtendsLoop in TypeCheckTest . java
private static void updatePropertyTypeMap(
      FunctionType type, Map<String, JSType> propTypeMap, HashSet<FunctionType> cache) {
    if (type == null) {
      return;
    }
    ObjectType prototype = type.getPrototype();
    if (prototype != null) {
      Set<String> propNames = prototype.getOwnPropertyNames();
      for (String name : propNames) {
        if (!propTypeMap.containsKey(name)) {
          JSType propType = prototype.getPropertyType(name);
          propTypeMap.put(name, propType);
        }
      }
    }
    Iterable<ObjectType> iterable = type.getExtendedInterfaces();
    if (iterable != null) {
      for (ObjectType interfaceType : iterable) {
        FunctionType superConstructor = interfaceType.getConstructor();
        if (superConstructor == null || cache.contains(superConstructor)) {
          continue;
        }
        cache.add(superConstructor);
        updatePropertyTypeMap(superConstructor, propTypeMap, cache);
        cache.remove(superConstructor);
      }
    }
  }
private static void updatePropertyTypeMap ( FunctionType type , Map < String , JSType > propTypeMap , HashSet < FunctionType > cache ) { if ( type == null ) { return ; } ObjectType prototype = type . getPrototype ( ) ; if ( prototype != null ) { Set < String > propNames = prototype . getOwnPropertyNames ( ) ; for ( String name : propNames ) { if ( ! propTypeMap . containsKey ( name ) ) { JSType propType = prototype . getPropertyType ( name ) ; propTypeMap . put ( name , propType ) ; } } } Iterable < ObjectType > iterable = type . getExtendedInterfaces ( ) ; if ( iterable != null ) { for ( ObjectType interfaceType : iterable ) { FunctionType superConstructor = interfaceType . getConstructor ( ) ; if ( superConstructor == null || cache . contains ( superConstructor ) ) { continue ; } cache . add ( superConstructor ) ; updatePropertyTypeMap ( superConstructor , propTypeMap , cache ) ; cache . remove ( superConstructor ) ; } } }
the super type: see testInterfaceExtendsLoop in TypeCheckTest.java
the super type : see testInterfaceExtendsLoop in TypeCheckTest . java
// retrieve all property types on the prototype of this class // retrieve all property types from its super class