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(); } }
@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)); } }