コード例 #1
0
  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));
    }
  }