private void addImplicitOuterParamType(IType owningType, List<IRType> paramTypes) {
   // Outer 'this'
   if (AbstractElementTransformer.isNonStaticInnerClass(owningType)) {
     paramTypes.add(
         IRTypeResolver.getDescriptor(
             AbstractElementTransformer.getRuntimeEnclosingType(owningType)));
   }
 }
 private void addTypeVarsFromEnclosingFunctions(
     IGosuClassInternal gsClass, List<IRType> parameters) {
   while (gsClass.isAnonymous()) {
     IDynamicFunctionSymbol dfs = AbstractElementTransformer.getEnclosingDFS(gsClass);
     if (dfs == null) {
       break;
     }
     addTypeVariableParameters(
         parameters, AbstractElementTransformer.getTypeVarsForDFS(dfs).size());
     gsClass = (IGosuClassInternal) dfs.getGosuClass();
   }
 }
Пример #3
0
 @Override
 public void dumpAllClasses() {
   // We also need to clear out anything added to some static map of random stuff due
   // to the compilation of the now-orphaned classes.  Side-note:  this doesn't need to
   // be an instance method, since it's calling static helpers, but it's an instance
   // method at the moment so it can appear on IGosuClassLoader and make it through
   // the wall and be usable from gosu-core-api
   AbstractElementTransformer.clearCustomRuntimes();
 }
  private void addImplicitCapturedSymbolParamTypes(IType owningType, List<IRType> paramTypes) {
    // Captured symbols
    // Don't attempt to get captured symbols if the type isn't valid; it'll just throw and result in
    // a cascading break
    if (owningType instanceof IGosuClassInternal
        && owningType.isValid()) // && ((IGosuClassInternal)type).isAnonymous() )
    {
      Map<String, ICapturedSymbol> capturedSymbols =
          ((IGosuClassInternal) owningType).getCapturedSymbols();
      if (capturedSymbols != null) {
        for (ICapturedSymbol sym : capturedSymbols.values()) {
          paramTypes.add(IRTypeResolver.getDescriptor(sym.getType().getArrayType()));
        }
      }
    }

    // The external symbols are always treated as captured
    if (AbstractElementTransformer.requiresExternalSymbolCapture(owningType)) {
      paramTypes.add(IRTypeResolver.getDescriptor(IExternalSymbolMap.class));
    }
  }